📄 蚂蚁.bas
字号:
Attribute VB_Name = "蚂蚁"
Option Explicit
Public Map() As Integer
Public LiveAntMap() As Integer
Public DeadAnt_Num As Integer '死白蚁的数量
Public Row_Num, Col_Num As Integer '范围,一个正方形的边长
Public Ant_Num As Long '白蚁数量
Const x0 = 30 '方框左上角坐标
Const y0 = 30
Const 小快宽度 = 9
Public a '各个小块的边长
Public Qsd As Boolean
Public xst As Integer
Public yst As Integer
Public xds As Integer
Public yds As Integer
Public Type P_xy
X As Integer
Y As Integer
End Type
Type Ant_Tyep
X As Integer
Y As Integer
x1 As Integer
y1 As Integer
State As Integer
能否移动 As Boolean
目的x As Integer
目的y As Integer
路线(1000) As P_xy
Id As Integer
Now_Place As Integer
Tim As Integer
End Type
Declare Function GetTickCount Lib "kernel32" () As Long
Public Run As Boolean
Type Deadants
X As Integer
Y As Integer
Becurry As Boolean
EFFect As Boolean
End Type
Public ANt() As Ant_Tyep
Sub main()
Form1.Show
Dim i As Integer, j As Integer
ANt(1).X = xst
ANt(1).Y = yst
ANt(1).目的x = xds
ANt(1).目的y = yds
Call FindPath(ANt(1).X, ANt(1).Y, ANt(1).目的x, ANt(1).目的y, ANt(1).Now_Place, ANt(1).路线)
End Sub
'--------------------------画活蚂蚁---------------------------------
Sub draw_ant(ant_now As Ant_Tyep)
Dim Antcolor As Double
If ant_now.State = 0 Then Antcolor = vbBlue
If ant_now.State = 1 Then Antcolor = vbYellow
Form1.Line (x0 + ant_now.x1 * a + 2, y0 + ant_now.y1 * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BF
Form1.Line (x0 + ant_now.X * a + 2, y0 + ant_now.Y * a + 2)-Step(a - 4, a - 4), Antcolor, BF
End Sub
'--------------------------------寻找目的地----------------------
'------------------------画死蚂蚁----------------------
Sub Clear_deadant(X, Y)
Form1.Line (x0 + X * a + 2, y0 + Y * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BF
End Sub
Sub draw_dead_ant(X, Y)
Form1.Line (x0 + X * a + 3, y0 + Y * a + 3)-Step(a - 5, a - 5), vbRed, BF
End Sub
Public Sub Init_Form()
Form1.Cls
SleepTimes = Form1.HScroll1.Value
Col_Num = Val(Form1.Text1.Text) '获取列数
Row_Num = Val(Form1.Text2.Text) '获取行数
a = Form1.Text5.Text
SleepTimes = Form1.HScroll1.Value
If a > 30 Then a = 30
If a < 9 Then a = 9
ReDim Map(-1 To Col_Num + 1, -1 To Row_Num + 1)
ReDim GetDeadant_ID(0 To Col_Num, 0 To Row_Num)
ReDim ANt(1)
'根据行数列数画边框及初始化各个位置的标记
Dim i As Integer, j As Integer
For i = -1 To Row_Num + 1
For j = -1 To Col_Num + 1
Form1.Line (x0 + j * a, y0 + i * a)-Step(a, a), 0, B
Map(j, i) = 0 '初始化位置标记为空格0
If i = -1 Or i = Row_Num + 1 Or j = -1 Or j = Row_Num + 1 Then
Form1.Line (x0 + j * a + 1, y0 + i * a + 1)-Step(a - 2, a - 2), RGB(100, 120, 100), BF '画四周墙体
Map(j, i) = -1 '四周位置标记为墙体:-1
End If
Next j
Next i
Form1.Line (x0 + xds * a + 2, y0 + yds * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BF
Form1.Line (x0 + xst * a + 2, y0 + yst * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BF
xds = Rnd * Col_Num: yds = Rnd * Row_Num
Form1.Line (x0 + xds * a + 2, y0 + yds * a + 2)-Step(a - 4, a - 4), vbMagenta, BF
xst = Rnd * Col_Num: yst = Rnd * Row_Num
Form1.Line (x0 + xst * a + 2, y0 + yst * a + 2)-Step(a - 4, a - 4), vbCyan, BF
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -