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)
还没有任何评论哟~
