Simple Simon

用C语言写一款简单的西蒙游戏

Simple Simon是一款记忆测试游戏。计算机在屏幕上短时间显示一系列数字。当你从屏幕上记住数字的序列时,你必须完全记住这些数字。每次你成功了,你可以重复这个过程,得到一个更长的数字列表供你尝试。
程序必须生成一个介于0和9之间的整数序列,并在屏幕上显示该序列一秒钟,然后再将其删除。然后玩家必须尝试输入相同的数字序列。序列逐渐变长,直到玩家得到错误的序列。然后根据成功尝试的次数和花费的时间计算得分,然后询问玩家是否愿意再次玩。
序列长度从3开始,每三次成功尝试,增加序列长度。
(长度加1)
Simple Simon程序的基本逻辑如下:

编程中将使用以下头文件:

#include <stdio.h>   /* For input and output   */
#include <ctype.h>   /* For toupper() function */
#include <stdlib.h>  /* For rand() and srand() */
#include <time.h>    /* For time() , clock()  and   CLOCKS_PER_SEC*/

提示:
(1) 等一秒钟
库函数clock()返回自程序启动以来的时间,以时钟刻度为单位。头文件的<time.h>定义了一个符号CLOCKS_PER_SEC,它是一秒钟内的时钟周期数。使用变量now存储当前时间,循环的代码如下:

  /* Wait one second */
now = clock();
for( ;clock() - now < CLOCKS_PER_SEC; );

(2) 计算游戏分数
计算玩游戏的总时间(秒):

time_taken = (clock() – startTime) / CLOCKS_PER_SEC;

如果变量计数器存储成功尝试的次数,则可以使用以下公式计算游戏分数:

scores = counter * 100 / time_taken

(3) 生成0到9之间的整数序列并在屏幕上显示该序列

seed = time(NULL);
srand((unsigned int)seed);  /* Initialize the random sequence */
for(int i = 0; i < sequence_length; i++)
printf("%2d", rand() % 10);

如果使用相同的种子生成整数序列(srand(seed)),它将生成相同的序列。
(4) 清除输出的数字序列

printf("\r");               /* go to beginning of the line */
for(int i = 1; i <= sequence_length; i++)
printf("  ");

以下为整个程序源代码:

/*Name:programme3.cAuthor:祁麟Copyright:BJTU | school of softwareDate:2020/10/27 Description:Write a game of Simple Simon in C.
*/#include <stdio.h>    /* For input and output   */
#include <ctype.h>    /* For toupper() function */
#include <stdlib.h>   /* For rand() and srand() */
#include <time.h>     /* For time() , clock()  and  CLOCKS_PER_SEC*/
#include <stdbool.h>int main(){//初始化程序char another_game = 'N';bool correct = true;int counter = 0;int sequence_length = 0;time_t seed = 0;time_t now = 0;int number = 0;int time_taken = 0;int c,i;do{//初始化游戏循环printf("Simon游戏开始!\n");counter = 0;sequence_length = 2;time_taken = clock();correct = true;while(correct){sequence_length += (counter++%3 ==0);//生成随机数seed = time(NULL);now = clock();srand((unsigned int)seed);for( i = 1; i <= sequence_length; i++) {printf("%d ",rand()%10);}//等待一秒for(;clock() - now < CLOCKS_PER_SEC;)//删除数字序列printf("\r");for( i = 1; i <= sequence_length; i++){printf("  ");} if(counter == 1){printf("\n输入序列,用空格间隔。\n");}   else{printf("\r");}//读取用户输入//判断输入是否正确srand((unsigned int)seed);for( i = 1; i<= sequence_length; i++){scanf("%d",&number);if(number != rand()%10){correct = false;break;}}printf("%s\n",correct?"Correct~":"Wrong!"); } //结算分数time_taken = (clock() - time_taken)/CLOCKS_PER_SEC;printf("您的得分为:%d",--counter*counter*100/time_taken);while ((c = getchar()) != '\n' );//是否开始新游戏?printf("\n是否开始新游戏?(y/n)\n");scanf("%c",&another_game); }while(toupper(another_game) == 'Y');//结束return 0;
}

运行截图:

