Advertisement

C语言小游戏(一)——盲打小游戏(低配版)

阅读量:
一、设计思路

此游戏主要设计两个关键内容:生成随机字母、比对键入的字母是否正确。大致思路是:先生成并输出一个随机字符数组,再通过循环,依次键入字母比对是否一致,如一致则继续(continue),如错误,则输出Error并跳出此循环(break)。

二、核心知识:随机数

1、rand() 头文件: #include<stdlib.h> time() 头文件: #include<time.h>
2、设置随机种子srand(time(NULL));
3、随机数 rand()%(max-min+1)+min;
4、强制将随机数转换为字符型(注:括号的位置需要注意)
eg.*(p+i)=(char)(rand()%26+97);

三、程序代码
复制代码
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    void GetRand(char *p);
    int Compare(char a,char b);
    int main()
    {
     int i,ret;
     char m[10],n[10];   /*m为随机字母,n为键入字母*/
     m[10]=0;
     GetRand(m);          /*得到随机字母的数组*/
     for(i=0;i<10;i++)
     {
      printf("%c ",m[i]);  /*输出随机字母*/
     }
     putchar('\n');
     for(i=0;i<10;i++)
     {
      scanf("%c",&n[i]);
      getchar();
      ret=Compare(m[i],n[i]);
      if(ret==0&&i<9)
      continue;
      else if(ret==0&&i==9)
      {
       printf("Nice\n");
       continue;
      }       
      else if(ret==1)        
      {
       printf("Error\n");
       break;               
      }                         /*错误离开此循环*/
     }
     system("pause");           /*使VC++生成的.exe文件暂停最后结果*/
     return 0;
    }
    /*获取随机字母数组*/
    void GetRand(char *p)
    {
     int i;
     srand(time(NULL));  /*设置随机种子*/
     for(i=0;i<10;i++)
     {
      *(p+i)=(char)(rand()%26+97);     /*获取ASCII为97到122的随机数,强转为字符型*/
     }
    }
    /*比较字母是否相同*/
    int Compare(char a,char b)
    {
     if(a==b)
      return 0;
     else
      return 1;
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
四、运行结果

在这里插入图片描述在这里插入图片描述

五、程序缺陷

1、每敲一个字母都需要按一次回车,如果按空格键则只能在全部字母输入完后才输出正误结果。
2、游戏无法再来一局,虽说编程时有寻思,但后来一懒就没设置。下次用do-while语句试下进行多局游戏的设置。
3、未进行缓冲区的字母超出数组时的判断,虽说后面的字母并不影响程序,但感觉起来还是蛮别扭的。
4、界面美化什么的都是浮云啦~菜鸡一只,根据大一上的C语言课的内容设计的盲打小游戏,简陋的令人窒息……
5、等等,一时想不到太多嘞。往后学吧,会进步的!

全部评论 (0)

还没有任何评论哟~