推箱子游戏报告书.docx
- 文档编号:12609474
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:13
- 大小:199.21KB
推箱子游戏报告书.docx
《推箱子游戏报告书.docx》由会员分享,可在线阅读,更多相关《推箱子游戏报告书.docx(13页珍藏版)》请在冰点文库上搜索。
推箱子游戏报告书
推箱子游戏设计报告书
一、项目背景
本实训要求对“推箱子游戏”进行分析、设计。
本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。
同时,本实训中了解图形界面设计基本技术。
通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。
二、设计目的
本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用VB开发应用程序的基本方法及基本技巧。
三、游戏介绍
本游戏设计了关卡设计器对有难度进行设计,同时用方向键↑↓←→控制小人的移动,空格重新开始,回车选择下一关,pageup上一关,pagedown下一关,Esc退回。
小人移动来推箱子使箱子到达指定位置,如果箱子全部到达指定位置就表示过关
3.1界面设计
3.1.1界面设计原则:
1用户帮助
2向导
3快捷键
4鼠标与键盘对应
5布局合理化
6显示信息一致性
7界面一致性
8美观与协调性
9合理性
10规范性
11易用性
12一般交互
13数据输入
本游戏是一个简单游戏所以只涉及一些简单的界面设计原则.
3.2用户界面
又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。
GUI:
即图形用户界面,一种可视化的用户界面,它使用图形界面代替正文界面。
本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明。
用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便地使用本应用系统。
下面解释说明即为本游戏的简单标签设计
3.3系统编码
3.3.0编程设计原则:
1、排版
2、注释
3、标识符命名
4、可读性
5、变量与结构
6、函数与过程
7、可测性
8、程序效率
9、质量保证
10、代码编辑、编译与审查
11、代码测试与维护
由于本游戏是小游戏所以只需注重1、排版2、注释3、标识符命名4、可读性5、变量与结构6、函数与过程等方面就可以其余原则可忽略.
3.3.1API函数声明
PrivateDeclareFunctionBitBltLib"gdi32"(ByValhDestDCAsLong,ByValXAsLong,_
ByValYAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,_
ByValxSrcAsLong,ByValySrcAsLong,ByValdwRopAsLong)AsLong
3.3.2全局常量
PrivateConstMAXXAsInteger=20
PrivateConstMAXYAsInteger=15
PrivateConstSIZEAsInteger=302
PrivateConstD_LEFTAsInteger=1
PrivateConstD_RIGHTAsInteger=0
PrivateConstD_UPAsInteger=2
PrivateConstD_DOWNAsInteger=3
PrivateConstB_GROUNDAsInteger=&H0
PrivateConstB_DESTAsInteger=&H1
PrivateConstB_BOXAsInteger=&H2
PrivateConstB_WALLAsInteger=&H4
PrivateConstB_BACKAsInteger=&H8
3.3.3全局变量
PrivateMap(MAXX,MAXY)AsInteger
PrivateScenesCountAsInteger,CurrSceneAsInteger
PrivateBoxCountAsInteger,CompletedAsInteger
PrivateXAsInteger,YAsInteger,DirAsInteger
PrivateFileNumAsInteger
PrivateMapLoadingAsBoolean
PrivatePlayingAsBoolean
3.3.4游戏开始
//定义子函数,载入游戏.
PrivateSubForm_Load()
Playing=False
MapLoading=False
InitGame
EndSub
3.3.5游戏初始化
//FileNum代表工作区号,用FreeFile函数返回,载入游戏.返回工作区文件尾号除以size
PrivateSubInitGame()
FileNum=FreeFile
Open"Map.dat"ForBinaryAccessReadAsFileNum
ScenesCount=LOF(FileNum)/SIZE
IfScenesCount=0Then
MsgBox"没有可用的地图文件或文件格式出错,"&vbCrLf&_
"请把可用的Map.dat文件和游戏放在同一目录。
",_
vbOKOnlyOrvbExclamation,"文件读取错误"
End
EndIf
LoadMap1
Playing=True
EndSub
3.3.6读取关卡数据
//调用函数定义坐标,对空间位置操作读出Data数据
PrivateFunctionLoadMap(SceneAsInteger)AsBoolean
IfMapLoadingThenExitFunction
IfScene<1OrScene>ScenesCountThen
LoadMap=False
ExitFunction
EndIf
MapLoading=True
CurrScene=Scene
Caption="推箱子第"&CurrScene&"关"
BoxCount=0:
Completed=0
Dir=0
DimDataAsByte
GetFileNum,(CurrScene-1)*SIZE+1,Data
X=Data
GetFileNum,,Data
Y=Data
DimiAsLong,jAsLong
Fori=0ToMAXY-1
Forj=0ToMAXX-1
GetFileNum,,Data
Map(j,i)=Data
IfMap(j,i)AndB_DESTThenBoxCount=BoxCount+1
Next
Next
DrawMap
LoadMap=True
MapLoading=False
EndFunction
3.3.7选择关卡
//LoadMap调用子过程函数
PrivateSubSelectMap()
DimTempAsInteger
Temp=Val(InputBox("请输入关数(1~"&Trim(ScenesCount)&")","选择一关",1))
IfTemp>=1AndTemp<=ScenesCountThenCurrScene=Temp
LoadMapTemp
EndSub
3.3.8显示整个游戏画面
//画出游戏界面利用坐标
PrivateSubDrawMap()
DimiAsLong,jAsLong
Fori=0ToMAXY-1
Forj=0ToMAXX-1
DrawBoxj,i,Map(j,i)
Next
Next
DrawManX,Y
picMain.Refresh
EndSub
3.3.9显示背景块(包括地面、墙、箱子等)
//多分支语句显示背景
PrivateSubDrawBox(ByValXAsInteger,ByValYAsInteger,ByValBoxTypeAsInteger)
DimOffsetAsInteger
SelectCaseBoxType
CaseB_BACK
Offset=0
CaseB_GROUND
Offset=1
CaseB_DEST
Offset=2
CaseB_BOX
Offset=3
CaseB_WALL
Offset=4
EndSelect
BitBltpicMain.hDC,X*32,Y*32,32,32,picBoxs.hDC,Offset*32,0,vbSrcCopy
EndSub
3.3.10显示小人
PrivateSubDrawMan(ByValXAsInteger,ByValYAsInteger)
BitBltpicMain.hDC,X*32,Y*32,32,32,picMan.hDC,Dir*32,32,vbSrcAnd
BitBltpicMain.hDC,X*32,Y*32,32,32,picMan.hDC,Dir*32,0,vbSrcPaint
EndSub
3.3.11游戏操作(按键处理)
PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
IfNotPlayingThenExitSub
SelectCaseKeyCode
Case37
ManMove-1,0
Case38
ManMove0,-1
Case39
ManMove1,0
Case40
ManMove0,1
Case32
LoadMapCurrScene
Case33
LoadMapCurrScene-1
Case34
LoadMapCurrScene+1
Case13
SelectMap
Case27
UnloadMe
EndSelect
EndSub
3.3.12游戏结束
PrivateSubForm_Unload(CancelAsInteger)
Close
End
EndSub
3.3.13小人移动
PrivateSubManMove(OffsetXAsInteger,OffsetYAsInteger)
DimDestXAsInteger,DestYAsInteger
IfOffsetY=-1Then
Dir=D_UP
ElseIfOffsetY=1Then
Dir=D_DOWN
ElseIfOffsetX=-1Then
Dir=D_LEFT
Else
Dir=D_RIGHT
EndIf
DestX=X+OffsetX:
DestY=Y+OffsetY
IfDestX<0OrDestX>=MAXXOrDestY<0OrDestY>=MAXYThenExitSub
IfMap(DestX,DestY)AndB_WALLOrMap(DestX,DestY)AndB_BACKThenExitSub
IfMap(DestX,DestY)AndB_BOXThen
PushDestX,DestY,OffsetX,OffsetY
Else
DrawManDestX,DestY
DrawBoxX,Y,Map(X,Y)
X=DestX:
Y=DestY
picMain.Refresh
EndIf
EndSub
3.3.14推动箱子
PrivateSubPush(SourceXAsInteger,SourceYAsInteger,OffsetXAsInteger,OffsetYAsInteger)
DimDestXAsInteger,DestYAsInteger
DestX=SourceX+OffsetX:
DestY=SourceY+OffsetY
IfDestX<0OrDestX>=MAXXOrDestY<0OrDestY>=MAXYThenExitSub
IfMap(DestX,DestY)AndB_WALLOrMap(DestX,DestY)AndB_BACKOr_
Map(DestX,DestY)AndB_BOXThenExitSub
Map(SourceX,SourceY)=Map(SourceX,SourceY)-B_BOX
Map(DestX,DestY)=Map(DestX,DestY)+B_BOX
DrawBoxDestX,DestY,B_BOX
DrawBoxSourceX,SourceY,Map(SourceX,SourceY)
DrawManSourceX,SourceY
DrawBoxX,Y,Map(X,Y)
X=SourceX:
Y=SourceY
picMain.Refresh
IfMap(SourceX,SourceY)AndB_DESTThenCompleted=Completed-1
IfMap(DestX,DestY)AndB_DESTThenCompleted=Completed+1
IfCompleted=BoxCountThenWin
EndSub
3.3.15过关处理
PrivateSubWin()
IfMsgBox("你太聪明了!
要继续玩下一关吗?
",vbYesNo,"过关!
")=vbNoThen
UnloadMe
EndIf
IfNotLoadMap(CurrScene+1)Then
IfMsgBox("你已经过了最后一关!
还要继续吗?
",vbYesNo,"真厉害!
")=vbYesThen
LoadMapCurrScene
Else
UnloadMe
EndIf
EndIf
EndSub
四、实训总结
经过这两星期的培训是我获益良多,我的实训内容是理解游戏——推箱子。
在这次实训中,我运用了VB所学的知识,并且能够较熟练的使用一些编程语句。
整个实训中,从理论到实践,学到过很多很多的东西,做这个游戏,巩固了以前所学过的知识,而且还学到了很多在书本上没有学到过的知识。
通过这次实训使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中到应用,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到不少的问题,其中有很多编程问题,起初,我不知道从什么地方入手,后来,慢慢的进入了状态。
我做的是一个推箱子的设计,内容包括很多,经过两星期的努力,我们理解整个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们细节造成的,所以设计程序一定要仔细,不容一点的马虎。
当然也有大问题,关于键的操作的编码,是我最难理解的问题,不过,后来经过查阅资料和请教同学,还是完成了这些任务。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 箱子 游戏 报告书