论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

一个练习打字的游戏小编程

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:46:50

大家自己设三个或一个文本文件,内含1000个字符就行了,英文字母或其他字符都可以。谢谢指教!!主函数在下面!介绍一下自定义函数的功能吧。

自定义函数名称

函数功能

Background()

设置简单友好界面。

DEMO()

设置菜单供用户选择练习方式及退出。

Get_charater()

实现从用户指定文件随机抽取100个字符并显示在屏幕上供用户参照打字的功能

Typing()

程序的核心,实现了接受输入的字符、判定正误、计算练习成绩和时间等并显示在屏幕

         特点:而主函数则非常简单,只包含这四个要调用的函数。

          这四个函数功能单一,且每个函数不超过50行,较好地满足设计风格。

#include <stdio.h>

#include <graphics.h>

#include <conio.h>

#include <dos.h>

#include <time.h>

 

char string[101];

 

void Background()

{

   int driver=DETECT,mode;                          /*定义变量*/

   int x1=20,y1=20,r=10,num;

   int x2=20,y2=450;

   int color1=10,color2=10;          /*在此设置颜色,一改全改*/

   initgraph(&driver,&mode,"a:\\bgi ");    /*初始化图形模式*/

   setcolor(color1);                   /*步骤一、设置当前颜色用于绘图*/

   for(num=0;num<30;num++)

     {

       circle(x1,y1,r);              /*步骤二、使用当前颜色绘制一个闭合图形*/

       setfillstyle(num%12,color1);     /*步骤三、设置填充方式*/

       floodfill(x1,y1,color1);       /*步骤四、对闭合图形进行填充*/

       x1+=20;

       delay(100);

     }

   setcolor(color2);

   for(num=0;num<30;num++)

     {

       circle(x2,y2,r);

       setfillstyle(num%12,color2);

       floodfill(x2,y2,color2);

       x2+=20;

       delay(100);

     }

   setcolor(YELLOW);           /*改变当前颜色,输出友好话*/

   settextstyle(0,0,2);

   outtextxy(50,150,"WELCOME TO THE TYPING WORLD!");

   setcolor(LIGHTMAGENTA);

   outtextxy(200,350,"DESIGED BY HE ZHANG HONG");

   sleep(3);                         /*延时二秒观看结果*/

   closegraph();                        /*关闭图形*/

}

 

 

void DEMO()                              /*设置菜单函数*/

{

 

      printf("_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_**_*\n”

 

        

         "\t\t\t"    

             "THE DEMO DISPLAY FOR THE FILE SYSTEM\n"

         "\n"

         "\t\t"

                        "1:PRATICE ONLY ENGLISH Characters.\n"

         "\t\t"

                        "2:PRATICE OTHER Charcters.\n"

         "\t\t"

                        "3:PRATICE ALL Charcters.\n"

         "\t\t"

                        "4:QUIT AT ONCE!\n"

      "\n");

}

 

 

void Get_character(void)                                 /*设置得到字符函数*/

{

   void Typing();                                        /*声明typing()函数*/

   FILE *in;

   int i,t,choice;

   char ch;

   t=abs(time(0))%700;                                   /*获取随机数来指定下面指针的位*/      

   printf("\nPLEASE ENTER YOUR CHOICE:");

      choice=getch();

   clrscr();                                     /*清屏*/

   switch(choice)                              /*选择不同打开文件来打不同的字符*/

    {

      case '1': in=fopen("english.txt","r");

              break;

      case '2': in=fopen("others.txt","r");

              break;

      case '3': in=fopen("type all.txt","r");

              break;

      case '4': exit(1);break;

    }

   fseek(in,t*1l,0);

      fgets(string,101,in);

   printf("\n");

   printf("********************************************************************");

   for(i=0;i<100;i++)

     putchar(string[i]);

   printf("\n");

   printf("********************************************************************");

   fclose(in);

   printf("LET'S BEGIN TYPING,OK?[Y/N]");

   printf("\n");

   ch=getch();

   if(ch=='n'||ch=='N')             /*判定是否练习打字*/

      exit(0);                    

   else if(ch=='y'||ch=='Y')

          Typing();

}

 

 

void Typing(void)                               /*设置打字(包括计算其他结果)函数*/

{

   int i,j,Right_char=0,Wrong_char=0,Sum_char=0;

   float Speed,Timeused,Right_rate;

   char absorb_char,ch_1,ch_2,ch_3;

   time_t star,stop;                              /*定义time变量,获取系统时间并显示在屏幕上*/

   time(&star);

   printf("\n");

   printf("time begin:%s",ctime(&star));

   i=0;

   absorb_char=getchar();             /*接受键盘输入的字符并在下面的while语句判定正                错和计算结果*/

   while(absorb_char!='\n'&&i<100)

     {

       if(absorb_char==string[i])

            {

               Right_char++;

               Sum_char++;

            }

       else

            {

              Wrong_char++;

              Sum_char++;

            }

       i++;

       absorb_char=getchar();

     }

   time(&stop);

   Timeused=difftime(stop,star);        /*利用difftime()函数输出所用时间*/

   Right_rate=(float)Right_char/(float)Sum_char*100;

   Speed=(Sum_char/Timeused)*60;

   printf("time end:%s",ctime(&stop));                     /*下面显示分数*/

   printf("****#################~~~~~~~~~~~~~YOUR SCORE!!~~~~~~~~~~~~~~################****");

   printf("    1: TOTAL TIME USED:%.3f\n",Timeused);

   printf("    2: YOU HAVE TYPED:%d\n",Sum_char);

   printf("    3: Typing Right_Characters are:%d\n",Right_char);

   printf("    4: Typing Wrong_Characters are:%d\n",Wrong_char);

   printf("    5: YOUR TYPING SPEED IS :%.2f\\min\n",Speed);

   printf("    6: YOUR TYPING RIGHT_RATE IS :%.2f%%\n",Right_rate);

   printf("****#################~~~~~~~~~~~~~YOUR SCORE!!~~~~~~~~~~~~~~################****");

   if(Speed<=50||Right_rate<=80)           /*询问用户是否重来一遍*/

{

 printf("    NOT VERY GOOD!\n    TRY IT AGAIN,OK?[Y/N]\n");

         ch_2=getch();

         if(ch_2=='n'||ch_2=='N') exit(0);

         else if(ch_2=='y'||ch_2=='Y')

                   {

                        clrscr();

                        DEMO();                    /*分别调用函数重来一遍*/

                        Get_character();

                        Typing();

                  }

               exit(0);

         }

  else printf("    WELL DONE!!\n    ONE MORE TIME?[Y/N]\n");    /*询问用户是否重来一遍*/

        ch_3=getch();

        if(ch_3=='n'||ch_3=='N') exit(0);

        else if(ch_3=='y'||ch_3=='Y')

                  {

                     clrscr();

                     DEMO();                       /*分别调用函数重来一遍*/

                     Get_character();

                     Typing();

                  }

              exit(0);

}

 

  main(void)                                       /*主函数包含四个要调用的函数*/

{

 Background();

    DEMO();

    Get_character();

    Typing();

}

上一篇:{应用}骑士旅行之迷宫算法 人气:6638
下一篇:{应用}2人五子棋游戏(1) 人气:6767
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程