闯迷宫游戏代码(VB编程实现)

闯迷宫游戏代码(VB编程实现)
闯迷宫游戏代码(VB编程实现)

迷宫游戏源代码

Const row = 22, col = 30

Dim grid(row + 1, col + 1)

Private Sub dmg_Click()

Picture1.Left = 400 '初始化图片位置

Picture1.Top = 400

Timer1.Enabled = True '启动时钟

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) '键盘控制图片移动l = Picture1.Left \ 400

t = Picture1.Top \ 400

Line (l * 400, t * 400)-(400 * (l + 1), 400 * (t + 1)), vbGreen, BF '显示走过的路径Select Case KeyCode '随着键盘的动作来移动

Case vbKeyLeft

If Picture1.Left - 400 >= 400 Then

If grid(t, l - 1) = 0 Then

Picture1.Left = Picture1.Left - 400

Picture1.Top = Picture1.Top

End If

End If

Case vbKeyRight

If Picture1.Left + 400 <= 400 * col Then

If grid(t, l + 1) = 0 Then

Picture1.Left = Picture1.Left + 400

Picture1.Top = Picture1.Top

End If

End If

Case vbKeyDown

If Picture1.Top + 400 <= 400 * row Then

If grid(t + 1, l) = 0 Then

Picture1.Left = Picture1.Left

Picture1.Top = Picture1.Top + 400

End If

End If

Case vbKeyUp

If Picture1.Top - 400 >= 400 Then

If grid(t - 1, l) = 0 Then

Picture1.Left = Picture1.Left

Picture1.Top = Picture1.Top - 400

End If

End If

If Picture1.Top \ 400 = row And Picture1.Left \ 400 = col - 1 Then

Timer1.Enabled = False

MsgBox ("恭喜你,成功走出迷宫!") '显示成功信息

End If

End Sub

Private Sub Form_Load()

Open "迷宫矩阵.txt" For Input As #1 '读取迷宫矩阵,绘制迷宫图

For i = 0 To row + 1

For j = 0 To col + 1

If 1 <= i And i <= row And 1 <= j And j <= col Then

Input #1, grid(i, j)

If grid(i, j) = 1 Then '值为1则表示障碍或墙,0则表示通道,即可行路径

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

End If

Else

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

End If

Next

Next

Close #1

End Sub

Private Sub mig_Click() '随机获取迷宫矩阵

Picture1.Left = 400

Picture1.Top = 400

Randomize

m = row * Int(20 * Rnd)

Open "迷宫矩阵.txt" For Input As #1 '读取事先设计好的迷宫矩阵,随机读取一种矩阵

Do While n <> m

Line Input #1, temp

n = n + 1

Loop

For i = 1 To row

For j = 1 To col

Input #1, grid(i, j)

If grid(i, j) = 1 Then

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

Else

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbWhite, B

End If

Next

Next

End Sub

Private Sub start_Click()

Picture1.Left = 400

Picture1.Top = 400

Open "迷宫矩阵.txt" For Input As #1 '初始化迷宫矩阵

For i = 1 To row

For j = 1 To col

Input #1, grid(i, j)

If grid(i, j) = 1 Then

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

Else

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbWhite, B

End If

Next

Next

Close #1

End Sub

Private Sub Timer1_Timer() '使迷宫矩阵动态变化,随机生成的迷宫可能是走不通的X = 1: Y = 1

For i = 1 To row

For j = 1 To col

Randomize

grid(i, j) = Int(2 * Rnd)

If grid(i, j) = 1 Then

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

Else

Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbWhite, B

End If

Next

Next

End Sub

设计时,只需3个picture控件和1个timer控件即可,故还是比较简单的。

如下图所示:

“迷宫矩阵.txt”中的内容如下所示(自己设计一个即可):

程序最终运行效果如下所示:

相关主题
相关文档
最新文档