《课程设计报告 猜数字》由会员分享,可在线阅读,更多相关《课程设计报告 猜数字(21页珍藏版)》请在金锄头文库上搜索。
1、11 1、系统需求分析、系统需求分析1.11.1 问题描述问题描述:该游戏可以由程序随机产生或由用户输入四个 0 到 9 之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A 表示位置正确且数字正确,B 表示数字正确而位置不正确。1.21.2 功能要求:功能要求:(1) 、本游戏显示这样的菜单:a、随机产生数据b、用户输入数据c、退出游戏(2) 、游戏成功与否都能返回主菜单2 2、概要设计、概要设计2.12.1 系统总体设计系统总体设计猜数字游戏是一种大众娱乐游戏, 开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示, 还
2、有用户设置数字作为游戏数据。在前面对猜数字游戏进行需求分析的过程中, 已经初步明确了系统的主要功能模块和用户需求,下面将给出猜数字游戏的功能模块结构。2开始功能菜单显示单 人 模 式退 出 游 戏双 人 模 式帮 助 信 息图 4-1 系统功能图2.22.2 各模块功能各模块功能本游戏软件软件可以共分为五大模块,分别是数据检测模块、游戏模块、系统自动生成数字模块、帮助信息模块、主函数模块。整个游戏软件基本实现用户对此类游戏软件的要求,其各个模块的功能如下:(1) 、void c_input(char *str):检测数据模块;该模块是系统对玩家输入的数据进行检测,若数据符合要求,即四个数字不重
3、复且第一个数字不为零,则进行下一步,否则系统提示“输入错误,请重新输入” ,然后重新进入输入状态。(2) 、void c_game(const char *temp):游戏模块;该模块为玩家提供猜数字游戏的主休功能,由系统自动产生或其他人输入 4 个随机排列的整数,并给玩家 8 次机会猜测数字的数值和排列顺序。 如果用户在 8 次之内没有猜出3正确的结果,则提示用户游戏失败,否则提示用户游戏成功。(3) 、void c_rand():系统自动生成数字模块;系统在游戏规则下,通过特定的算法实现自动生成 4 个不重复的数字,为游戏提供要猜的数字,供玩家来猜。(4) 、void c_help():帮
4、助信息模块;帮助信息模块提供的功能是当玩家选项为帮助功能对应的选项数字时,进入帮助信息模块,此模块给出了用户猜数字的游戏规则和游戏中相关提示的含义,以便用户了解游戏规则,更好地进行游戏。(5)void main():主函数模块;该模块主要提供主界面,将各个模块连接起来,让用户更方便、更有效地进行游戏。3 3、详细设计、详细设计3 3.1.1 采用采用 C C 语言定义相关的数据类型语言定义相关的数据类型int i,j;/*定义输入的数字及系统产生的数字*/int ci;/*定义猜数字的机会*/char in 4;/*定义数字的个数*/char out5=”0A0B”;/*定义相关的系统提示*/
5、char temp4;/*进行游戏的数字*/3.23.2 流程图流程图4输入的数字和 答案是否一致给出提示, 回答机会减 1是否还有回 答机会?否是游戏成功是游戏失败退出否玩 家 输 入 猜 测的数字输入的数字 是否符合要 求开始否是图 4-353.33.3 函数调用关系图函数调用关系图主函数: int main()帮助信息函数: c_help()输入数据检测函数: c_input(char *str)用户输入数据函 数:c_printf()自动生成数据函数: c_rand()图 4-34 4、系统调试、系统调试在设计系统自动生成数字的函数中,我犯了点逻辑上的小错误,陷入了死胡同,后来请教了其
6、他同学,同学给了我一个新的思考思路,最终把这部分函数很好地完成了。刚开始执行帮助函数的时候,当我从帮助信息中返回到主菜单后,无法输入任何信息。在我的细心检查与推理下,解决了这一问题。在后来执行输入函数时,按数字顺序输入,输完后执行显示功能,数字、字母的位置显示不对,试着在其中增加一些语句,希望能把所需结果按正常顺序显示,但暂时没有成功,最后在老师的帮助下,所需结果能按正常顺序输出了。游戏系统在计算玩家猜数字的机会的时候遇到了些小麻烦, 程序刚遍完运行游戏时,系统将玩家输入错误视为减少一次游戏机会。在同学的帮助下,将检测输入数据是否符合要求这一步从游戏部分分出来,重新建立一个函数,并与游戏部分建
7、立联系,完美地解决了这一问题。6当然,在系统调试的时候还有一些标点符号的忽略,给系统调试带来一点小麻烦。因此,在调试程序的同时,我们也要谨 记 调 试 失 败 的 原 因 , 以 免下 次 犯 同 类 错 误 。5 5、运行结果截屏及说明、运行结果截屏及说明5.15.1 运行结果截屏运行结果截屏游戏初始画面,用户输入自己的选择进入相应的模块:图 5-1选择单人模式,系统自动生成 4 个数字由玩家来猜,只有 8 次机会:7图 5-2在游戏的过程中还会出现系统提示,其中 A 表示数字相同且位置相同,B 表示数字相同而位置不同:图 5-3再输入的过程中,如果输入的数字不符合要求,会有系统提示:8图
8、5-4这个游戏还可以选择双人模式,由 2 个人来玩。其中一个人输入数字请另一个人来猜:图 5-5在数字设置完成后,会转向下一界面:9图 5-6如果对游戏有什么不明白的,还可以选择进入游戏帮助界面:图 5-7在用户选择离开游戏的时候还有一次确认,确保用户不是失误操作:10图 5-85.25.2 使用说明使用说明系统为玩家提供猜数字游戏的主体功能, 由系统自动产生或由用户自己设置4 个随机排列的整数,并给用户 8 次机会猜测数字的数值和排列顺序。如果用户在 8 次之内没有猜出正确的结果,则提示用户游戏失败,否则提示用户猜数字成功。猜 数 字 游 戏 软 件 的 总 体 目 标 是 按 照 特 定
9、游 戏 规 则 为 用 户 提供 一 个 方 便 友 好 的 游 戏 界 面 ,并 且 提 供 相 应 的 帮 助 功 能 。游 戏 规则 如 下 : 游 戏 软 件 随 机 产 生 4 个 数 字 ,但 不 显 示 ,给 用 户 提 供 输 入提 示 符 ,让 用 户 猜 4 个 数 字 的 值 和 位 置 顺 序 。如 果 数 字 值 和 位 置顺 序 均 正 确 ,则 猜 数 字 成 功 。或 者 由 用 户 自 己 设 置 4 个 数 字 ,请他 人 来 猜 , 游 戏 规 则 不 变 。 玩 家 有 8 次 猜 数 字 的 机 会 ,如 果 在 8 次 之 内 仍 末 猜 出 正 确
10、的 数 字 值 和 数 字 位 置 顺 序 , 则 提 示 用 户 游 戏 失 败 。 一 旦 玩 家 在 8 次 的 次 数 限 制 内 猜 出 正 确 的 数 字 值 和 位 置 顺序 , 则 赢 得 游 戏 。11在 进 行 游 戏 的 过 程 中 ,系 统 会 根 据 用 户 输 入 的 数 字 给 出 相 应提 示 ,也 就 是 数 值 、位 置 均 正 确 的 数 字 个 数 和 数 值 正 确 但 位 置 不正 确 的 数 字 个 数 。在 运 行 本 游 戏 软 件 的 时 候 ,在 主 菜 单 中 可 以 找 到 游 戏 帮 助 选项 ,选 择 后 直 接 进 入 帮 助 信
11、 息 界 面 ,用 户 也 可 以 从 那 里 了 解 到 游戏 规 则 和 使 用 方 法 。6 6、心得体会、心得体会C语言课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。在如今高度计算机化的社会下,电脑编程在计算机领域已尤为重要,扮演着一个不可或缺与替代的角色。经过一周的C语言课程设计,我不但实践了课本的知识,还制作了自己的小程序,更重要的是自己对C语言有了更深入的了解。在实践中,深刻体会到只有经过调试程序,我们才能掌握正确的语法知识及把解决问题的方法用程序语言来表达。在设计程序的过程中不仅使我掌握了c
12、语言程序设计基本技能, 同时也增长了翻阅有关文献的能力, 加强了实践能力及自学能力,培养了分析问题 和解决问题的能力。想起这次课程设计的这些日子,至今我仍感慨颇多。以前上课时学的都是一些最基本的东西,觉得很枯燥无味。但当自己能把所学的知识转换为有用的东西时,心中却不知何时有了一种莫名的动力,在电脑前面一坐就是好几个小时。或许这就是有压力才有动力吧!在整整一星期的日子里,面对一件新事物,从理论到实践,可以说是苦多于甜。这一周的课程设计,不仅使我巩固了以前所学过的知识,更使我获得了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把
13、所学的理论知识与实践相结合起来,从实践中得出结论,才能真正掌握好所学知识,才能够实现理论到使用的升华!毕竟这是我进行的第一次课程设计,所以在该过程中遇到问题,可以说是数12不胜数。 此外, 在设计的过程中发现了自己对以前所学过的知识理解得不够透彻、掌握得不够牢固的不足之处。好的学习方法在学习中很多时候都起着至关重要的作用! 尤其是在这次课程设计过程中, 深深地体会到, 善于总结是学习过程中不可缺少的重要的一个环节。每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的调试和运行状况,随时总结,找到自己的错误与不足之处,这样所编写的程序才能逐步提高。就如生活那样,汗水预示着结果也见证着收
14、获。直到实际动手做,我才真正领略到“一份耕耘,一份收获。”这一句话的真正含义。这次的 c 语言设计,对我们而言,知识上的收获重要,但是在一个团队间的团结合作的幕幕更让我们记忆终生。挫折是一份财富,经历是一份拥有。虽然这些日子很短暂但我相信这次实际操作必会成为我人生路上的一段美好的回忆!最后我想对给过我帮助的所有同学和各位指导老师表示忠心的感谢!7 7、附录、附录7.17.1 源代码源代码#include #include #include #include #include /*定义变量及函数*/void c_input(char *str)13int i,j;/*检测输入是否合法*/inpu
15、t:for(i=0;i9)printf(“输入错误,请重新输入:“);goto input;for(j=0;ji;j+)if(stri=strj)printf(“输入错误,请重新输入:“);14goto input;/*显示帮助信息*/void c_help()system(“cls“);printf(“tttt游戏帮助“);printf(“nn本游戏有两种模式。第一种是由电脑自动生成四个不重复的数字,由玩家来猜;第二种“);printf(“n 是由玩家自己设置四个不重复的数字,请他人来猜,在主菜单中选择【双人模式】可进入第“);printf(“n 二种模式。游戏开始后,玩家输入四个不重复的数
16、字,输入后会有提示 XAYB, X 表示有几个“);printf(“n 数字与答案数字相同且位置相同。 Y 表示有几个数字与答案数字相同但位置不正确。例如:“);printf(“n 答案数字是 3792,如果输入 9786,则会提示 1A1B。玩家总共有八次机会来猜数字。“);printf(“nnntttttt 祝您游戏愉快!“);printf(“nn 请按任意键返回主菜单“);15getch();return;/*游戏部分*/*定义变量及函数*/void c_game(const char *temp)int i,j,ci;char in4;char out5=“0A0B“;for(ci=0;ci8;ci+)printf(“第 %d 次输入,你总共有 8 次机会:“,ci+1);c_input(in);for(i=0;i4;i+)if(ini=tempi)out0+;16elsefor(j=0;j4;j+)if(ini=