当前位置:文档之家› c语言程序设计(猜数字游戏)报告

c语言程序设计(猜数字游戏)报告

《高级语言程序设计》课程设计题目:猜数字游戏班级:09软件工程R3学生姓名:***学生学号:************指导老师:***提交时间:2010年5月29日华南农业大学信息(软件)学院《高级语言程序设计》课程设计评分表目录一、猜数字游戏分析。

41.游戏概述。

42.系统运行环境。

43.功能需求描述。

4 二、总体设计。

51.开发和设计的总体思想。

52.程序模块结构图。

53.模块设计。

54.程序流程描述。

65.界面设计。

76.数据结构设计。

12 三、详细设计。

131.文件及函数组成。

132.函数设计。

14 四.程序代码。

171.start.h。

172.start.c。

193.mianzone.c。

254.game zone.c。

325.refreshline.c。

376.reset.c。

407.print.c。

408.count_num.c。

489.intset – del.c。

4910.imageline.c。

49五. 运行结果。

50六、调试分析。

511.情况1。

512.情况2。

513.情况3。

514.情况4。

52 七、总结。

52一、猜数字游戏分析在《猜数字游戏》分析环节中,会对该游戏开发的意图、应用目标、作用范围和有关该软件开发的背景材料进行详细的分析。

《猜数字游戏》作为一个用来进行娱乐、消遣的应用软件,在对其进行需求分析的过程中,需要充分考虑游戏的可用性和娱乐性,联系实际生活,从而得到合理的需求分析的结论。

1.游戏概述该软件为用户提供一个在Windows系统上运行的猜数字游戏,其使用者只有玩家:玩家在运行该程序时,可以浏览游戏自最近一次重置数据记录以来,所保存的游戏记录:分为“排行榜记录”和“成功情况”。

玩家可清空排行榜数据,以重新开始记录游戏成绩。

参加游戏后,游戏将自动刷新游戏记录,重新排行排行榜。

玩家参加游戏前,可浏览帮组功能,了解游戏规则。

2.系统运行环境(1)硬件环境◆处理器:Intel Pentium 166或更高◆内存:32MB以上◆硬盘空间:2G以上◆显卡:SVGA显示适配器(2)软件环境◆操作系统:Windows98/Me/2000/XP/vista/73.功能需求描述猜数字游戏是用来进行娱乐、消遣活动的应用软件。

可进行游戏功能、浏览游戏记录功能和查看游戏帮助功能。

(1) 游戏功能需求如下:◆进行游戏:在游戏提示下输入所要猜测的游戏数字,即可完成游戏。

◆重新开始游戏:在游戏进行中,因不同原因玩家要求输入特定字符串以重新游戏,或放弃游戏且返回主菜单。

◆刷新排行榜:游戏结束后,若玩家成功猜的答案,玩家要求记录自己的用户名和记录,参与新排行榜的排行。

◆输出答案:当玩家在规定次数中不能猜出答案,则玩家要求在游戏结束后得知正确答案。

◆计算赢得游戏所用时间:玩家猜出数字后,要求显示所用时间并记录到排行榜中,以便与其他玩家进行比较和检查自己的提升。

(2) 浏览游戏记录功能需求如下:◆查看排行榜:游戏结束后,玩家需要查看自己的成绩排位,和了解其他玩家的游戏情况。

在不同情况下,玩家想依据成绩循序、用户名循序、所用时间多少进行输出排行榜。

◆count文件:玩家需要查看游戏次数与成功次数的记录。

◆清空排行榜:玩家在一定情况下,要求重新开始记录游戏信息。

◆清空count文件:玩家在一定情况下,要求重新开始记录游戏信息。

(3) 帮组功能需求如下:◆输出游戏规则:玩家需要了解游戏规则。

◆游戏说明:玩家要求更了解游戏的各种功能,以更方便操作程序。

