刘晓燕老师的C Programming Language选修课作业。


一、问题说明

原问题描述如下:

The problem is to write a memory-test game. The computer displays a sequence of digits on the screen for a short period of time. The player then has to memorize them, and when the digits disappear from the screen, he must enter exactly the same sequence of digits. Each time the player succeeds, he can repeat the process to get a longer list of digits to try. The objective is to continue the process for as long as possible.

问题是编写一个记忆测试游戏。 计算机在短时间内在屏幕上显示一系列数字。 玩家必须记住它们,当数字从屏幕上消失时,他必须输入完全相同的数字序列。 每次玩家成功时,他都可以重复该过程以获取更长的数字列表来尝试。 目标是尽可能延续这一过程。

显然,这就是设计一个能输出数字并能比对输入的数字的程序。

二、流程设计

根据题目可大致设计如下流程:


图1 记忆测试游戏流程图

三、程序设计

  1. 数字串的输出
    调用<stdlib.h>中的rand()函数,一个一个数地输出。调用<time.h>中的clock()函数,定义wait_time和show_time后,使用对clock() - wait_time < show_time * CLOCKS_PER_SEC的判断达到数字串输出一定时间的效果。之后退格并输出空格,实现字符串消失的效果。
  2. 输入与判断
    对于数字串的输入,一开始考虑调用scanf()函数,但由于scanf()函数在不用空格分开的情况下,不能一次只读入一个数字。于是改成了getchar()函数。使用getchar()函数获取输入的数字,再将其的ASCII码值与前面生成的数字进行比较。
  3. 游戏的结束
    如果数字串输入完全正确,数字串加长、时间增加,进入下一轮游戏。如果输入错误,通过break停止判断,输出正确答案和本次游戏的分数。游戏分数是根据玩家正确输入的数字串的数字总个数决定的。之后用户可选择是否重来。

四、程序源代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main()
{time_t seed=0;time_t wait_time=0;int show_time=1;unsigned int i=1;char choose='1';char input1;unsigned int score=0;unsigned int input2;unsigned int flag=1;printf("准备好进行记忆测试了吗?\n");printf("屏幕上即将显示一串数字,你是否能记住它们呢?\n");printf("输入正确就可以挑战更高的难度了!\n");printf("按回车键开始!\n");getchar();printf("那么就开始吧!\n");int length=3;while(choose=='1'){for(;;length+=2,show_time++){wait_time = clock();srand(time(&seed));for(i = 1; i <= length; i++)printf("%u", rand() % 10);for( ; clock() - wait_time < show_time * CLOCKS_PER_SEC;);for(i=1; i<=length; i++)printf("\b \b");printf("\n记住了吗?那么就试试吧:");srand(seed);for(i = 1; i <= length; i++){input1=getchar();input2=(int)input1-(int)'0';if(input2 != rand() % 10){printf("很遗憾!错误。正确答案:");srand(seed);for(i = 1; i <= length; i++)printf("%u", rand() % 10);flag=0;break;}}fflush(stdin);if(flag==0)break;score=score+length;printf("正确!继续挑战!下一个是:\n");}printf("\n你本次的分数为:%u\n是否重来?\n是-----1  否-----0\n",score);choose=getchar();if(choose=='1')printf("再来一次:\n");else printf("本次游戏结束,再见!");fflush(stdin);}return 0;
}

五、程序测试


图2 程序运行演示

经测试,达到预期效果。

参考资料:C语言实现简单的记忆力测试游戏

