蒙古文政务网站群建设工作方案,百度商桥怎么添加到网站,建设银行信用卡境外网站盗刷,上海装修公司排名有哪些编程实现一个游戏程序#xff0c;会将连续三个字母中的一个隐去#xff0c;由玩家填写隐去的那个字母#xff0c;如屏幕上显示A ? C#xff0c;则玩家需要输入B#xff1b;屏幕上显示#xff1f;B C#xff0c;则玩家需要输入A。记录玩家完成20次游戏的时间以及正确率。…编程实现一个游戏程序会将连续三个字母中的一个隐去由玩家填写隐去的那个字母如屏幕上显示A ? C则玩家需要输入B屏幕上显示B C则玩家需要输入A。记录玩家完成20次游戏的时间以及正确率。
1.实现连续三个字母出现
如何能让三个字母出现呢 三个连续的字母的特点是ASCII码值成比例 只要列出三个成比例的数字然后它们对应的是字母即可。 那怎么找到三个成比例的数字呢 我们可以利用rand()函数生成随机值让随机值模上3便可以生成0-2之间的数字而让0对应着第一个字母1对应着第二个字母2对应着第三个字母。如果rand()%3结果为0则让第一个字母为其他字母显示让玩家猜出这个字母而当rand()%3结果为1则让第二个字母为第一个和第三个字母显示。如果rand()%3结果为2则让第三个字母为第1个和第2个字母显示。 但是使用rand()生成的值却是一个不变的随机值我们需要一个生成不断变化随机值这时就需要time来生成一个随机种子了 srand((unsigned int)time(NULL))time的参数是NULL返回值为unsigned int类型。 这样就可以生成随机值了。 那对应关系我们知道了还需要让连续字母出现也需要用到rand 让rand()%24A就可以生成随机字母了然后再与012对应就可以了。 position rand()%30; // 随机隐藏的位置012character rand()%24A; // 随机出现的第一个字母 A-Xprintf(----- Round %d -----\n, i1);if (position 0)//0对应着第一个字母 {answer character;printf(? %c %c\n, character1, character2);} else if (position 1) //1对应着第2个字母{answer character 1;printf(%c ? %c\n, character, character2);} else if (position 2)//3对应着第3个字母 {answer character 2;printf(%c %c ?\n, character, character1);}2.确定游戏时间与准确率
我们可以利用time_t类型来定义两个变量startend。 用来记录开始时间和结束时间。 第一次使用time(NULL)可以进行计时而第二次再使用time(NULL),计时便停止下来。 所以我们可以在游戏开始之前进行计时当20把游戏结束后进行计时结束。 starttime(NULL)开始计时 endtime(NULL)停止计时
如何确定准确率呢,肯定需要知道答对还是没答对定义一个count 用来记录答对的次数每次答对则进行。 而正确率的计算就是正确的个数/比赛的次数。
3.猜字母操作
这里我们玩家需要猜出是什么字母将要写的字母输入电脑中然后进行比较 不过我们需要注意的是输入这个操作是要循环20次所以就要考虑scanf函数的空格缓冲区域 每次输入一个字符还需要enter一下这时缓冲区相当于就会有两个字符而下一次scanf就会把空格传给电脑这样是不行的 所以我们需要在每次输入后都要清除一下缓冲区中的空格用getchar()函数吸收空格。
printf(请输入正确字母:);scanf(%c, guess);getchar();if (answer guess){printf(对的\n);count;}else{printf(错误的,正确的答案是%c\n,answer);}也可以使用另一种方法利用do…while清空缓冲区 printf(Please enter the correct letter: );guess getchar();do {scanf(%c,c);} while(c!\n);if (answer guess) {printf(Correct!\n);count;} else {printf(Wrong! The correct letter is %c\n, answer);}4.完整代码 int main(void) {char character, position, answer, guess, c;int i, count0;double duration;time_t start, end;srand((unsigned int) (time(0))); // 随机种子start time(NULL); // 开始计时for (i0; i20; i) {position rand()%30; // 随机隐藏的位置012character rand()%24A; // 随机出现的第一个字母 A-Xprintf(----- Round %d -----\n, i1);if (position 0) {answer character;printf(? %c %c\n, character1, character2);} else if (position 1) {answer character 1;printf(%c ? %c\n, character, character2);} else if (position 2) {answer character 2;printf(%c %c ?\n, character, character1);}printf(Please enter the correct letter: );guess getchar();do {scanf(%c,c);} while(c!\n);if (answer guess) {printf(Correct!\n);count;} else {printf(Wrong! The correct letter is %c\n, answer);}} end time(NULL); // 停止计时duration ((double)(end - start));printf(Win Ratio: %f %%\n, count*100/20.0);printf(Game Time: %f s\n, duration);return 0;
}