推箱子VB课程设计说明书文档格式.docx

上传人:b****4 文档编号:15871456 上传时间:2022-11-16 格式:DOCX 页数:15 大小:222.93KB
下载 相关 举报
推箱子VB课程设计说明书文档格式.docx_第1页
第1页 / 共15页
推箱子VB课程设计说明书文档格式.docx_第2页
第2页 / 共15页
推箱子VB课程设计说明书文档格式.docx_第3页
第3页 / 共15页
推箱子VB课程设计说明书文档格式.docx_第4页
第4页 / 共15页
推箱子VB课程设计说明书文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

推箱子VB课程设计说明书文档格式.docx

《推箱子VB课程设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《推箱子VB课程设计说明书文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

推箱子VB课程设计说明书文档格式.docx

1.2课程设计的实验环境

硬件要求能运行Windows9.X操作系统的微机系统。

软件:

MicrosoftVisualBasic6.0

1.3课程设计的预备知识

熟悉VisualBasic6.0程序设计的基本语法知识及常用技巧。

1.4课程设计要求

按课程设计指导书提供的课题,每个小组设计一个完整的小游戏应用程序。

要求根据规定设计游戏的具体要求,按照应用程序的设计步骤和VB的基本知识应用程序的分析与实现。

应根据后面给出的基本学时分配合理安排设计时间,并独立完成各方面的设计。

选择同一题目的同学,可以共同协作完成一个应用程序的开发任务。

要求书写详细的设计说明书,对有复杂的代码段和程序段的部分,应画出程序流程图,写出全部的代码。

在界面设计中,需画出每个窗体的布局,进行属性说明,杜绝雷同。

第2章

课程设计内容

2.1游戏介绍

2.1.1游戏规则

游戏要求:

游戏开始时自动进入第一关,状态栏里显示操作提示。

可以通过方向键控制小人的移动,按空格键重新开始本关,或者用回车键、翻页键选择其他关;

当按下<

Esc>

键时退出本游戏。

在移动过程中,如果前方是一个箱子,并且箱子的前面没有墙或其他箱子阻挡,那么就可以把它向前推动一格。

游戏的任务是把所有的箱子都推到标记处。

2.1.2游戏说明

游戏的意图是要求玩家推动箱子完成三个箱子任务,左右键用于走动,SHIFT键用于推动箱子,CONTROL用于跳,SHIFT和CONTROL是推动箱子一起跳,若游戏失败可重新开始游戏。

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&

Caption

MenaceMapeditor

Left

Value

1

Visible

True

frmBlt(BLT.FRM)属性值:

frmBlt.Form

Timer1.timer

frmBlt

Timer1

Menace

Enabled

False

Interbal

100

Splash(splash.frm)属性值:

CmandButton

Image1.Image

Label1.label

Splash.Form

Command1

Image1

Label1

splash

Appearance

1-3D

PlayMenace

Theleftandrightarrowswalkmenace.

Cancel

BorderStyle

0-None

2-Sizable

图2-2属性设置

2.2.3编程思路及代码

游戏思路:

使用棋盘法设计推箱子游戏

“棋盘”游戏的种类丰富,俄罗斯方块,推箱子,象棋,五子棋......等等这些都可以归类到“棋盘”游戏中来。

面对这类游戏设计的时候,我本人的见解是首先对“棋盘”做研究,实在不行再去研究“棋子”。

换句话说,就是以游戏中的活动区域为研究对象,像象棋就是他的棋盘,俄罗斯方块就是他整个的方块的活动区域。

我们这里姑且就把他叫做“棋盘法”。

一.“棋盘法”基本实现方法

“棋盘法”实现起来其实很简单,一般来说就是把棋盘看作一个网格,那么我们就把他看作与之对应的二维数组。

然后适当组织数据结构去抽象旗子,制定规

则,这样就很容易实现游戏。

二.“棋盘法”的优缺点

任何一个算法或思想都是有优缺点的,而我们的“棋盘法”的最大优点就是可以方便我们组织数据结构,简化了游戏规则的编写,使我们编程时思路比较清晰直观,通常就是直接根据游戏实际规则编写就可以了,这个我们会以实例加以说明。