C语言入门 -- Simple Simon 简单的西蒙游戏(2021/1/7)相关推荐

  1. Unity入门——实现一个简单的跑酷游戏(资源预制)

    Unity入门--实现一个简单的跑酷游戏 资源预制 一款跑酷游戏,需要大量重复的场景资源,比如道路.障碍物等,无论是从游戏体验的角度还是运行效率的角度考虑,都不应该全部事先摆好,而是应该由代码随机生成 ...

  2. unity入门——实现一个简单的跑酷游戏(人物控制)

    unity入门--实现一个简单的跑酷游戏 场景搭建 将人物放置于世界坐标的(0,0.1,0),初始道路放置于人物脚下,坐标设置为(0,0,0),水面初始位置设置为(0,-2,-100),可以自行调整, ...

  3. 做游戏,学编程(C语言) 2 最简单的飞机游戏

    这一次,在前面弹跳小球的基础上,实现一个简单的飞机游戏的雏形,主要包括:飞机显示.控制移动.发射子弹.击中敌机等功能.需要的语法基础知识和弹跳小球一样:printf.scanf.if-else.for ...

  4. ubuntu系统下c语言入门以及编写简单程序

    目录 一,hello world入门 二,在windows系统中编写简单程序 三,在ubuntu系统下用makefile方式编写程序 一,hello world入门 在linux操作系统中打开终端 1 ...

  5. VBA语言入门:一些简单语法在Excel应用实例

    首先,想看详细教程请转向:Excel VBA编程教程 接下来我想介绍一下VBA快速入门最基本的语法. 处理的主函数: Sub fun() ... End Sub 这个语法在c++中可以类比为main, ...

  6. 【全网最强C语言学习】c语言入门(番外)——简单操作上传代码到代码仓库

    ✨前言✨ 作为一个小白说出标题这样的话看来是有些大言不惭,但博主有心将这个系列做好.做精.实话说博主学习C语言不过两个多月,也很能明白初学者的困惑,所以会尽肯能详细.同时作为一个系统的教程,这个系列会 ...

  7. c语言入门程序下载,简单实用——C语言入门程序练习

    #include #include struct structstudent//创建结构体,表示学生信息 { int No;//学号 char Name[20];//姓名 int Age;//年龄 } ...

  8. C语言如何做手机游戏,C语言怎样实现一个简单的手机游戏小项目

    手机游戏名称:猜数字 使用的开发语言:C语言 基本规则:电脑随机生成一个1-30之间的数字,人和电脑分别猜一个数字,看谁的数字较为接近生成的数字. 要求:每个人和计算机10,000点,玩家进入多少分, ...

  9. 简易扫雷游戏c语言程序,C++实现简单的扫雷游戏(控制台版)

    C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游 ...

  10. unity贪吃蛇c 语言代码,unity实现简单贪吃蛇游戏

    本文实例为大家共享了unity实现贪吃蛇游戏的详细代码,供大家参考,详细内容如下 首先创建一个头部,编写脚本利用WASD控制头部的移动. Vector3 up=new Vector3(0,1,0); ...

最新文章

  1. 抓包分析TCP的三次握手和四次分手
  2. golang基本数据类型和string的相互转换
  3. ### Error building SqlSession.### The error may exist in entity/UserMapper.xml
  4. 7.3 数字类型及内置方法
  5. 算法 --- 快慢指针判断链表是否有环
  6. 洛谷1345 [Usaco5.4]奶牛的电信
  7. 鸿蒙系统存储空间,鸿蒙系统即将上线!看到内存要求后,网友:逼我换手机?...
  8. 《Java8实战》-第五章读书笔记(使用流Stream-02)
  9. Tensorflow:tensor数据类型转换、计算和变换
  10. RecSys2020推荐系统论文Recommending the Video to Watch Next: An Offline and Online Evaluation at YOUTV.de
  11. ETH开发 JSONRPC
  12. win7语言包_win7系统语音包安装图文教程
  13. 三星手机微信下载的文件路径
  14. (转)DirectX不是全部!3D游戏图形技术解析
  15. 图像分割中CNN的简史:从R-CNN到Mask R-CNN
  16. 爱快路由网关到网关配置open***
  17. 【盘点大系】《盘点5月份--2018》
  18. Python语法错误和异常
  19. 解读温度传感器应用于物联网+冷链行业
  20. 鸟哥Linux服务器篇——什么是 DNS

热门文章

  1. 元学习(Meta Learning)最全论文、视频、书籍资源整理
  2. 网页设计如何排成一列_网页排版设计中对齐技巧能让网站产生高端感(下)
  3. 金蝶引出文件到服务器,金蝶迷你版如何引出帐套文件,具体操作流程
  4. java 排列组合算法_关于各种排列组合java算法
  5. Visual Studio Code讲解(二) ssh远程操作电脑
  6. 【RFID】天线技术
  7. 为什么对偶问题一定是凸优化问题?
  8. 苹果电脑可以装windows系统吗_给苹果电脑安装Windows系统
  9. Netlogo仿真初步学习总结
  10. Android studio中使用百度地图