1 课程设计目的与要求    1
1.1 课程设计目的    1
1.2 课程设计的实验环境    1
1.3 课程设计的预备知识    1
1.4 课程设计要求    1
2 课程设计内容    2
2.1 游戏介绍    2
2.2 游戏设计    2
2.3 游戏实现    12
3 课程设计总结    14
参考文献    16
第1章
课程设计目的与要求
1.1 课程设计目的
本课程的课程设计实际是学生学习完《可视化编程技术》课程后,进行的一次全面的综合训练,其目的在于加深对可视化编程技术基本知识的理解,掌握运用VB开发应用程序的基本方法及基本技巧。
1.2 课程设计的实验环境
硬件要求能运行Windows 9.X操作系统的微机系统。
软件:Microsoft Visual Basic 6.0
1.3 课程设计的预备知识
熟悉Visual Basic 6.0程序设计的基本语法知识及常用技巧。
1.4 课程设计要求
按课程设计指导书提供的课题,每个小组设计一个完整的小游戏应用程序。要求根据规定设计游戏的具体要求,按照应用程序的设计步骤和VB的基本知识应用程序的分析与实现。应根据后面给出的基本学时分配合理安排设计时间,并独立完成各方面的设计。选择同一题目的同学,可以共同协作完成一个应用程序的开发任务。要求书写详细的设计说明书,对有复杂的代码段和程序段的部分,应画出程序流程图,写出全部的代码。在界面设计中,需画出每个窗体的布局,进行属性说明,杜绝雷同。
第2章
课程设计内容
2.1游戏介绍
2.1.1 游戏规则
    游戏要求:游戏开始时自动进入第一关,状态栏里显示操作提示。可以通过方向键控制小人的移动,按空格键重新开始本关,或者用回车键、翻页键选择其他关;当按下<Esc>键时退出本游戏。在移动过程中,如果前方是一个箱子,并且箱子的前面没有墙或其他箱子阻挡,那么就可以把它向前推动一格。游戏的任务是把所有的箱子都推到标记处。
2.1.2 游戏说明
游戏的意图是要求玩家推动箱子完成三个箱子任务,左右键用于走动,SHIFT键用于推动箱子,CONTROL用于跳,SHIFTCONTROL是推动箱子一起跳,若游戏失败可重新开始游戏。
2.2游戏设计
2.2.1 界面设计
2-1界面设计
2.2.2 属性设置
Form1(map.frm)属性值:
控件名
Form1.Form
Hscroll1.
HScrollBar
Pictrue1.PictureBox
Label2.Label
属性值
Name
Form1
Hscroll1
Picture1
Label2
BackColor
&H8000000F&
&H8000000F&
&H8000000F&
Caption
Menace Map editor
Left
Value
1
Visible
True
True
True
True
frmBlt(BLT.FRM)属性值:
控件名
frmBlt.Form
Timer1.timer
属性值
Name
frmBlt
Timer1
BackColor
&H8000000F&
Caption
Menace
Enabled
True
False
Interbal
100
   
Splash(splash.frm)属性值:
控件名
Command1mandButton
Image1.Image
Label1.label
Splash.Form
属性值
Name
Command1
Image1
Label1
splash
Appearance
1-3D
1-3D
1-3D
1-3D
Caption
Play Menace
The left and right arrows walk menace. 
Menace
Visible
True
True
True
True
Cancel
False
BorderStyle
0-None
0-None
2-Sizable
自学vb推荐书籍2-2属性设置
2.2.3 编程思路及代码
游戏思路:使用棋盘法设计推箱子游戏
  “棋盘”游戏的种类丰富,俄罗斯方块,推箱子,象棋,五子棋......等等这些都可以归类到“棋盘”游戏中来。面对这类游戏设计的时候,我本人的见解是首先对“棋盘”做研究,实在不行再去研究“棋子”。换句话说,就是以游戏中的活动区域为研究对象,像象棋就是他的棋盘,俄罗斯方块就是他整个的方块的活动区域。我们这里姑且就把他叫做“棋盘法”。
    一. “棋盘法”基本实现方法     
    “棋盘法”实现起来其实很简单,一般来说就是把棋盘看作一个网格,那么我们就把他看作与之对应的二维数组。然后适当组织数据结构去抽象旗子,制定规
则,这样就很容易实现游戏。
    二. “棋盘法”的优缺点
    任何一个算法或思想都是有优缺点的,而我们的“棋盘法”的最大优点就是可以方便我们组织数据结构,简化了游戏规则的编写,使我们编程时思路比较清晰直观,通常就是直接根据游戏实际规则编写就可以了,这个我们会以实例加以说明。然而他最大的缺点就是可能耗费大量内存,试想,如果我们的棋盘规格很大,那我们就得开辟一个比较大的二维数组,并且如果你要将代码移植到单片机,ARM等硬件平台上。那你就不得不考虑自己的方法问题,在这些硬件平台上内存资源是极其宝贵的。也许有朋友会说那在PC机上总可以的。的确现在PC机资源丰富,功能强大,可有时候还是不能如你所愿。一个很经典的例子就是五子棋的人工智能,为了让五子棋在人机对战中具备攻防兼备的智能,我们只有开辟
一个于棋盘规格相呼应的二维的树组来记录棋盘上各点的胜算几率,(有兴趣的朋友可以到网上去资料)这样的话,在DOS下你就只能开辟一个约 10X10 的棋盘,即使在WINDOWS下也只能大约 16 X 16 的棋盘。(当然,这里是说直接开辟数组,采用特别技术的不算)。所以说,这个“棋盘法”也是有他自己的限制的。
游戏代码:
Form1(map.frm)代码:
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As
Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。