然而他最大的缺点就是可能耗费大量内存,试想,如果我们的棋盘规格很大,那我们就得开辟一个比较大的二维数组,并且如果你要将代码移植到单片机,ARM等硬件平台上。

那你就不得不考虑自己的方法问题,在这些硬件平台上内存资源是极其宝贵的。

也许有朋友会说那在PC机上总可以的。

的确现在PC机资源丰富,功能强大,可有时候还是不能如你所愿。

一个很经典的例子就是五子棋的人工智能,为了让五子棋在人机对战中具备攻防兼备的智能,我们只有开辟一个于棋盘规格相呼应的二维的树组来记录棋盘上各点的胜算几率,(有兴趣的朋友可以到网上去找找资料)这样的话,在DOS下你就只能开辟一个约10X10的棋盘,即使在WINDOWS下也只能大约16X16的棋盘。

(当然,这里是说直接开辟数组,采用特别技术的不算)。

所以说,这个“棋盘法”也是有他自己的限制的。

游戏代码:

Form1(map.frm)代码:

PrivateDeclareFunctionCreateCompatibleDCLib"

gdi32"

(ByValhdcAsLong)AsLong

PrivateDeclareFunctionDeleteDCLib"

PrivateDeclareFunctionDeleteObjectLib"

(ByValhObjectAsLong)AsLong

PrivateDeclareFunctionGetObjectLib"

Alias"

GetObjectA"

(ByValhObjectAsLong,ByValnCountAsLong,lpObjectAsAny)AsLong

PrivateDeclareFunctionSelectObjectLib"

(ByValhdcAsLong,ByValhObjectAsLong)AsLong

PrivateDeclareFunctionGetDCLib"

user32"

(ByValhwndAsLong)AsLong

PrivateDeclareFunctionLoadImageLib"

LoadImageA"

(ByValhInstAsLong,ByVallpszAsString,ByValun1AsLong,ByValn1AsLong,ByValn2AsLong,ByValun2AsLong)AsLong

PrivateDeclareFunctionStretchBltLib"

(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValnSrcWidthAsLong,ByValnSrcHeightAsLong,ByValdwRopAsLong)AsLong

PrivateDeclareFunctionShowCursorLib"

(ByValbShowAsLong)AsLong

ConstResolutionX=640

ConstResolutionY=480

DimddAsDirectDraw2

DimddsdFrontAsDDSURFACEDESC

DimddsFrontAsDirectDrawSurface2

DimddsBackAsDirectDrawSurface2

DimaDDSAsDirectDrawSurface2

DimtDDSAsDirectDrawSurface2

DimddCapsAsDDSCAPS

DimfxAsDDBLTFX

Dimspnx%(40),spny%(40),spnw%(40),spnh%(40),spnox%(40),spnoy%(40)

Dimmode%,anim%,animshift%,bname$(30),bcells%(30),bchar%(30,30),bxo%(30,30),byo%(30,30),blockx%(30),blocky%(30),blockcell%(30),blockmode%(30),blockcount%,level%

Dimmap(40,6)AsInteger

Dimmapl%,mapv%

PrivateFunctionCreateDDSFromBitmap(ddAsDirectDraw2,ByValstrFileAsString)AsDirectDrawSurface2

DimhbmAsLong

DimbmAsBITMAP

DimddsdAsDDSURFACEDESC

DimddsAsDirectDrawSurface2

DimhdcImage,mhdc,clrAsLong

hbm=LoadImage(ByVal0&

strFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILEOrLR_CREATEDIBSECTION)

GetObjecthbm,Len(bm),bm

Withddsd

.dwSize=Len(ddsd)

.dwFlags=DDSD_CAPSOrDDSD_HEIGHTOrDDSD_WIDTH

.DDSCAPS.dwCaps=DDSCAPS_OFFSCREENPLAIN

.dwWidth=bm.bmWidth

.dwHeight=bm.bmHeight

PrivateSubForm_Load()

Dima%,g$,bi%

mapv%=0

mode%=3

anim%=1

ShowCursor0

Dir

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1