作者介绍
张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。
研究方向:机器视觉与人工智能。
电子邮件:2430290933@qq.com
- 课题组CSDN官方账号,欢迎一键三连: https://blog.csdn.net/m0_37758063/article/details/113527955?spm=1001.2014.3001.5501.
学习的主要内容
- 实现一个打字游戏,用户与终端交互,输入字符进行比较,输出正确率和时间。程序编译完成后使用GBK编码格式(因windows默认)保存即可正常在终端输出中文字符。
#include<stdio.h>
#include<string.h>
#include<conio.h> //提示,vs提供的,windows没有这个库
#include<stdlib.h>
#include<time.h>
void tips()
{
printf("\n\n==================伟伟版打字游戏==================\n\n");
printf("===============按任意键继续================\n");
printf("==============按Esc 退出游戏/打字中退出游戏================\n");
//接受但不显示字符
char ch = _getch();
//按Esc就退出
if (ch == 27)
{
exit(0);
}
}
//产生随机字符
void rand_ch(char *arr)
{
//随机数种子
srand((unsigned int)time(NULL));
for(int i = 0; i < 10; i++)
{
arr[i] = rand() % 26 + 'a' ;
}
}
void printf_ch(char *arr)
{
//计数器和计时器
unsigned int start_time;
unsigned int end_time;
int val = 0;
for(int i = 0 ; i < 10 ; i++)
{
char ch = _getch();
//此处判断是否重新开始调用循环
if(i == 0)
{
start_time = time(NULL);
}
if(ch == arr[i])
{
printf("%c",ch);
val++;
}
else
{
printf("_");
}
//若用户想在此过程提前退出:按ESC键
if(ch == 27)
{
printf("\n您已提前退出游戏");
exit(0);
}
}
end_time = time(NULL);
printf("\n====用时:%d",end_time - start_time);
printf("\n====正确率:%.2f%%",val*1.0/10 * 100);
if((val*1.0/10 * 100) > 60)
{
printf("\n===你太棒了====");
}
}
int main(void)
{
//字库
char arr[51];
//arr所指向内存的前51个位置赋值为0
memset(arr, 0, 11);
while(1)
{
//1.提示
tips();
//2.产生随机字符
rand_ch(arr);
printf("%s\n",arr);
//3.输入字符
printf_ch(arr);
}
return EXIT_SUCCESS;
}
一起学习,欢迎关注和交流!