#include<stdio.h>
#include <math.h>
#include<time.h>
#include <windows.h>
extern void hint();
extern void creat_letters();
int main() {
hint();
printf("\n");
char ch = getch();
creat_letters();
printf("\n");
return 0;
}
//游戏开始前的提示
void hint()
{
printf("*****************************************\n");
printf("* 输入过程中无法退出! *\n");
printf("* 请按所给字母敲击键盘! *\n");
printf("* 按任意键开始测试,按下首字母时开始计时! *\n");
printf("* 输入出错则以 _ 表示 *\n");
printf("*****************************************\n");
}
//生成一个英文字母字符串
void creat_letters()
{
int i;
char str[30];
srand((unsigned int)time(NULL));
//生成一个英文字母字符组
for (i = 0; i < 30; i++)
{
str[i] = rand() % 26 + 'a';
printf("%c", str[i]);
}
printf("\n");
while (1) {
int count = 0;
int start_time = 0;
int end_time = 0;
//开始打字
for (i = 0; i < 30; i++)
{
char ch = getch();
if (ch == str[i])
{
printf("%c", ch);
count++;
}
else
{
printf("_");
}
//开始和结束的时间
if (i == 0)
start_time = time(NULL);
if (i == 29)
end_time = time(NULL);
}
printf("\n");
printf("总共耗时为%d秒\n", end_time - start_time);
printf("准确率为:%.2f%%\n", count*1.0 / 30 * 100);
printf("\n");
printf("*****************按任意键继续打字,按ESC键退出****************\n");
printf("\n");
char ch = getch();
if (ch == 27)//Esc的ASCII为27 ,退出游戏
{
break;
}
Sleep(60);
creat_letters();//重新开始游戏
break;
}
}
结果: