- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计方案书训练大作业报告——控制台游戏
大连理工大学程序设计训练总结报告
控制台游戏——2048
学生姓名: 刘阳
院系班级: 电计1203
学 号 : 201281303
联系电话: 188-4085-1891
Email : rick@mail.dlut.edu.cn
完成日期: 2014 年 7 月1 日
一、 设计任务
设计目标:完成一个控制台小游戏,其中包括游戏、排名、存档和读档等功能。
选题意义:2048是最近最流行的小游戏之一,益智益趣,通过C语言控制台仿写这个游戏,可以锻炼编程框架思想以及技巧,同时将所学到的数据结构等知识灵活的运用。
目标实现的系统功能:完成2048游戏主体,可查看各玩家排名情况,可查看玩家平均水平,可存档、读档。
二、 程序设计与实现
1. 结构框图
设计的控制台游戏2048结构图如图一所示。
图1. 2048游戏框图
2. 功能模块设计及其流程图
(1) 数据描述与存储
游戏模块数据采用二维数组存放,并且不断根据按键信息更新其中数据。存储时以二进制文件存储,数据文件位于工程文件夹中load1.dat以及load2.dat(此时的步数以及分数存储在load1_step.dat、load2_grade、load2_step.dat、load2_grade)。读取数据的目的是可以继续之前没有完成但存档了的游戏。
分数模块数据采用结构体数组存放,用typedef定义了StepRecord和GradeRecord。StepRecord中name[15]代表玩家在步数排行榜中的名字,step代表玩家所坚持的步数;GradeRecord中name[15]代表玩家在分数排行榜中的名字,grade代表玩家取得的分数(分数计算规则见说明)。存储时以二进制文件存储,数据文件位于工程文件夹中step_rank.dat、grade_rank.dat。读取数据的目的是将新的数据加入排行榜或者读取并显示排行榜。
(2) 主要功能模块设计及其流程图
函数原型1 int HideCursor()
函数功能:隐藏光标,减少游戏中的闪烁。
入口参数(形参):void
出口参数(实参):void
算法描述(即实现步骤):
函数原型2 int gotoxy(int x,int y)
函数功能:隐藏光标,减少游戏中的闪烁。
入口参数:int x,int y
出口参数:实际点的坐标。
算法描述:运用api函数,GetStdHandle获取标准输出设备句柄,SetConsoleCursorPosition设置控制台光标位置并输出。
函数原型3 int draw_map()
函数功能:绘制游戏地图以及提示信息。
入口参数:void
出口参数:void
算法描述:利用for循环以及gotoxy函数绘制边框,再通过对文件的操作读取当前最高分显示在屏幕上。
函数原型4 int draw_cover(int x)
函数功能:绘制游戏中出现的各级菜单(通过参数x控制具体绘制哪一种)。
入口参数:int x
出口参数:数字1~3
算法描述:同样利用for循环和gotoxy函数,绘制出菜单边框,通过参数x的值决定绘制的内容。
函数原型5 int quntity(int x)
函数功能:获取数据文件中记录个数。
入口参数:int x
出口参数:1或2
算法描述:利用指针定位函数fseek,文件打开时,指针位于文件首第一个字节,调用fseek函数把指针移到文件末尾,再调用ftell()返回指针当前所在位置,这个返回值是文件长度,再根据参数x的值用它除以类型StepRecord或者GradeRecord的长度,得到记录个数。
函数原型6 int read_record(int x,int a[4][4],int b[2])
函数功能:读取游戏存档。
入口参数:int x,int a[4][4],int b[2]
出口参数:x值为1或2,保存游戏数据的二维数组a[4][4],保存步数step和分数grade的数组b[2]。
算法描述:通过参数x的控制以读的方式打开相应的数据文件,将游戏数据信息读取到数组a[4][4]中,将分数等信息读取到b[2]中。
函数原型7 int read_rank(int x,int num)
函数功能:读取游戏排名
入口参数:int x,int num
出口参数:x值为1或2,num为数据文件中记录个数
算法描述:通过参数x的控制以读的方式打开相应的数据文件,将排名数据存入相应数组中,再通过gotoxy函数以及for循环打印。
函数原型8
文档评论(0)