您的位置首页生活百科

求用vbs编写的贪吃蛇源代码

求用vbs编写的贪吃蛇源代码

的有关信息介绍如下:

求用vbs编写的贪吃蛇源代码

需用VB实现,代码如下

'定义蛇的运动速度枚举值

PrivateEnumtpsSpeed

QUICKLY=0

SLOWLY=1

EndEnum

'定义蛇的运动方向枚举值

PrivateEnumtpsDirection

D_UP=38

D_DOWN=40

D_360问答LEFT=37

D_RIGHT=39

EndEnum

'定义运动区汽河零影史域4个禁区的枚举值

PrivateEnumtpsForbiddenZone

FZ_TOP=30

FZ_BOTTOM=5330

FZ_LEFT=30

领满集固项FZ_RIGHT=5730

EndEnum

'定义蛇头及身体初始化数枚举值

PrivateEnumtpsSnake

SNAKEONE=1

SNAKETWO=2

SNAKETHREE=3

山垂示史一SNAKEFOUR=4

EndEnum

'定义蛇宽度的常量

PrivateConstSNA甲即名又房析此顾定号KEWIDTHA免棉转绝树sInteger=100

'该过程用于显示游戏信息

PrivateSubForm_Load()

*兰个料子往决只存推**.show

***.lbl&***.major&"."&***.minor&"."&***.revision&")"

***.caption=me.***.caption

***.show1

EndSub

'该过程用于使窗体恢复原始大小

PrivateS境程脚久边剂岁足士止目ubForm_Resize()

If***.windowstate<>1Then

***.caption=""

***.height=6405'窗体算三吧提高度为6405缇

***.wi言矿表速输介构史dth=8535'窗体宽度为必友拿汽8535缇

***.left=(***.width货领刑-Width)\2

Me.Top=(***.height-Heigh广重纪红洋坐t)\2

EndIf

居集够子决曲球又续引滑EndSub

'该过程将普展粮跳用于重新开始开始游戏

PrivateSubcmdGameStart_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Beep

m绍地表使迅财号sg=MsgBox("您刘协缩宽确认要重新开始游戏吗?",4+32,"BS贪食蛇")

Ifmsg=6ThenCallm_subGameInitialize

EndSub

'该过程用于暂停/运行游戏

植造PrivateSubchkPause_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Ifme.***.caption="暂停游戏(&P)"Then

me.***.enabled=False

me.***.enabled=False

me.***.enabled=False

me.***.visible=True

me.***.caption="继续游戏(&R)"

Else

me.***.enabled=True

me.***.enabled=True

me.***.enabled=True

me.***.visible=False

me.***.caption="暂停游戏(&P)"

EndIf

EndSub

'该过程用于显示游戏规则

PrivateSubcmdGameRules_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Beep

MsgBox"BS贪食蛇:一个规则最简单的趣味游戏,您将用键盘"&Chr(13)&_

"上的4个方向键来控制蛇的运动方向。在运动过程中蛇"&Chr(13)&_

"不能后退,蛇的头部也不能接触到运动区域的边线以外"&Chr(13)&_

"和蛇自己的身体,否则就游戏失败。在吃掉随机出现的"&Chr(13)&_

"果子后,蛇的身体会变长,越长难度越大。祝您好运!!",0+64,"游戏规则"

EndSub

'该过程用于显示游戏开发信息

PrivateSubcmdAbout_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Beep

MsgBox"BS贪食蛇"&"(V-"&***.major&"."&***.minor&"版本)"&Chr(13)&Chr(13)&_

""&Chr(13)&Chr(13)&_

"由PigheadPrince设计制作"&Chr(13)&_

"CopyRight(C)2002,***.tcg",0,"关于本游戏"

EndSub

'该过程用于退出游戏

PrivateSubcmdExit_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Beep

msg=MsgBox("您要退出本游戏吗?",4+32,"BS贪食蛇")

SelectCasemsg

Case6

End

Case7

