求用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
接下面的