admin管理员组文章数量:1794759
手把手带你学会猜数字游戏代码编写
声明:因本人为非科班转码,个人水平有限,博客中难免有不准确之处,如有读者发现,本人恳请大家积极指出,本人也想知道自己的错误在哪里。欢迎大家一起指正,共同进步。
- 联系方式:3146367553@qq
目录
1.程序功能大致描述
2.代码编写思路分析
2.1 整体框架分析
2.2 重难点分析(1-100的随机数如何生成)
2.3 相关细节与两种模式
3. 源代码与截图
1.程序功能大致描述
由系统生成1-100的随机数(整型),由玩家在键盘上进行猜测,玩家无论猜大猜小电脑都会告知你,如果猜对了会恭喜你。同时,玩家可以在玩游戏的中途退出游戏。个人设置了简单和困难两种模式可以选择。
2.代码编写思路分析 2.1 整体框架分析
①首先,我们可以联系一下以前打过的小游戏(不是小游戏也可以),我们是不是进入游戏会有一个开始游戏和退出游戏的选项?点击屏幕其他部分是不是没有反应?因此,我们可以设立一个主菜单函数,打印游戏界面(因为界面可能不止见到一次)。同时,我们站在玩家的角度想一想,我们是不是有很大概率猜对了一把还想猜测的欲望,直到自己不想打就退出游戏?因此,游戏刚开始的选择是否游戏其实很符合循环。另外,用户第一次进游戏肯定得选择,小可爱,你说是不是?
因此,在选择是否开始游戏就是一个do-while循环,同时循环条件可以为1(退出游戏可以break)。
②我们不难分析,退出游戏只需要一两个语句就可以。而开始游戏是一个较为复杂的代码,同时用户可以开始游戏很多次(只要他还想玩),那么,为了避免重复造轮子,我们应该把游戏设定成一个函数。
2.2 重难点分析(1-100的随机数如何生成)其实,重点呼之欲出,就是我们怎么让电脑生成一个1-100的随机数呢?首先,如果有一个随机数x,那么x % 101就是1-100(余数范围为1-100)。接下来,就是随机数的问题了。
经查阅,有rand函数可以生成随机数。
我们查阅发现,rand头文件为stdlib.h,值得注意的是,调用rand函数我们需要在这之前生成srand随机数生成器。
而srand函数用法为srand(unsigned int),即括号内为无符号整型。但是,一旦括号内确定,随机数也随之确定。如此一来,小游戏数字便固定了。因此,括号内必须为随机数?但是,怎么可能让随机数生成随机数?这时,我们可以换一个思路,在括号内的只要是一个变化的数字就可以了。那么,我们在进行游戏的时候,什么是变化的呢?没错,是时间!
经查阅,正好有一个time函数,该函数返回一个从当前时间点到计算机起始时间之间的差值(随着时间的变化,差值在变)。因此随机数生成器可以写成srand((unsigned int)time(NULL))。同时,经试验我发现,随机数生成器得和rand函数分开,也就是srand生成器在主函数,rand函数生成值赋值在game函数是正确做法。
2.3 相关细节与两种模式①首先,我们在玩这个游戏肯定不喜欢一直见到游戏主界面,如此清屏函数就派上大用场了。
即system("cls"), 头文件为windows.h。
②我设计的模式有两种,一种为简单模式,可以看到自己之前的猜数字记录;另外一种为困难模式,看不到自己的猜数字记录。
③每猜测5次,电脑会询问是否终止游戏从而退出。(会有因为特殊原因突然不想玩或者不能玩的游戏客户)。
3. 源代码与截图
讲了这么多,还是代码最重要,需要的小伙伴自行复制哈。
源代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> void menu() { printf("****************\\n"); printf("****************\\n"); printf("欢迎进入猜数字游戏界面\\n"); printf("1:开始游戏\\n"); printf("0:退出游戏\\n"); printf("****************\\n"); printf("****************\\n"); } void game1() //简单模式(可以看到自己猜测记录) { int guess = 0; int x = rand() % 101;//存放随机数, 取余101余数为1-100 int count = 0; while (1) { printf("请输入您猜测的数字:"); scanf("%d", &guess); count++; if (guess == x) { system("cls"); printf("恭喜您,猜对了\\n"); printf("将重新回到游戏界面\\n"); break; } else if (guess > x) { if (0 == count % 5) { printf("是否终止游戏?\\n"); char input = 'A'; getchar();//清理缓冲区回车键 scanf("%c", &input); if ('Y' == input) { break; } } printf("不好意思,您猜测的数字大了\\n"); } else { if (0 == count % 5) { printf("是否终止游戏?\\n"); char input = 'A'; getchar();//清理缓冲区回车键 scanf("%c", &input); if ('Y' == input) { break; } } printf("不好意思,您猜测的数字小了\\n"); } } } void game2() //困难模式(不能看到自己猜测记录) { int guess = 0; int x = rand() % 101;//存放随机数, 取余101余数为1-100 int count = 0; while (1) { printf("请输入您猜测的数字:"); scanf("%d", &guess); count++; if (guess == x) { system("cls"); printf("恭喜您,猜对了\\n"); printf("将重新回到游戏界面\\n"); break; } else if (guess > x) { system("cls"); if (0 == count % 5) { printf("是否终止游戏?\\n"); char input = 'A'; getchar();//清理缓冲区回车键 scanf("%c", &input); if ('Y' == input) { break; } } printf("不好意思,您猜测的数字大了\\n"); } else { system("cls"); if (0 == count % 5) { printf("是否终止游戏?\\n"); char input = 'A'; getchar();//清理缓冲区回车键 scanf("%c", &input); if ('Y' == input) { break; } } printf("不好意思,您猜测的数字小了\\n"); } } } int main() { int choose = 0; srand((unsigned int) time(NULL)); do { menu(); scanf("%d", &choose); if (1 == choose) { system("cls"); printf("开始猜数字\\n"); int choose2 = 0; printf("请选择模式:1.简单模式 2.困难模式\\n"); getchar(); scanf("%d", &choose2); while(1) { if (1 == choose2) { game1(); break; } else if (2 == choose2) { game2(); break; } else { printf("您的选择有误,请重新输入\\n"); } } } else if (0 == choose) { system("cls"); printf("退出游戏\\n"); break; } else { system("cls"); printf("您的输入有误,请重新输入\\n"); } } while (1); return 0; }运行截图:
创作不易,小可爱们,动动你们的小手点个赞再走呗。
版权声明:本文标题:手把手带你学会猜数字游戏代码编写 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687020657a129134.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论