VB实现贪吃蛇小游戏Word文档下载推荐.docx
《VB实现贪吃蛇小游戏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VB实现贪吃蛇小游戏Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
g=2000:
h=2000
Timer1.Interval=(200-z*30)'
定义每个定时器间隔时间0.2S
Timer2.Interval=(200-z*30)
Timer3.Interval=(200-z*30)
Timer4.Interval=(200-z*30)
Timer5.Interval=300
Timer1.Enabled=True'
初设一开始向右走
Timer2.Enabled=False
Timer3.Enabled=False
Timer4.Enabled=False
EndSub
PrivateSubTimer1_Timer()'
向右走
Picture1.Cls'
没循环一次就清除上一次画的图像,要不就看不出运动了
Picture1.DrawWidth=10'
定义画图粗细
b=b+100'
b每次都加100,画图后坐标就变了
aa(i)=a
bb(j)=b
Picture1.PSet(b,a),vbRed'
绘制第一个点(红)
Fork=1Toc'
此k-for循环从1到c,绘制c个蓝色点
Ifaa(99)=0Then'
如果游戏刚开始,以下绘制方法,一开始j=0,j-k为负,bb(j-k)与aa(j-k)数组无效,因此在j<
=c时单独绘制
Ifj<
=cAndi<
=cThen
f=400-100*(k-j)
Picture1.PSet(f,100),vbBlue
Else
Picture1.PSet(bb(j-k),aa(i-k)),vbBlue'
其他情况时,蓝点走过红点的轨迹
EndIf
Ifaa(99)<
>
0Orbb(99)<
0Then'
如果时j和i运行到99后变为0,则bb(0)为红点时,蓝点必须走bb(99)、bb(98)....
d=100-k+j:
e=100-k+i'
此行与以下两行作用就是为了实现蓝点绘制时混合了...bb(0)、bb(99)...的情况
Ifd>
=100Thend=d-100
Ife>
=100Thene=e-100
Picture1.PSet(bb(d),aa(e)),vbBlue
Picture1.PSet(bb(j-k),aa(i-k)),vbBlue
Nextk
Ifb>
4900Orb<
100Ora>
4900Ora<
100Then'
碰墙则重新开始,以下进行了数据重置和清零
j=-1:
i=-1:
a=100:
c=4:
z=0'
如果碰墙了,j=-1时因为运行完了后面有j=j+1,这样j就等于0了,把a、b重置
MsgBox("
对不起!
您碰墙了!
接下来将重新开始游戏!
"
)
Foro=0To99
aa(o)=0:
bb(o)=0'
把aa()、bb()数组中所有的数清零
Nexto
EndIf
Ifj>
cThen'
咬尾了就重新开始游戏,以下进行了数据重置和清零
Forp=1Toc
Ifbb(j)=bb(j-p)Andaa(i)=aa(i-p)Then
z=0
您咬尾了!
bb(o)=0
ExitFor
Nextp
j=j+1
i=i+1
Ifj=100Ori=100Thenj=0:
i=0'
j不能持续增长,有可能会溢出,现在另j到了100就变0
PrivateSubTimer2_Timer()'
向左走
Picture1.Cls
Picture1.DrawWidth=10
b=b-100
Picture1.PSet(b,a),vbRed
Fork=1Toc
Ifaa(99)=0Then
Picture1.PSet(400-100*(k-j),100),vbBlue
0Then
e=100-k+i
100Then
Timer2.Enabled=False
Timer1.Enabled=True
cThen
i=0
PrivateSubTimer3_Timer()'
向下走
a=a+100
Picture1.PSet(f,100-100*(k-j)),vbBlue
Timer3.Enabled=False
PrivateSubTimer4_Timer()'
向上走
a=a-100
Timer4.Enabled=False
PrivateSubCommand1_Click()'
上
IfTimer3.Enabled=FalseThen
Timer1.Enabled=False
Timer4.Enabled=True
PrivateSubCommand2_Click()'
下
IfTimer4.Enabled=FalseAndj>
Timer3.Enabled=True
PrivateSubCommand3_Click()'
左
IfTimer1.Enabled=FalseThen
Timer2.Enabled=True
PrivateSubCommand4_Click()'
右
IfTimer2.Enabled=FalseThen
Timer1.Enabled=True
PrivateSubpicture1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
IfKeyCode=38AndTimer3.Enabled=FalseThen'
'
IfKeyCode=40AndTimer4.Enabled=FalseAndj>
IfKeyCode=37AndTimer1.Enabled=FalseThen'
IfKeyCode=39AndTimer2.Enabled=FalseThen'
PrivateSubTimer5_Timer()
Picture1.DrawWidth=7
Picture1.PSet(g,h),RGB(50,50,0)
Ifb=gAnda=hThen
g=(Int(Rnd*48)+1)*100
h=(Int(Rnd*48)+1)*100
c=c+1
Ifc=30Then
z=z+1
j=0:
i=0:
c=4
恭喜您!
进入下一关!
Ifp=6Then
MsgBox("
您真是快手王啊!
重新开始吧!
Label3.Caption=g
Label4.Caption=h
Label5.Caption=c+1
Label6.Caption=z+1
主程序结束