***.chkwindowbutton(2).Value=0

ExitSub

EndSelect

EndSub

'该过程用于拖动窗体_(点击图标)

PrivateSubimgWindowTop_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

ReleaseCapture

SendMessage***.hwnd,WM_SYSCOMMAND,SC_MOVE,0

EndSub

'该共用过程用于处理窗体控制按钮组的相关操作_(锁定、最小化、退出)

PrivateSubchkWindowButton_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfButton<>1ThenExitSub

SelectCaseIndex

Case0'锁定窗体

If***.chkwindowbutton(0).Value=1Then

me.***.borderstyle=0

me.***.enabled=False

Else

me.***.borderstyle=1

me.***.enabled=True

EndIf

Case1'最小化

***.windowstate=1

***.chkwindowbutton(1).Value=0

***.caption="BS贪食蛇—(V-"&***.major&"."&***.minor&"版本)"

Case2'退出

Beep

msg=MsgBox("您要退出本游戏吗?",4+32,"BS贪食蛇")

SelectCasemsg

Case6

End

Case7

***.chkwindowbutton(2).Value=0

ExitSub

EndSelect

EndSelect

EndSub

'该过程用于设置蛇运动速度的快慢

PrivateSubhsbGameSpeed_Change()

me.***.interval=me.***.value

EndSub

'该过程用于通过键盘的方向键改变蛇的运动方向

PrivateSubpicMoveArea_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

SelectCaseg_intDirection

CaseD_UP

IfKeyCode=D_DOWNThenExitSub

CaseD_DOWN

IfKeyCode=D_UPThenExitSub

CaseD_LEFT

IfKeyCode=D_RIGHTThenExitSub

CaseD_RIGHT

IfKeyCode=D_LEFTThenExitSub

EndSelect

g_intDirection=KeyCode

EndSub

'该计时循环过程用于计算游戏耗费的秒数并显示

PrivateSubtmrGameTime_Timer()

g_lngGameTime=g_lngGameTime+1

me.***.caption=g_lngGameTime&"秒"

EndSub

'该计时循环过程用于控制蛇的行动轨迹

PrivateSubtmrSnakeMove_Timer()

DimlngSnakeXAsLong,lngSnakeYAsLong,lngSnakeColorAsLong

DimlngPointXAsLong,lngPointYAsLong,lngPointColorAsLong

Randomize

me.***.setfocus

me.***.cls

'确认蛇头的运动方向并获取新的位置

SelectCaseg_intDirection

CaseD_UP'向上运动

g_udtSnake(SNAKEONE).Snake_CurX=g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurY=g_udtSnake(SNAKEONE).Snake_OldY

g_udtSnake(SNAKEONE).Snake_CurY=g_udtSnake(SNAKEONE).Snake_CurY-SNAKEWIDTH

CaseD_DOWN'向下运动

g_udtSnake(SNAKEONE).Snake_CurX=g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurY=g_udtSnake(SNAKEONE).Snake_OldY

g_udtSnake(SNAKEONE).Snake_CurY=g_udtSnake(SNAKEONE).Snake_CurY+SNAKEWIDTH

CaseD_LEFT'向左运动

g_udtSnake(SNAKEONE).Snake_CurX=g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurX=g_udtSnake(SNAKEONE).Snake_CurX-SNAKEWIDTH

g_udtSnake(SNAKEONE).Snake_CurY=g_udtSnake(SNAKEONE).Snake_OldY

CaseD_RIGHT'向右运动

g_udtSnake(SNAKEONE).Snake_CurX=g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurX=g_udtSnake(SNAKEONE).Snake_CurX+SNAKEWIDTH

g_udtSnake(SNAKEONE).Snake_CurY=g_udtSnake(SNAKEONE).Snake_OldY

EndSelect

'根据新的位置绘制蛇头

lngSnakeX=g_udtSnake(SNAKEONE).Snake_CurX

lngSnakeY=g_udtSnake(SNAKEONE).Snake_CurY

