游戏规则:
按下任意键开始游戏,出现一行字符串,正确则打印出来,错误则打印下划线“_”提示,结束后显示正确率和所用时间,按下esc或空格键游戏结束。
1、打印游戏规则 //printf
2、按下任意键开始游戏 //调用函数
3、生成随机字符串
生成随机数; //rand()
生成的随机数在0~25; //%,for
//linux下的网络编译错误:只允许在C99模式下使用‘for’循环初始化声明
//解决办法在后面加 -std=c99,例gcc 1.c -o haha -std=c99
再转变成字母a~z;
放进数组里。
4、按照对应的随机字符串进行输入
按下第一个字符时,开始计时 //time()
获取键盘的输入 //scanf
取出数组对应的字符,判断是否正确,正确打印出来,并加加用来计算正确率,错误打印下划线 //for,if...else,printf
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
char mygetch()
{
struct termios oldt,newt;
char ch;
tcgetattr(STDIN_FILENO,&oldt);
newt=oldt;
newt.c_lflag&=~(ICANON|ECHO);
tcsetattr(STDIN_FILENO,TCSANOW,&newt);
ch=getchar();
tcsetattr(STDIN_FILENO,TCSANOW,&oldt);
return ch;
}
int main()
{
printf("按下任意键开始游戏\n");
printf("正确则打印出来,错误则打印下划线“_”提示\n");
printf("结束后,显示正确率和所用时间\n");
printf("按下esc键游戏结束\n");
while(mygetch())
{
char haha[21]="";
int i=0;
srand(time(NULL));
for(i=0;i<20;i++)
{
int a=rand();
int b=a%26;
haha[i]=b+'a';
}
printf("%s\n",haha);
int k=0;
int s_time=0,e_time=0;
if(mygetch()!=27)
{
for(i=0;i<20;i++)
{
char ch=mygetch();
if(ch==haha[i])
{
printf("%c",ch);
k++;
}
else
{
printf("_");
}
if(i==0)
{
s_time=time(NULL);
}
}
}
else
{
break;
}
e_time=time(NULL);
printf("\n游戏结束\n");
printf("正确了%d个\n",k);
printf("用时%d秒\n",e_time-s_time);
if(mygetch()==27)
{
break;
}
}
return 0;
}