C语言打字游戏
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
随机函数:
srand((unsigned)time(NULL));
以当前时间为准,设置随机种子
注意:此函数,在每次开始游戏后调用一次即可
ch = rand();
注意:rand()函数,每调用一次,产生随机种子
获得键值函数
ch = _getch();
无需按下回车,可直接获得键盘上按下的键值
时间函数
start_time = time(NULL);
时间开始
end_time = time(NULL);
时间结束
system("cls"); //清空屏幕
代码:
#include <stdio.h>
#include <time.h> // time(NULL) time_t
#include <stdlib.h> // srand((unsigned)time(NULL)) rand() system("cls");
#include <math.h>
#include <conio.h> // _getch()
void Help(void)
{
printf("**************************\n");
printf("*********打字游戏*********\n");
printf("****按任意字符开始游戏****\n");
printf("**输入完成后继续按空白键**\n");
printf("**输入完成后退出按ESC键***\n");
printf("**************************\n\n\n\n\n");
}
int main()
{
char ch;
char buf[51]="";
int count;
int i;
time_t start_time, end_time; //定义开始时间后结束时间
while (1)
{
system("cls"); //清屏函数
Help();
srand((unsigned)time(NULL)); //以当前时间为准,设置随机种子
ch = _getch(); //无需按下回车,可直接获得键盘上按下的键值
for (i = 0; i <= 50; i++) //获得50位随机字符
{
buf[i] = rand() % 26 + 'a'; //由于随机函数获得的是数字,所以要进行转换
}
buf[50] = '\0';
printf("%s\n",buf); //打出随机字符串
count = 0;
for (i = 0; i < 50; i++) //从键盘上输出50个字符
{
ch = _getch();
if (i == 0)
{
start_time = time(NULL); //i=0的时候开始计时 到end_time计时结束
}
if (buf[i] == ch) //字符随机产生的与键盘上输出的进行对比
{
count++; //获得正确的个数
printf("%c",ch); //输出正确的字符
}
else
{
printf("*"); //输出错误则为*
}
}
end_time = time(NULL); //结束时间
printf("\ncount=%d\n",count);
printf("用时时间:%ld秒\n",long int(end_time -start_time) ); //计算出输入完成时间
printf("正确率为:%d %c\n", count*100/50,'%'); //统计正确率
while (1) //继续游戏或退出游戏
{
ch = _getch();
if (ch == ' ') //空白键则继续
{
break;
}
if (ch == 27) //字符串中27为“Esc”退出
{
return 0;
}
}
}
return 0;
}
运行结果