欢迎来到天天文库
浏览记录
ID:8792124
大小:315.00 KB
页数:21页
时间:2018-04-07
《推箱子游戏课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、目录Ⅰ摘要Ⅱ前言Ⅲ功能描述Ⅳ配置要求Ⅴ总体设计一、功能模块设计二、数据结构设计三、函数功能描述四、代码实现Ⅵ参考文献21Ⅰ摘要推箱子游戏是一款很有趣味的游戏,其开发过程有一定的技巧和方法,其中涉及到软中断、二维数组、键盘操作以及图形化函数等方面的知识。本游戏的开发者需要基本掌握显示器中断寄存器的设置。二维数组及结构体的定义、键盘上键值的获取、图形方式下光标的显示各定位,以及部分图形函数的使用。Ⅱ前言推箱子游戏是目前比较流行的游戏之一,很多操作系统或者流行软件都会带有这种游戏。它既能锻炼思维的严密性,
2、又有很多乐趣。我个人也比较喜欢玩这个游戏,因此,我就借这个机会将这个推箱子游戏用C语言实现了出来,当然,我也借鉴了前人的一些技巧经验。由于时间仓促和本人水平有限,此游戏的制作显得有些粗糙,希望老师能够谅解,我以后将会再接再厉。Ⅲ功能描述本游戏一共4关,由易到难,每一关都有初化、按键处理、重置及退出功能。(1)初始化包括屏幕初始化和每一关卡的初始化,屏幕被初始化宽80像素,高25像素。(2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,从而推动箱子,以把箱子推到指定的目的地为过关
3、。(3)每一关都可以重置,按空格键可以重置当前关。(4)按Esc键可以在任何时候退出游戏。Ⅳ配置要求(1)硬件配置CPU:≥PentiumIII600内存:≥64MB硬盘剩余空间:≥128MB(2)软件环境TurboC2.0及其以上版本21Ⅴ总体设计一、功能模块设计1、系统模块图本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块,如图(一)所示。各个模块的功能描述如下:(1)初始化模块。该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用于输出欢迎信息和操作提
4、示,游戏每一关的初始化是构建每一关的关卡。(2)画图模块。该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。(3)移动箱子模块。该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。(4)移动小人模块。该模块用于控制小人移动,从而推动箱子到目的地。(5)功能控制模块。该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。推箱子游戏初始化模块画图模块移动箱子模块移动小人模块功能控制模块图(一)系统模块图2、任务执行流程
5、图21游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的任何时候按Esc键退出。如果游戏无成功希望,可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关,如果当前关是最后一关,则显示通关信息,提示游戏结束。图(二)显示了任务执行的流程。进入下一关是否继续完成?开始第一关开始按空格键回到任务开始按Esc键退出显示通关信息有无成功希望?是否成功?是否是第4关?否是否是否是是否图(二)任务执行流程图3、小人移动流程图小人移动的方向有4个,move()函数(处理小人移动
6、的函数)对这4个方向移动的处理都一致,只是调用函数时的参数有所不同。首先判断小人移动的方向,然后根据小人所处世的当前状态、下一步状态或者下下一步状态进行适当的处理。处理过程如图(三)所示。21判断移动方向下一步状态为w?下一步状态为m或0?当前状态为m?下一步状态为b?下下一步状态为0?下下一步状态为m?输出空字符、调用printMan()调用printMan()和printDestination()moveBoxSpacetoDes()moveBoxSpacetoSpace()当前状态为m?pri
7、ntDestination()光标移动到下一步处下下一步状态为0?下下一步状态为m?下一步状态为i?是否是否否是是否否否是是否是是否否否是是图(三)小人移动流程图21moveBoxDestoSpace()moveBoxDestoDes()当前状态为m?printDestination()光标移动到下一步处读取下一键否是续图(三)小人移动流程图二、数据结构设计1、设置全局变量定义二维数组charstatus[20][20],用于记录屏幕一各点的状态。其中,“0”表示什么都没有,“b”表示箱子,“w”表
8、示目的地,“i”表示箱子在目的地。首先将屏幕20*20范围内的状态初始化为0,然后根据具体情况,在画箱子时,将箱子所在点的状态改为“b”;在画墙壁时,将墙壁所在点的状态改为“w”;在画目的地时,将目的地所在点的状态改为“m”;当箱子被推到目的地时,箱子所在点的状态改为“i”,如果每一关中所有目的地的状态都为“i”,则说明该关已完成。定义全局变量,charfar*printScreen=(charfar*)0xB,用于在屏幕上输出字符。彩色显示器的字符缓冲区首地址为0x
此文档下载收益归作者所有