ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:110.93KB ,
资源ID:19450478      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19450478.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(推箱子游戏设计报告书Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

推箱子游戏设计报告书Word格式文档下载.docx

1、(4)按ESC键可以在任何时候退出游戏。总体设计:1.功能模块设计(1)系统模块图本设计包括5个模块,分别是初始化模块、图画模块、移动箱子模块、移动小人模块和功能控制模块,如图1所示。各个模块的功能描述如下。1)初始化模块该模块包括屏幕初始化和游戏每一关的初始化。屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。2)图画模块。该模块主要是被其他模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。3)移动箱子模块该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。4)移动小人模块该模块用于控制小人移动,从而推动箱子到目的地。5)功能

2、控制模块该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。图1 系统模块图(2)任务执行流程图游戏从第一任务开始(第一关),按上下左右方向键控制小人移动来推动箱子,可以在游戏中的任何时候按Esc键退出。如果游戏无成功希望,可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关,如果当前关是最后一关,则显示通关信息,提示游戏结束。图2显示了任务执行的流程图。(3)小人移动流程图小人移动的方向有四个,move()函数(处理小人移动的函数)对这4个方向移动的处理都一致,只是调用函数时的参数有所不同。首先判断小人移动的方向,然后根据小人所处的当前状态、下一

3、步状态或者下下一步状态进行适当的处理。处理过程如图3所示。图2 任务执行流程图图3 小人移动流程图2.数据结构设计(1)设置全局变量定义二维数组char status2020,用于记录屏幕上各点的状态。其中,“0”表示什么都没有,“b”表示箱子,“m”表示目的地,“i”表示箱子在目的地,“w”表示墙壁。首先将屏幕2020范围内的状态初始化为0,然后根据具体情况,在画箱子时,将箱子所在点的状态改为“w”;在画目的地时,将目的地所在点的状态改为“m”;当箱子被推到目的地时,箱子所在点的状态为“i”,如果每一关中所有目的地的状态都为“i”,则说明该关已完成。 定义全局变量,char far *pri

4、ntScreen=(char far*)0XB8000000,用于在屏幕上输出字符。彩色显示器的字符缓冲区首地址为0XB8000000,每个字符占2字节(第一个字节为ASCII值,第二个为颜色值),字符模式下屏幕宽80列,高25行,一屏可以写8025个字符。(2)定义结构体typedef struct winer int x;int y;struct winer *p;winer; 定义结构体struct winer用于判断每一关是否完成。其中x用于存放目的地的横坐标,y用于存放目的地的纵坐标。如果所有表示目的地的坐标对的状态都为“i”,即箱子在目的地,则表示已经通关,可以进入下一关。该结构体

5、的初始化在每一关的初始化时进行。3.函数功能描述(1)putoutChar()函数原型:void putoutChar(int y,int x, char ch.char fc,char bc)putoutChar()函数在屏幕上的指定位置输出指定的字符。其中,x、y指明输出的位置,ch表示输出的字符,fc表示输出的颜色,bc表示输出的背景颜色。(2)printWall()void printWall(int x,int y)printWall()函数用于画墙壁,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画绿色墙,用小方块表示墙(ASCII码值为219)(

6、3)printBox()void printBox(int x,int y)printBox()函数用于在非目的地画箱子,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画白色箱子,用ASCII值为10的字符表示箱子。(4)printBoxDes()void printBoxDes(int x, int y)printBoxDes()函数用于在目的地画箱子,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画黄色箱子,仍用ASCII值为10的字符表示箱子。(5)printDestination()printDestination(i

7、nt x,int y)printDestination()函数用于画目的地,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画黄色目的地,用心型表示(ASCII值为003)。(6)printDestination1()void printDestination1(int x, int y,winer*win , winer *pw)printDestination1()函数与printDestination()函数功能基本相同,都是画目的地函数,但是printDestination1()增加了记录每个目的地位置的功能。其中x、y指明目的地的位置,每一关的所有目的

8、地位置存放在结构体struct winer中,形成一条链表,*winer返回链表的头,*pw则指向链表的尾部。(7)printMan()void printMan(int x , int y)printMan()函数用于画小人。X、y指明画的位置。该函数通过软中断来实现,首先设置寄存器的高位和低位,设置高位0xa表示在光标位置显示字符;设置低位02(ASCII值),表示输出的字符;然后设置寄存器CX为01,表示重复输出的次数,这里只输出一次;最后产生类型为0x10的中断,表示显示器输出。(8)init()void init()init()函数用于初始化屏幕。该函数首先用两个for循环初始化屏幕

9、2020范围内的状态,初始化为0 ,以后根据实际情况重新赋值;然后设置屏幕输出状态,设置寄存器AX的高位为0,低位为3,表示以8025的彩色方式显示;最后移动光标到指定位置输出屏幕欢迎信息。(9)初始化游戏winer *initStep1()、winer *initStep2()、winer *initStep3()、winer *initStep4()这几个函数分别初始化游戏第一关到第四关。这些函数的功能和实现步骤相似。首先根据需要在制定的位置画墙壁和画箱子,在这里可以设置游戏的难度,初始化的墙壁越复杂,箱子越多,则游戏就越难。游戏的第一至第四关难度依次增加。然后分别调用printDesti

10、nation1() 和printMan()函数画目的地和小人。函数返回包含各个目的地位置的链表。(10)移动箱子void moveBoxSpacetoSpace(int x,int y,char a)、void moveBoxDestoSpace(int x,int y,char a)、void moveBoxSpacetoDes(int x,int y,char a)、void moveBoxDestoDes(int x,int y,char a)。这几个函数实现的功能分别是从空地移动箱子到空地、从目的地到空地、从空地到目的地、从目的地到目的地移动箱子。X、y指明小人的当前所处的位置,字符a

11、表示移动的方向,有“u”“d”“r”“l”四个值,分别表示向上、向下、向右、向左移动。这几个函数的实现原理大致相似。对于前面两个函数,首先判断移动的方向,从小人所处的位置沿着移动方向移动一步画小人,移动两步画箱子(11)judge()(12)move()(13)函数原型:judge()(14)reset()void reset(int i)Reset()函数的功能是重置当前关。该函数首先判断当前关是第几关,然后调用init()函数和初始化当前关的函数进行重置。(15)main()主函数首先设置寄存器AX的高位和低位,显示器软中断,进行显示状态的设置,初始化屏幕,初始化第一关,并显示欢迎信息。然后根据按下的键(bioskey(0)函数返回按下的键)进行处理,处理过程由move()函数进行(如果按下ESC键,则退出程序)。对于每一关,如果所有的表示目的地位置的状态都由“m”变为“i”,则表示通过该关,可以进入下一关。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1