(完整)VB实现贪吃蛇小游戏

(完整)VB实现贪吃蛇小游戏


2024年2月8日发(作者:)

(完整)VB实现贪吃蛇小游戏

VB实现贪吃蛇小游戏

——比较适合VB初学者,属原创作品

图1

图2

(完整)VB实现贪吃蛇小游戏

图3

如图1所示,布置控件,其中有4个timer控件,1个picture控件(底图),4个command控件(上下左右),10个label控件.

其他功能都在程序里实现,其中贪吃蛇都是由点来组成的,初学者主要学习一下timer控件的应用,还有贪吃蛇拐弯怎么实现的.图2、图3是游戏视图.

主程序:

Public a, b, f As Double: Public i, j, c, d, e, g, h, z As Integer

Dim aa(100) As Double: Dim bb(100) As Double

Private Sub Form_Load()

a = 100: b = 300: c = 4 'a、b定义第一个点(红点)位置,c能控制蓝点数量

g = 2000: h = 2000

al = (200 — z * 30) ’定义每个定时器间隔时间 0.2S

Timer2。Interval = (200 - z * 30)

Timer3。Interval = (200 — z * 30)

al = (200 - z * 30)

Timer5。Interval = 300

Timer1。Enabled = True '初设一开始向右走

d = False

d = False

Timer4。Enabled = False

End Sub

Private Sub Timer1_Timer() '向右走

(完整)VB实现贪吃蛇小游戏

'没循环一次就清除上一次画的图像,要不就看不出运动了

dth = 10 '定义画图粗细

b = b + 100 ’b每次都加100,画图后坐标就变了

aa(i) = a

bb(j) = b

(b, a), vbRed ’绘制第一个点(红)

For k = 1 To c '此k-for循环从1到c,绘制c个蓝色点

If aa(99) = 0 Then '如果游戏刚开始,以下绘制方法,一开始j=0,j—k为负,bb(j—k)与aa(j-k)数组无效,因此在j〈=c时单独绘制

If j <= c And i <= c Then

f = 400 - 100 * (k - j)

(f, 100), vbBlue

Else

Picture1。PSet (bb(j — k), aa(i - k)), vbBlue ’其他情况时,蓝点走过红点的轨迹

End If

End If

If aa(99) <〉 0 Or bb(99) 〈> 0 Then ’如果时j和i运行到99后变为0,则bb(0)为红点时,蓝点必须走bb(99)、bb(98).。..

If j 〈= c And i <= c Then

d = 100 — k + j: e = 100 — k + i ’此行与以下两行作用就是为了实现蓝点绘制时混合了。。.bb(0)、bb(99).。.的情况

If d >= 100 Then d = d - 100

If e >= 100 Then e = e — 100

Picture1。PSet (bb(d), aa(e)), vbBlue

Else

Picture1。PSet (bb(j - k), aa(i - k)), vbBlue

End If

End If

Next k

If b > 4900 Or b 〈 100 Or a 〉 4900 Or a 〈 100 Then '碰墙则重新开始,以下进行了数据重置和清零

j = —1: i = —1: b = 300: a = 100: c = 4: z = 0 '如果碰墙了,j=-1时因为运行完了 后面有j=j+1,这样j就等于0了,把a、b重置

MsgBox (”对不起!您碰墙了!接下来将重新开始游戏!”)

For o = 0 To 99

aa(o) = 0: bb(o) = 0 ’把aa()、bb()数组中所有的数清零

Next o

End If

If j 〉 c Then '咬尾了就重新开始游戏,以下进行了数据重置和清零

For p = 1 To c

If bb(j) = bb(j - p) And aa(i) = aa(i - p) Then

j = —1: i = -1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您咬尾了!接下来将重新开始游戏!”)

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

Exit For

End If

Next p

End If

j = j + 1

i = i + 1

If j = 100 Or i = 100 Then j = 0: i = 0 'j现在另j到了100就变0

End Sub

Private Sub Timer2_Timer() ’向左走

dth = 10

b = b — 100

aa(i) = a

bb(j) = b

Picture1。PSet (b, a), vbRed

For k = 1 To c

If aa(99) = 0 Then

If j <= c And i <= c Then

(400 - 100 * (k - j), 100), vbBlue

Else

(bb(j - k), aa(i — k)), vbBlue

End If

End If

If aa(99) 〈〉 0 Or bb(99) <〉 0 Then

If j 〈= c And i <= c Then

d = 100 — k + j: e = 100 — k + i

If d >= 100 Then d = d — 100

If e >= 100 Then e = e - 100

Picture1。PSet (bb(d), aa(e)), vbBlue

Else

Picture1。PSet (bb(j — k), aa(i - k)), vbBlue

End If

End If

Next k

If b 〉 4900 Or b < 100 Or a > 4900 Or a 〈 100 Then

j = -1: i = -1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您碰墙了!接下来将重新开始游戏!")

(完整)VB实现贪吃蛇小游戏

不能持续增长,有可能会溢出,

(完整)VB实现贪吃蛇小游戏

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

d = False

d = True

End If

If j 〉 c Then

For p = 1 To c

If bb(j) = bb(j — p) And aa(i) = aa(i — p) Then

j = —1: i = —1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您咬尾了!接下来将重新开始游戏!")

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

d = False

Timer1。Enabled = True

Exit For

End If

Next p

End If

j = j + 1

i = i + 1

If j = 100 Or i = 100 Then j = 0: i = 0

End Sub

Private Sub Timer3_Timer() ’向下走

Picture1。DrawWidth = 10

a = a + 100

aa(i) = a

bb(j) = b

(b, a), vbRed

For k = 1 To c

