实例介绍
【实例简介】基于VB设计的走迷宫游戏:
【实例截图】
【核心代码】
VERSION 5.00
Begin VB.Form Form1
AutoRedraw = -1 'True
BackColor = &H80000004&
Caption = "闯迷宫"
ClientHeight = 9630
ClientLeft = 225
ClientTop = 555
ClientWidth = 12765
FillColor = &H80000004&
FillStyle = 0 'Solid
KeyPreview = -1 'True
LinkTopic = "Form1"
MaxButton = 0 'False
Picture = "迷宫.frx":0000
ScaleHeight = 9630
ScaleWidth = 12765
StartUpPosition = 2 '屏幕中心
Begin VB.PictureBox Picture2
BorderStyle = 0 'None
Height = 400
Index = 1
Left = 11600
Picture = "迷宫.frx":0461
ScaleHeight = 405
ScaleWidth = 405
TabIndex = 2
Top = 9200
Width = 400
End
Begin VB.PictureBox Picture2
BorderStyle = 0 'None
Height = 400
Index = 0
Left = 400
Picture = "迷宫.frx":08C2
ScaleHeight = 405
ScaleWidth = 405
TabIndex = 1
Top = 0
Width = 400
End
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 2000
Left = 7320
Top = 240
End
Begin VB.PictureBox Picture1
BackColor = &H0000FF00&
Height = 400
Left = 400
Picture = "迷宫.frx":0D23
ScaleHeight = 345
ScaleWidth = 345
TabIndex = 0
Top = 400
Width = 400
End
Begin VB.Menu mig
Caption = "随机生成迷宫"
End
Begin VB.Menu dmg
Caption = "启动动态迷宫"
End
Begin VB.Menu start
Caption = "初始化"
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
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
End Select
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
Close #1
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
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论