C语言 记忆测试(Memory Test)小游戏的实现相关推荐

  1. c语言小游戏 精简_C语言开发简易版扫雷小游戏

    C 语言开发简易版扫雷小游戏 本文给大家分享的是一个使用 C 语言开发的命令行下的简易版扫雷小游戏, 本身没有什么太 多的技术含量, 只不过是笔者的处女作, 所以还是推荐给大家, 希望对大家学习 C ...

  2. c语言课程设计作业五子棋,C语言课程设计之五子棋小游戏.doc

    C语言课程设计之五子棋小游戏.doc C语言课程设计 题目名称:五子棋小游戏 氺氺木木木 专 业计算机类 班 级 *班 指导教师J22 编写日期2016.05.26 目录 TOC \o "1 ...

  3. c语言自动按键脚本,C语言键盘控制走迷宫小游戏

    本文实例为大家分享了C语言键盘控制走迷宫小游戏的具体代码,供大家参考,具体内容如下 在看了<啊哈C语言>之后想写一个游戏demo 游戏的截图 首先是启动界面 然后是初始化 接下来是键盘操控 ...

  4. c语言设置一个选择数字的程序,C语言编一个数字益智小游戏

    程序功能及运行情况 设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力.游戏共设有四个不同的小游戏,分别是一位数四则运算.两位数四则运算.找最值游戏.排序游戏.程序能实现产 ...

  5. C语言射击类打飞机小游戏

    使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会. 在网上查询资料并且和同学讨论之后,对原来的代码有了一些改进, 改进:增加了颜色函数 ...

  6. c语言射击类打飞机小游戏感悟

    c语言:简单飞机射击小游戏 使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,操作方法是"a""d""w"或者"←" ...

  7. c语言成语接龙编程,C语言完成成语接龙小游戏

    用C语言实现成语接龙小游戏(新手上路,大神勿喷) 1.首先需要找到一个成语库(从网上下载即可,保存为.txt文件) 2.整体思路如下 由于要用的成语保存在文件里,一边用一边读取会降低代码的效率,所以我 ...

  8. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  9. c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  10. c语言贪吃蛇打包到桌面,C语言实现桌面贪吃蛇小游戏

    本篇写的是桌面贪吃蛇小游戏,大家自己看吧,感谢大家的支持,谢谢!O(∩_∩)O~~ #define _CRT_SECURE_NO_WARNINGS #include #include #include ...

最新文章

  1. 【青少年编程】【Scratch】04 事件模块
  2. 互联网公司GitHub repo 语言使用情况
  3. 从fragment开始向上查找实现了某个接口的parent Fragment 或者 Activity
  4. 从零开始学springboot笔记(二)-Spring boot返回json数据(中文无乱码)
  5. 实用知识点梳理:网络传输介质、以太网、VLAN、HDLC、奈奎斯特定理与香农定理
  6. php正则匹配sg-nc-wap_php正则匹配
  7. php 各种进制表示,php各种进制的转换
  8. mysql 优化的一些小窍门
  9. Spring Framework标记库初学指南
  10. ai人工智能可以干什么_人工智能可以解决我的业务问题吗?
  11. 计算机图形学——Bresenham画线算法
  12. 行业知识图谱调查报告(一):知识图谱概述
  13. Flixel Dame 坦克大战(二)Dame-editor使用指南
  14. java之21点游戏(只包含一个玩家和一个庄家,是否抓牌,没有黑杰克)
  15. 老挑毛u盘一键装系统计算机意外地,u盘装系统 重装Win7系统出现提示计算机意外的重新启动或遇到错误怎么处理 我已经删除了所有分...
  16. java 建立临时文件夹
  17. Linux系统如何PING地址,Linux下指定源ip进行ping操作的方法
  18. python关联通达信pywin32_[AHK]联动通达信其实很简单
  19. 更新查询能用计算机,小黑盒怎么更新电脑配置 查成绩方法
  20. conductor 的concurrentExecLimit及rateLimit 实现分析

热门文章

  1. c语言编程银行排队系统,C语言_课程设计银行排队系统.doc
  2. 增长黑客:如何绘制用户的旅程?
  3. 微信封号的原因有几个?
  4. LRU缓存淘汰算法优化
  5. html css javascript实现弹弹球
  6. Fabric安装中make release无法编译问题解决 no required module provides package
  7. 倍福--报错18000
  8. 零基础学前端系列教程 | 和前端谈恋爱的第003天——电影海报
  9. 你猜黑客都用Linux系统还是Windows系统?
  10. 学校电脑室计算机使用流程,学校电脑室安全管理制度