【VB开源代码栏目提醒】:本文主要为网学会员提供“VB 推箱子 - 技术总结”,希望对需要VB 推箱子 - 技术总结网友有所帮助,学习一下!
辽 宁 工 业 大 学 可视化编程技术 课程设计
论文 题目 推箱子 院系 专业班级 学 号 学生姓名 指导教师 教师职称 助教 起止时间2007.12.3至2007.12.16 课程设计
论文任务及评语 院系软件学院 教研室
网络教研窒 学 号 学生姓名 专业班级 课程设计
论文题目 推箱子 课程设计
论文任务 课程设计任务及要求 1、掌握
VB程序设计语言的基础知识。
2、设计所选择的题目对具体功能进行详细的分析根据游戏的要求在
VB中设计窗体界面使其合理化。
3、了解部分API函数的功能掌握调用API函数的方法。
4、编写
代码实现游戏的功能。
5、通过调试程序加深对
VB编程的基本技巧及方法的理解。
课程设计过程中要严格遵守实践环节的时间安排听从指导教师的指导。
正确地完成上述内容记录实习
日记规范完整地撰写出课程设计
论文。
指导教师评语及成绩 成绩 指导教师签字 2007 年 12 月 21 日 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 目 录 第1章 课程设计目的与要求 .....................................................................................................1 1.1 课程设计目的 .......................................................................................................1 1.2 课程设计的实验环境 ............................................................................................1 1.3 课程设计的预备知识 ............................................................................................1 1.4 课程设计要求 .......................................................................................................1 第2章
课程设计内容 ...................................................................................................2 2.1 游戏介绍 ...............................................................................................................2 2.2 游戏设计 ...............................................................................................................2 2.3 游戏实现 ...............................................................................................................17 第3章 课程设计总结 ...................................................................................................19 参考文献 ............................................................................................................................20 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 1 第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章 课程设计内容 2.1游戏介绍 2.1.1 游戏规则 游戏要求游戏开始时自动进入第一关状态栏里显示操作提示。
可以通过方向键控制小人的移动按空格键重新开始本关或者用回车键、翻页键选择其他关当按下ltEscgt键时退出本游戏。
在移动过程中如果前方是一个箱子并且箱子的前面没有墙或其他箱子阻挡那么就可以把它向前推动一格。
游戏的任务是把所有的箱子都推到标记处。
2.1.2 游戏说明 The aim of the game is to push trollies containing the same shape together into groups of three. The left and right arrows walk menace. By holding down shift you can push trollies The Control key jumps menace Shift and Control will push trollies high up. R - restarts the level if you are stuck. 2.2游戏设计 2.2.1 界面设计 1 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 3 2 2.2.2 属性设置 Form1map.frm属性值 控件名 Form1.Form Hscroll1. HScrollBar Pictrue1.PictureBox Label2.Label 属性值 Value 1 BackColor ampH8000000Famp ampH8000000Famp ampH8000000Famp Caption Menace Map editor Left Name Form1 Hscroll1 Picture1 Label2 Visible True True True True frmBltBLT.FRM属性值 控件名 frmBlt.Form Timer1.timer 属性值 Name frmBlt Timer1 Interbal 100 Caption Menace Enabled True False BackColor ampH8000000Famp Splashsplash.frm属性值 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 4 控件名 Command1.commandButton Image1.Image Label1.label Splash.Form 属性值 Visible True True True True Appearance 1-3D 1-3D 1-3D 1-3D Caption Play Menace The left and right arrows walk menace. By holding down shift you can push trollies Menace Name Command1 Image1 Label1 splash Cancel False BorderStyle 0-None 0-None 2-Sizable 2.2.3 编程思路及
代码 游戏思路 游戏
代码 Form1map.frm
代码 Private Declare Function CreateCompatibleDC Lib quotgdi32quot ByVal hdc As Long As Long Private Declare Function DeleteDC Lib quotgdi32quot ByVal hdc As Long As Long Private Declare Function DeleteObject Lib quotgdi32quot ByVal hObject As Long As Long Private Declare Function GetObject Lib quotgdi32quot Alias quotGetObjectAquot ByVal hObject As Long ByVal nCount As Long lpObject As Any As Long Private Declare Function SelectObject Lib quotgdi32quot ByVal hdc As Long ByVal hObject As Long As Long Private Declare Function GetDC Lib quotuser32quot ByVal hwnd As Long As Long Private Declare Function LoadImage Lib quotuser32quot Alias quotLoadImageAquot ByVal hInst As Long ByVal lpsz As String ByVal un1 As Long ByVal n1 As Long ByVal n2 As 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 5 Long ByVal un2 As Long As Long Private Declare Function StretchBlt Lib quotgdi32quot 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 quotuser32quot ByVal bShow As Long As Long Const ResolutionX 640 Const ResolutionY 480 Dim dd As DirectDraw2 Dim ddsdFront As DDSURFACEDESC Dim ddsFront As DirectDrawSurface2 Dim ddsBack As DirectDrawSurface2 Dim aDDS As DirectDrawSurface2 Dim tDDS As DirectDrawSurface2 Dim ddCaps As DDSCAPS Dim fx As DDBLTFX Dim spnx40 spny40 spnw40 spnh40 spnox40 spnoy40 Dim mode anim animshift bname30 bcells30bchar30 30 bxo30 30byo30 30blockx30 blocky30blockcell30blockmode30 blockcount level Dim map40 6 As Integer Dim mapl mapv Private Function CreateDDSFromBitmapdd As DirectDraw2 ByVal strFile As String As DirectDrawSurface2 Dim hbm As Long Dim bm As BITMAP Dim ddsd As DDSURFACEDESC Dim dds As DirectDrawSurface2 Dim hdcImage mhdc clr As Long hbm LoadImageByVal 0amp strFile IMAGE_BITMAP 0 0 LR_LOADFROMFILE Or LR_CREATEDIBSECTION 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 6 GetObject hbm Lenbm bm With ddsd .dwSize Lenddsd .dwFlags DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH .DDSCAPS.dwCaps DDSCAPS_OFFSCREENPLAIN .dwWidth bm.bmWidth .dwHeight bm.bmHeight End With dd.CreateSurface ddsd dds Nothing hdcImage CreateCompatibleDCByVal 0amp SelectObject hdcImage hbm dds.Restore dds.GetDC mhdc StretchBlt mhdc 0 0 ddsd.dwWidth ddsd.dwHeight hdcImage 0 0 bm.bmWidth bm.bmHeight SRCCOPY clr GetPixelmhdc 0 0 dds.ReleaseDC mhdc DeleteDC hdcImage DeleteObject hbm Dim mhddck As DDCOLORKEY mhddck.dwColorSpaceLowValue clr mhddck.dwColorSpaceHighValue clr dds.SetColorKey DDCKEY_SRCBLT mhddck Set CreateDDSFromBitmap dds End Function Private Sub Form_KeyDownKeyCode As Integer Shift As Integer If mode 1 Or mode 2 Then walking left or right Select Case KeyCode Case vbKeyR loadlevel level 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 7 Case vbKeyControl Select Case Shift Case 2 If mode 1 Then mode 5 Else mode 7 anim 0 animshift 0 dont shift blocks Case 3 If mode 1 Then mode 5 Else mode 7 anim 0 animshift 1 End Select Case vbKeyEscape blnend True Case vbKeyLeft Select Case Shift Case 0 mode 1 anim anim 1 If anim gt 7 Then anim 1 If mapmapl 294 60 mapv 60 0 Then mapl mapl - 6 End If If mapl lt -300 Then mapl -300 If mapl Mod 60 0 Then If mapmapl 300 60 mapv 10 60 0 Then mode 3 fallleft End If End If Case 1 mode 9 anim 0 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 8 animshift 1 End Select Case vbKeyRight Select Case Shift Case 0 mode 2 anim anim 1 If anim gt 7 Then anim 1 If mapmapl 365 60 mapv 60 0 Then mapl mapl 6 End If If mapl gt 2400 Then mapl 2400 If mapl Mod 60 0 Then If mapmapl 300 60 mapv 10 60 0 Then mode 4 fall End If End If Case 1 mode 10 anim 0 animshift 1 End Select End Select End If End Sub Private Sub Form_Load Dim a g bi mapv 0 mode 3 anim 1 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 9 ShowCursor 0 DirectDrawCreate ByVal 0amp dd Nothing dd.SetCooperativeLevel Me.hwnd DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN dd.SetDisplayMode ResolutionX ResolutionY 8 0 0 Set aDDS CreateDDSFromBitmapdd App.Path amp quotmenace.BMPquot Set tDDS CreateDDSFromBitmapdd App.Path amp quottiles.BMPquot With ddsdFront .dwSize LenddsdFront .dwFlags DDSD_CAPS Or DDSD_BACKBUFFERCOUNT .DDSCAPS.dwCaps DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX Or DDSCAPS_SYSTEMMEMORY .dwBackBufferCount 1 End With dd.CreateSurface ddsdFront ddsFront Nothing ddCaps.dwCaps DDSCAPS_BACKBUFFER ddsFront.GetAttachedSurface ddCaps ddsBack Open App.Path amp quotmenace.sprquot For Random As 1 Len 2 For a 0 To 39 Get 1 a 6 1 spnoxa 1 Get 1 a 6 2 spnoya 1 Get 1 a 6 3 spnxa 1 Get 1 a 6 4 spnya 1 Get 1 a 6 5 spnwa 1 Get 1 a 6 6 spnha 1 Next Close 1 Open App.Path amp quotspritebe.txtquot For Input As 1 Do Line Input 1 g If Leftg 1 quotquot Then 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 10 Input 1 bi Input 1 bnamebi bcellsbi For a 1 To bcellsbi Input 1 bcharbi a bxobi a byobi a Next End If Loop Until EOF1 Close 1 level 1 loadlevel level Timer1.Enabled -1 End Sub Private Sub DrawNextFrame Dim a b xx ofx sp cbx cby Dim t As RECT With fx .dwSize Lenfx .dwFillColor RGB0 0 0 End With t.Top 0 t.Left 0 t.bottom ResolutionY t.Right ResolutionX ddsBack.Blt t Nothing t DDBLT_COLORFILL fx ofx mapl 60 For a 0 To 11 If a ofx gt 0 And a ofx lt 39 Then For b 6 To 1 Step -1 drawblock mapa ofx b - 1 a 60 - mapl Mod 60 b 60 Next 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 11 End If Next For a 1 To 30 If blockmodea gt 0 Then something to do drawblock blockcella blockxa - mapl - 300 blockya Select Case blockmodea Case 1 2 If blockmodea 1 Then blockxa blockxa - 6 Else blockxa blockxa 6 If blockxa Mod 60 0 Then If blockmodea 1 Then cbx blockxa - 235 60 Else cbx blockxa - 355 60 cby blockya - 10 60 blockmodea 3 fall checkabove cbx cby End If Case 3 If mapblockxa - 300 60 blockya 10 60 0 Then blockya blockya 10 Else mapblockxa - 300 60 blockya - 5 60 blockcella blockmodea 0 checkforgroup End If End Select End If Next Select Case mode Case 1 2 Case 3 4 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 12 anim anim 1 If anim gt bcellsmode Then anim 1 If mapmapl 300 60 mapv 10 60 0 And mapmapl 355 60 mapv 10 60 0 Then mapv mapv 10 Else If mode 3 Then mode 6 Else mode 8 End If If mapv gt 350 Then mapv 350 If mode 3 Then mode 6 Else mode 8 End If Case 5 7 jump left or right anim anim 1 If anim gt bcellsmode Then If mode 5 Then mode 3 Else mode 4 anim 1 Else If anim lt 15 Then If mode 5 Then left If mapmapl 300 60 mapv - 60 60 0 And mapmapl 355 60 mapv - 60 60 0 Then mapv mapv byomode anim If mapv lt 1 Then mapv 1 Else anim 15 End If If mapmapl 300 bxomode anim 60 mapv 60 0 And mapmapl 300 bxomode anim 60 mapv - 50 60 0 Then 辽 宁 工 业 大 学 课 程 设 计 说 明 书论 文 13 mapl mapl bxomode anim Else mode 3: anim 1 If animshift Then startmove 1 End If Else If mapmapl 355 60 mapv - 60 60 0 And mapmapl 300 60 mapv - 60 60 0 Then mapv mapv byomode anim If mapv lt 1 Then mapv 1 Else anim 15 End If If mapmapl 355 bxomode anim 60 mapv 60 0 And mapmapl 355 bxomode anim 60 mapv - 50 60 0 Then mapl mapl bxomode anim If mapv lt 1 Then mapv 1 Else mode 4: anim 1 If animshift Then startmove 2 End If End If Else If mode 5 Then left If mapmapl 300 60 mapv 15 60 0 And mapmapl 355 60 mapv 15 60 0 Then m.