If aa(99) = 0 Then

If j 〈= c And i 〈= c Then

(f, 100 — 100 * (k - j)), vbBlue

Else

Picture1。PSet (bb(j — k), aa(i — k)), vbBlue

End If

End If

If aa(99) <〉 0 Or bb(99) 〈〉 0 Then

If j 〈= c And i <= c Then

d = 100 - k + j: e = 100 — k + i

If d >= 100 Then d = d — 100

(完整)VB实现贪吃蛇小游戏

If e 〉= 100 Then e = e - 100

Picture1。PSet (bb(d), aa(e)), vbBlue

Else

Picture1。PSet (bb(j — k), aa(i — k)), vbBlue

End If

End If

Next k

If b 〉 4900 Or b < 100 Or a 〉 4900 Or a < 100 Then

j = —1: i = —1: b = 300: a = 100: c = 4: z = 0

MsgBox ("对不起!您碰墙了!接下来将重新开始游戏!")

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

Timer3。Enabled = False

d = True

End If

If j > c Then

For p = 1 To c

If bb(j) = bb(j — p) And aa(i) = aa(i — p) Then

j = -1: i = -1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您咬尾了!接下来将重新开始游戏!”)

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

d = False

d = True

Exit For

End If

Next p

End If

j = j + 1

i = i + 1

If j = 100 Or i = 100 Then j = 0: i = 0

End Sub

Private Sub Timer4_Timer() '向上走

Picture1。DrawWidth = 10

a = a — 100

aa(i) = a

bb(j) = b

Picture1。PSet (b, a), vbRed

For k = 1 To c

If aa(99) = 0 Then

(完整)VB实现贪吃蛇小游戏

If j <= c And i <= c Then

Picture1。PSet (400 — 100 * (k - j), 100), vbBlue

Else

(bb(j — k), aa(i — k)), vbBlue

End If

End If

If aa(99) <〉 0 Or bb(99) <> 0 Then

If j 〈= c And i 〈= c Then

d = 100 — k + j: e = 100 - k + i

If d >= 100 Then d = d - 100

If e 〉= 100 Then e = e — 100

Picture1。PSet (bb(d), aa(e)), vbBlue

Else

Picture1。PSet (bb(j - k), aa(i - k)), vbBlue

End If

End If

Next k

If b 〉 4900 Or b 〈 100 Or a > 4900 Or a < 100 Then

j = -1: i = -1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您碰墙了!接下来将重新开始游戏!")

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

Timer4。Enabled = False

Timer1。Enabled = True

End If

If j 〉 c Then

For p = 1 To c

If bb(j) = bb(j — p) And aa(i) = aa(i - p) Then

j = -1: i = -1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您咬尾了!接下来将重新开始游戏!")

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

d = False

d = True

Exit For

End If

Next p

End If

j = j + 1

i = i + 1

If j = 100 Or i = 100 Then j = 0: i = 0

End Sub

(完整)VB实现贪吃蛇小游戏

Private Sub Command1_Click() '上

If Timer3。Enabled = False Then

Timer2。Enabled = False

d = False

Timer4。Enabled = True

End If

End Sub

Private Sub Command2_Click() ’下

If d = False And j > c Then

Timer1。Enabled = False

Timer2。Enabled = False

d = True

End If

End Sub

Private Sub Command3_Click() '左

If d = False Then

Timer3。Enabled = False

d = False

Timer2。Enabled = True

End If

End Sub

Private Sub Command4_Click() ’右

If Timer2。Enabled = False Then

d = False

d = False

Timer1。Enabled = True

End If

End Sub

Private Sub picture1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 38 And d = False Then ’上

d = False

'd = False

Timer1。Enabled = False

Timer4。Enabled = True

End If

If KeyCode = 40 And d = False And j > c Then '下

Timer2。Enabled = False

Timer1。Enabled = False

'd = False

Timer3。Enabled = True

End If

(完整)VB实现贪吃蛇小游戏

If KeyCode = 37 And Timer1。Enabled = False Then ’左

’d = False

Timer3。Enabled = False

Timer4。Enabled = False

Timer2。Enabled = True

End If

If KeyCode = 39 And d = False Then ’右

'Timer2。Enabled = False

Timer3。Enabled = False

Timer4。Enabled = False

Timer1。Enabled = True

End If

End Sub

Private Sub Timer5_Timer()

Picture1。DrawWidth = 7

(g, h), RGB(50, 50, 0)

If b = g And a = h Then

g = (Int(Rnd * 48) + 1) * 100

h = (Int(Rnd * 48) + 1) * 100

c = c + 1

End If

If c = 30 Then

z = z + 1

j = 0: i = 0: b = 300: a = 100: c = 4

MsgBox (”恭喜您!进入下一关!”)

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

Timer4。Enabled = False

d = False

Timer2。Enabled = False

Timer1。Enabled = True

End If

If p = 6 Then

MsgBox ("您真是快手王啊!重新开始吧!”)

j = -1: i = —1: b = 300: a = 100: c = 4: z = 0

MsgBox (”对不起!您咬尾了!接下来将重新开始游戏!")

For o = 0 To 99

aa(o) = 0: bb(o) = 0

Next o

(完整)VB实现贪吃蛇小游戏

End If

Timer1。Interval = (200 - z * 30) ’定义每个定时器间隔时间 0。2S

al = (200 — z * 30)

Timer3。Interval = (200 - z * 30)

Timer4。Interval = (200 - z * 30)

Label3。Caption = g

n = h

Label5。Caption = c + 1

Label6。Caption = z + 1

End Sub

主程序结束


发布者:admin,转转请注明出处:http://www.yc00.com/web/1707379298a1499271.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信