烟台工程职业技术
系专业级
课程设计(论文)课程设计(论文)设计
题
目:推箱子游戏设计
指导教师(签名)指导教师(签名)二○一一年七月十四日
推箱子游戏设计
摘要:摘要:推箱子游戏是一款很有趣味的游戏,其开发过程有一定的技巧和方法,其中涉及到软中断、二维数组、键盘操作以及图形化函数等方面的知识。本游戏的开发者需要基本掌握显示器中断寄存器的设置。二维数组及结构体的定义、键盘上键值的获取、图形方式下光标的显示各定位,以及部分图形函数的使用。
前言
推箱子游戏是目前比较流行的游戏之一,很多操作
系统或者流行
软件都会带有这种游戏。它既能锻炼思维的严密性,又有很多乐趣。我个人也比较喜欢玩这个游戏,因此,我就借这个机会将这个推箱子游戏用java语言实现了出来,当然,我也借鉴了前人的一些技巧经验。由于时间仓促和本人水平有限,此游戏的制作显得有些粗糙,希望老师能够谅解,我以后将会再接再厉。
一、
程序总体设计及代码(一)程序流程图、
本游戏共有50关,由易到难,每一关都有初始化、按键处理、重置及退出功能。推箱子游戏主要分为初始化模块、画图模块、移动箱子模块、移动小人模块、功能控制模块。1、初始化模块。初始化模块。该模块包括屏幕初始化和游戏第一关的初始化。2、画图模块。画图模块。该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。3、移动箱子模块。移动箱子模块。该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。4、移动小人模块。移动小人模块。该模块用于控制小人移动,从而推动箱子到目的地。5、功能控制模块。功能控制模块。该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。
推箱子游戏
初始化模块块模图画
移动箱子模块块模人小动
移能控制模块
功
图一系统模块图
、(二)程序重自定义类说明
1、重来:重新开始当前关;重来;2、悔一步:返回上一次移动状态(可以连续返回多步)悔一步3、第一关:游戏系统默认开始关为第一关,次按钮可以将关从其他关跳跃到第第一关一关;4、上一关:返回当前关的上一关;上一关5、下一关:返回当前关的下一关;下一关:6、最终关:跳跃到最后一关,即第50关;最终关:7、选关:选择要想玩的关;选关::默认为开,点击自动关闭音乐和开启音乐;8、音乐关(开)音乐关(9、更换音乐:从不同的音乐中选适合的音乐;更换音乐、(三)数据结构设计1、设置全局变量定义二维数组charstatus[20][20],用于记录屏幕一各点的状态。其中,“0”表示什么都没有,“b”表示箱子,“w”表示目的地,“i”表示箱子在目的地。首先将屏幕20*20范围内的状态初始化为0,然后根据具体情况,在画箱子时,将箱子所在点的状态改为“b”;在画墙壁时,将墙壁所在点的状态改为“w”;在画目的地时,将目的地所在点的状态改为“m”;当箱子被推到目的地时,箱子所在点的状态改为“i”,如果每一关中所有目的地的状态都为“i”,则说明该关已完成。定义全局变量,charfar*printScreen=(charfar*)0xB8000000,用于在屏幕上输出字符。彩色显示器的字符缓冲区首地址为0xB8000000,每一个字符占2个字节(第一个字节为ASCII值,第二个字节为颜色值),字符模式下屏幕宽80像素,高25像素,一屏可以写80*25个字符。2、定义结构体typedefstructwiner{intx;inty;structwiner*p;
}winer;
定义结构体structwiner用于判断每一关是否已完成。其中x用于存放目的地的横坐标,y用于存放目的地的纵坐标。如果所有表示目的地坐标对应的状态都为“i”,即箱子在目的地,则表示已经过关,可以进入下一关。该结构体的初始化在每一关的初始化时进行。、(三)函数功能描述1、putoutChar()函数原型:voidputoutChar(inty,intx,charch,charfc,charbc)putoutChar()函数在屏幕上的指定位置输出指定的字符。其中,x、y指明输出的位置,ch表示输出的字符,fc表示输出的字符颜色,bc表示背景色。2、printWall()函数原型:voidprintWall(intx,inty)printWall()函数用于画墙壁,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画绿色墙,用小方块表示墙(ASCII值为219)。3、printBox()函数原型:voidprintBox(intx,inty)printBox()函数用于在非目的地画箱子,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景白色箱子,用ASCII值为10的字符表示箱子。4、printBoxDes()函数原型:voidprintBoxDes(intx,inty)printBoxDes()函数用于在目的地画箱子,传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画黄色箱子,仍用ASCII值为10的字符表示箱子。5、printDestination()函数原型:voidprintDestination(intx,inty)printDestination()函数用于画目的地,传入参数x、y指明位置。该函数