《2022年猜数字游戏流程图+源代码 .pdf》由会员分享,可在线阅读,更多相关《2022年猜数字游戏流程图+源代码 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。如果4A0B,表示游戏成功。每次猜错都会有提示,如果八次都未猜对,游戏失败,显示正确答案。按任意键可以返回主菜单。主要应运数组和循环实现改功能。(对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。)2、功能要求:本游戏显示这样的菜单:(1)随机产生数据(2)用户输入数据(3)退出游戏(4)游戏成功与否都能返回主菜单测试数据:测试数据:
2、3792 第一次输入:1234 0A2B 第二次输入:5678 0A1B 第三次输入:0867 0A1B 第四次输入:9786 1A1B 第五次输入:1794 2A0B 第六次输入:2793 2A2B 第七次输入:3792 4A0B 游戏成功!名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -3.解题分析利用主函数调用子函数来实现模块化程序设计。将游戏的每一个功能设计成一个子函数,通过函数调用完成游戏。主要分为两大模块:随机模式和用户模式。猜数字游戏的主要功能,由系统自动产生4 个随机排列的整数,或者由用户输入 4 个不同的整数,并给用户 8 次机会猜测数字的数值和排列
3、顺序。如果用户在 8 次之内没有猜出正确的结果,则提示用户游戏失败,否则提示用户猜数字成功。4.系统总体框图5.函数名称及功能Int main()主函数开始游戏用户模式随机模式退出游戏功能菜单显示开始名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -void begin(void)初始页函数void c_input(char*str)输入并判断函数void c_game(char*temp)游戏实现函数void c_rand()随机模式函数void c_printf()用户模式函数int judgeA(char*a,char*b)获取A函数int judgeB(char
4、*a,char*b)获取B 函数1.函数间调用关系void begin(void)void c_game(char*temp)void c_printf()void c_rand()主函数;int main()名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -7.流程图(1)void c_rand()随机模式函数流程图(2)void c_printf()用户模式函数流程图voidc_input(char*str)int judgeA(char*a,char*b)int judgeB(char*a,char*b)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共
5、 11 页 -(3)主函数流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -8.运行结果开始int a=1 begin()system(“cls”)srand(time(NULL)输出:选择3 2 1 break a=0 c_printf()c_rand()break break default 结束while(a=0)是是是否否否名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -(1)起始页(2)随机模式(3)用户输入模式名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 11 页 -综合题源程序#include/预处理指令#i
6、nclude/stdlib.h 里面定义了五种类型、一些宏和通用工具函数#include/定义数据输入、输出的函数,主要是用户通过按键盘操作,如 getch()函数#include/定义字符处理函数的头文件#include/包含系统时间函数的头文件void begin(void);/初始页void c_game(char*temp);void c_rand();int judgeA(char*a,char*b);/获取 A int judgeB(char*a,char*b);/获取 B char x4,y4;/y4 是用户输入的数字,x4是系统随机产生的数字void c_input(char*
7、str)/输入函数 int i,j;/定义两个变量input:gets(str);/输入一个字符串名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 11 页 -putchar(n);/格式控制for(i=0;i4;i+)/循环输入 if(stri9)/判断输入是否合法 printf(无效输入,请重新输入:);goto input;/无条件转移语句 for(j=0;ji;j+)if(stri=strj)printf(无效输入,请重新输入:);goto input;void c_game(char*temp)/游戏实现函数 int a,b,i;for(i=0;i8;i+)/for循环实
8、现八次输入 printf(第%d 次输入:,i+1);c_input(y);a=judgeA(temp,y);/获取 a b=judgeB(temp,y);/获取 b if(a=4)/游戏成功条件 printf(游戏成功,按下任意键返回主菜单。);getch();return;else printf(%dA%dBn,a,b);printf(游戏失败,正确答案是:%sn按下任意键返回主菜单。,x);getch();void c_rand()/随机模式函数 int i,j;char data=0123456789;/初始化一维数组名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11
9、页 -system(cls);/系统调用 cls 指令,清除屏幕printf(*随机模式*nn);for(i=0;i4;i+)j=rand()%(10-i);/rand()产生随机数的随机函数,产生的是一个很大的数,对其求余限定范围xi=dataj;dataj=data10-i-1;c_game(x);system(cls);void c_printf()/用户模式函数 system(cls);printf(*用户输入模式*nn);printf(请输入测试数据:);c_input(x);system(cls);printf(*用户输入模式*nn);c_game(x);system(cls);i
10、nt judgeA(char*a,char*b)/获取 A 函数 int i,n=0;for(i=0;i4;i+)if(ai=bi)/获取 A 条件n+;return n;int judgeB(char*a,char*b)/获取 B 函数 int n=0;if(b0=a1|b0=a2|b0=a3)n+;if(b1=a0|b1=a2|b1=a3)n+;if(b2=a0|b2=a1|b2=a3)n+;if(b3=a0|b3=a1|b3=a2)n+;return n;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 11 页 -void begin(void)/初始页和帮助 print
11、f(nnnnn);printf(*n);printf(猜数字游戏 n);printf(游戏帮助:n);printf(每局游戏,计算机将随机产生一个四位整数,这个整数各个位上的数字都 n);printf(不重复,且首位可以为 0。玩家有八次机会来猜这个数,每猜一次,计算机将告 n);printf(玩家:有几个数大小位置都对了,用A 表示;有几个数大小对了但位置错了,用 n);printf(B 表示。八次机会用光后,游戏结束。n);printf(1)随机产生数据(2)用户输入数据(3)退出游戏 n);printf(*n);void main()/主函数 int a=1;srand(time(NULL);/设置随机数种子,一个种子对应一个随机数while(a!=0)system(cls);begin();printf(choice:);switch(getch()/switch 实现多分支选择结构 case 1:c_rand();break;case 2:c_printf();break;case 3:a=0;break;default:printf(enter data error!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 11 页 -
限制150内