推箱子游戏报告书由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“推箱子游戏设计报告”。
推箱子游戏设计报告书
一、项目背景
本实训要求对“推箱子游戏”进行分析、设计。
本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。
通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。
二、设计目的本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用VB开发应用程序的基本方法及基本技巧。
三、游戏介绍
本游戏设计了关卡设计器对有难度进行设计,同时用方向键↑↓←→控制小人的移动,空格重新开始,回车选择下一关,page up 上一关,page down 下一关,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.1 API函数声明
Private Declare Function BitBlt Lib “gdi32”(ByVal hDestDC As Long, ByVal X As Long, _ ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _ ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long)As Long 3.3.2 全局常量
Private Const MAXX As Integer = 20 Private Const MAXY As Integer = 15 Private Const SIZE As Integer = 302 Private Const D_LEFT As Integer = 1 Private Const D_RIGHT As Integer = 0 Private Const D_UP As Integer = 2 Private Const D_DOWN As Integer = 3 Private Const B_GROUND As Integer = &H0 Private Const B_DEST As Integer = &H1 Private Const B_BOX As Integer = &H2 Private Const B_WALL As Integer = &H4 Private Const B_BACK As Integer = &H8 3.3.3全局变量
Private Map(MAXX, MAXY)As Integer Private ScenesCount As Integer, CurrScene As Integer Private BoxCount As Integer, Completed As Integer Private X As Integer, Y As Integer, Dir As Integer Private FileNum As Integer Private MapLoading As Boolean Private Playing As Boolean 3.3.4 游戏开始 //定义子函数,载入游戏.Private Sub Form_Load()Playing = False MapLoading = False InitGame End Sub 3.3.5游戏初始化
//FileNum代表工作区号,用FreeFile函数返回,载入游戏.返回工作区文件尾号除以size Private Sub InitGame()FileNum = FreeFile Open “Map.dat” For Binary Acce Read As FileNum ScenesCount = LOF(FileNum)/ SIZE If ScenesCount = 0 Then MsgBox “没有可用的地图文件或文件格式出错,” & vbCrLf & _ “请把可用的 Map.dat 文件和游戏放在同一目录。”, _ vbOKOnly Or vbExclamation, “文件读取错误” End End If LoadMap 1 Playing = True End Sub 3.3.6读取关卡数据
//调用函数定义坐标,对空间位置操作读出Data数据 Private Function LoadMap(Scene As Integer)As Boolean If MapLoading Then Exit Function If Scene ScenesCount Then LoadMap = False Exit Function End If MapLoading = True CurrScene = Scene Caption = “推箱子 第” & CurrScene & “关” BoxCount = 0: Completed = 0 Dir = 0 Dim Data As Byte Get FileNum,(CurrScene1 For j = 0 To MAXX1 For j = 0 To MAXX1 Case 34 LoadMap CurrScene + 1 Case 13 SelectMap Case 27 Unload Me End Select End Sub 3.3.12游戏结束
Private Sub Form_Unload(Cancel As Integer)Close End End Sub 3.3.13小人移动
Private Sub ManMove(OffsetX As Integer, OffsetY As Integer)Dim DestX As Integer, DestY As Integer If OffsetY =-1 Then Dir = D_UP ElseIf OffsetY = 1 Then Dir = D_DOWN ElseIf OffsetX =-1 Then Dir = D_LEFT Else Dir = D_RIGHT End If DestX = X + OffsetX: DestY = Y + OffsetY If DestX = MAXX Or DestY = MAXY Then Exit Sub If Map(DestX, DestY)And B_WALL Or Map(DestX, DestY)And B_BACK Then Exit Sub If Map(DestX, DestY)And B_BOX Then Push DestX, DestY, OffsetX, OffsetY Else DrawMan DestX, DestY DrawBox X, Y, Map(X, Y)X = DestX: Y = DestY picMain.Refresh End If End Sub 3.3.14推动箱子
Private Sub Push(SourceX As Integer, SourceY As Integer, OffsetX As Integer, OffsetY As Integer)Dim DestX As Integer, DestY As Integer
DestX = SourceX + OffsetX: DestY = SourceY + OffsetY
If DestX = MAXX Or DestY = MAXY Then Exit Sub If Map(DestX, DestY)And B_WALL Or Map(DestX, DestY)And B_BACK Or _ Map(DestX, DestY)And B_BOX Then Exit Sub
Map(SourceX, SourceY)= Map(SourceX, SourceY)1 If Map(DestX, DestY)And B_DEST Then Completed = Completed + 1 If Completed = BoxCount Then Win End Sub 3.3.15过关处理 Private Sub Win()If MsgBox(“你太聪明了!要继续玩下一关吗?”, vbYesNo, “过关!”)= vbNo Then Unload Me End If If Not LoadMap(CurrScene + 1)Then If MsgBox(“你已经过了最后一关!还要继续吗?”, vbYesNo, “真厉害!”)= vbYes Then LoadMap CurrScene Else Unload Me End If End If End Sub
四、实训总结
经过这两星期的培训是我获益良多,我的实训内容是理解游戏——推箱子。在这次实训中,我运用了VB所学的知识,并且能够较熟练的使用一些编程语句。整个实训中,从理论到实践,学到过很多很多的东西,做这个游戏,巩固了以前所学过的知识,而且还学到了很多在书本上没有学到过的知识。通过这次实训使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中到应用,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到不少的问题,其中有很多编程问题,起初,我不知道从什么地方入手,后来,慢慢的进入了状态。我做的是一个推箱子的设计,内容包括很多,经过两星期的努力,我们理解整个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们细节造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于键的操作的编码,是我最难理解的问题,不过,后来经过查阅资料和请教同学,还是完成了这些任务。