lngSnakeColor=g_udtSnake(SNAKEONE).Snake_Color

me.***.pset(lngSnakeX,lngSnakeY),lngSnakeColor

'移动蛇身体其他部分的位置

Fori=2Tog_intSnakeLength

g_udtSnake(i).Snake_CurX=g_udtSnake(i-1).Snake_OldX

g_udtSnake(i).Snake_CurY=g_udtSnake(i-1).Snake_OldY

lngSnakeX=g_udtSnake(i).Snake_CurX

lngSnakeY=g_udtSnake(i).Snake_CurY

lngSnakeColor=g_udtSnake(i).Snake_Color

me.***.pset(lngSnakeX,lngSnakeY),lngSnakeColor

Nexti

'更新蛇旧的坐标位置

Forj=1Tog_intSnakeLength

g_udtSnake(j).Snake_OldX=g_udtSnake(j).Snake_CurX

g_udtSnake(j).Snake_OldY=g_udtSnake(j).Snake_CurY

Nextj

'判断蛇在移动中是否到了禁区而导致游戏失败

Ifm_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX,g_udtSnake(SNAKEONE).Snake_CurY)Then

Beep

MsgBox"您的蛇移动到了禁区,游戏失败!",0+16,"BS贪食蛇"

me.***.enabled=False

me.***.enabled=False

me.***.visible=False

ExitSub

EndIf

'判断蛇在移动中是否碰到了自己的身体而导致游戏失败

Ifm_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX,g_udtSnake(SNAKEONE).Snake_CurY)Then

Beep

MsgBox"您的蛇在移动中碰到了自己的身体,游戏失败!",0+16,"BS贪食蛇"

me.***.enabled=False

me.***.enabled=False

me.***.visible=False

ExitSub

EndIf

'判断蛇是否吃到了果子

Ifm_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX,g_udtSnake(SNAKEONE).Snake_CurY)Then

'累加玩家的得分并刷新得分显示

g_intPlayerScore=g_intPlayerScore+1

me.***.caption=g_intPlayerScore&"分"

Callm_subAddSnake'加长蛇的身体

Callm_subGetPoint'获取下一个果子的位置和颜色

Else

'绘制果子

lngPointX=g_***.point_X

lngPointY=g_***.point_Y

lngPointColor=g_***.point_Color

me.***.pset(lngPointX,lngPointY),lngPointColor

EndIf

EndSub

'该私有子过程用于初始化游戏

PrivateSubm_subGameInitialize()

Eraseg_udtSnake'清空蛇的结构数组

g_intPlayerScore=0'清空玩家的得分

g_lngGameTime=0'清空游戏耗费的秒数

g_intDirection=D_DOWN'设定蛇的初始运动方向为下

g_intSnakeLength=4'设定蛇的初始长度

ReDimg_udtSnake(1Tog_intSnakeLength)'重新定义蛇的长度

'定义蛇头部的数据

Withg_udtSnake(SNAKEONE)

.Snake_OldX=530

.Snake_OldY=530

.Snake_Color=vbBlack

EndWith

'定义蛇身第2节的数据

Withg_udtSnake(SNAKETWO)

.Snake_OldX=530

.Snake_OldY=430

.Snake_Color=vbGreen

EndWith

'定义蛇身第3节的数据

Withg_udtSnake(SNAKETHREE)

.Snake_OldX=530

.Snake_OldY=330

.Snake_Color=vbYellow

EndWith

'定义蛇身第4节的数据

Withg_udtSnake(SNAKEFOUR)

.Snake_OldX=530

.Snake_OldY=230

.Snake_Color=vbRed

EndWith

me.***.visible=True

me.***.caption=g_intPlayerScore&"分"

me.***.caption=g_lngGameTime&"秒"

me.***.interval=me.***.value

me.***.enabled=True

me.***.enabled=True

Callm_subGetPoint'获取第一个果子的位置和颜色

EndSub

接下面的