二、总体设计题目要求(1)按照分析、设计、编码、调试和测试过程完成应用程序;(2)学习并使用流程图等工具,并在撰写论文中使用;(3)程序的各项功能在程序运行时,以菜单方式选择并执行;(4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等(5)所有的信息存储在文件中,并实现文件读写操作。

1.开发和设计的总体思想猜数字游戏是一个简易的娱乐游戏,开发设计的重点在于排行榜的跟新。

每次游戏结束后都要对排行榜进行跟新,不可漏掉任何一次跟新。

解决这个问题的方法是将跟新的过程单独写成一个可以独立完成得函数,在每次游戏结束后都必须调用该函数。

关于排行榜的输出问题,游戏将把成绩排行在前十名的玩家信息输出,当排行在十名后的玩家的成绩与第十名的成绩相同,则把与第十名的玩家的成绩相同的用户信息一同输出。

对于排行榜的容量问题,游戏采用自动增删的方法进行处理。

当排行榜存有的用户信息多于十五名时,排行榜将自动删除第十六条用户信息。

对菜单的选择判断要用到程序设计思想中的选择结构,对大量数据的处理要用到循环和文件处理等基本技术。

系统采用结构化的设计方法进行设计,采用C语言进行开发。

2.程序模块结构图依据需求分析结果,猜数字游戏的程序可分为3个模块:游戏区、游戏记录和帮助。

程序模块结构图如图1所示。

3游戏记录模块的作用是为了保障系统的安全性和系统使用人员角色的区分。

该模块需要从输入设备获取用户输入的用户名和密码,判断是否为合法身份,其次要判断用户权限,从而决定其能使用的系统功能,其模块功能图如图2所示。

(3)帮助模块4.程序的主体处理流程如图8所示。

图4 程序流程图5. 界面设计应遵循简洁美观、方便使用的原则。

(1) 主菜单界面设计充分考虑界面易于操作的系统需求,其他的的功能调用采用类似于菜单的功能选择方式实现。

用printf 语句构造简单的文字界面,具体功能选择界面设计效果如图5所示。

图5 主菜单界面设计效果图(2) 游戏区界面设计进入程序开始结束进入游戏赢得游戏Y输出排行榜刷新排行榜Y 继续游戏NN NY重新游戏返回菜单Y Y NN按排名浏览排行榜清空排行榜按姓名浏览排行榜按用时浏览排行榜 清空排行榜 同时重置count文件排行榜count 文件显示count文件信息重置count文件同时清空排行榜清空count文件帮助游戏规则游戏说明返回主菜单游戏记录退出程序游戏区界面设计注重界面的简洁性,要求玩家在游戏时可在游戏提示下完成游戏,重新游戏,放弃游戏回到主菜单,游戏后刷新排行榜,浏览排行榜或继续游戏。

具体设计效果如组图6所示。

图6.1图6.2图6.3组图6 游戏区界面设计效果图(3)数据记录菜单界面与其他菜单界面设计充分考虑界面易于操作的系统需求,其他的的功能调用采用类似于菜单的功能选择方式实现。

用printf语句构造简单的文字界面,具体菜单选择界面设计效果如图7~图12所示。

图7 数据记录菜单界面设计效果图图8 排行榜菜单界面设计效果图图9 重置排行榜菜单界面设计效果图图10 count文件菜单界面设计效果图图11 重置count文件菜单界面设计效果图图12 帮助菜单界面设计效果图(4)排行榜输出界面、显示count文件界面、游戏规矩和游戏说明的输出界面设计这些界面设计主要考虑玩家在浏览信息的清晰和易读性。

以防数据输出的排版长度大于窗口的长度,在输出所有数据后使光标回到窗口的最上端,利于玩家从数据的起始端开始浏览数据。

排行榜的输出中,将名次、用时、成绩(次数)和用玩家姓名列表显示。

具体排行榜输出界面设计效果如图13~图15所示。

图13 按排名顺序输出排行榜界面设计效果图图14 按姓名次序输出排行榜界面设计效果图图15按所用时间排序输出排行榜界面设计效果图count文件的输出界面设计效果如图16所示。

图16 count文件的输出界面设计效果图游戏规则的输出界面设计效果如图17所示。

图17 游戏规则界面设计效果图游戏说明的输出界面设计效果如组图18所示。

图18.1图18.2图18.3组图18 游戏说明的输出界面设计效果图(5)退出游戏界面设计具体退出游戏界面设计效果如图19所示。

图19 退出游戏界面设计效果图6.数据结构设计(1)玩家用户数据结构描述玩家用户的用户名、猜出数字所用次数和游戏所用时间,作为一整条记录存放在文件中。

typedef struct a{char name[22]; //玩家用户名int t; //猜数字所用次数int sj; //游戏所用时间struct a *next;} player;(2)“胜利”信息数据结构记录玩家赢得游戏次数与猜正确平均所需次数,作为一整条记录存放在文件中。

struct winave{int wintime; //总共赢的次数float ave; //才正确平均所用次数};三、详细设计函数原型:main()功能:输出菜单选项参数:void返回值:void要求:明确显示菜单选项,使玩家准确进入相应的游戏功能。

(5)“到达”函数函数原型:void move(int i,int j)功能:使光标回到窗口的特定位置。

参数:int i和int j:特定位置的坐标返回值:void要求:实现程序所需功能。

(6)游戏规则和游戏说明函数函数原型:(7)(8)检查count函数函数原型:void checkcount (char count[ ])功能:检查count的情况,且读取count中数据参数:char count[]:需要读取的数组返回值:void要求:检查count的情况,若存在,则读取其中的数据;若不存在,则重置count 文件。

(9)更新count函数函数原型:void closecount (char count[ ])功能:将count [ ]数组中的数据存储到参数:char count[]:需要存储到文件的数组返回值:void要求:更新count数据。

(10)生成随机数函数函数原型:void creat (char key[ ])功能:生成游戏所需猜的数字参数:char key[]:存储答案的数组返回值:void要求:生成4个不重复的数字。

(11)检查输入函数函数原型:void checknum (char guess[ ])功能:检查输入的数字是否符合规定参数:char guess[]:需检查的玩家猜测的数组返回值:void要求:检查输入的数字是否符合规定,不合规定的要求玩家重新输入;若和规则的,检查与答案的不同,输出提示。

(12)算时函数函数原型:int Time_get checknum(time_t first, time_t second)功能:计算完成游戏所用时间参数:time_t first, time_t second:游戏开始的时间与游戏结束的时间返回值:int a: second与first相差的秒数要求:计算second与first相差的秒数并返回。

(13)游戏函数函数原型:void gamezone()功能:进行游戏参数:void;返回值:void;要求:顺利进行游戏。

(14)更新排行榜函数函数原型:void refresh(char name [ ],int t, int sj)功能:更新排行榜参数:char name [ ],int t, int sj :需要插入的玩家信息(玩家姓名,所用次数,所用时间)返回值:void;要求:若排行榜不存在,则新建排行榜;若存在,则将新加入的信息插入到排行榜中。

相关主题