vb实现元胞自动机 生命
<![if supportMisalignedColumns]> <![endif]>
checkbox | name | cc |
caption | ||
index | 0 | |
visible | FALSE | |
height | 255 | |
width | 255 | |
left | 0 | |
top | 0 | |
menu | name | ks |
caption | 开始 | |
enabled | FALSE | |
menu | name | sz |
caption | 设置 | |
menu | name | tz |
caption | 停止 | |
enabled | FALSE | |
timer | enabled | FALSE |
interval | 1000 | |
Option Explicit
Dim x%, y%
Private Sub ks_Click()
Timer1.Enabled = True
ks.Enabled = False
tz.Enabled = True
End Sub
Private Sub sz_Click()
Dim z%, i%, j%
Do
x = InputBox("创建二维数组,行数x:", "输入x", "10")
y = InputBox("列数y:", "输入y", "10")
z = MsgBox("矩阵" & x & "行" & y & "列?", vbOKCancel, "确定?")
Loop Until z = 1
For i = 0 To x - 1
For j = 0 To y - 1
If i <> 0 Or j <> 0 Then
Load cc(i * y + j)
cc(i * y + j).Caption = ""
cc(i * y + j).Height = 255
cc(i * y + j).Width = 255
cc(i * y + j).Top = 255 * i
cc(i * y + j).Left = 255 * j
cc(i * y + j).Visible = True
End If
Next j, i
cc(0).Visible = True
ks.Enabled = True
sz.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim temp%(), i%, j%, nn%
ReDim temp(x, y)
For i = 1 To x - 2
For j = 1 To y - 2
nn = cc((i - 1) * y + j - 1).Value + cc((i - 1) * y + j).Value + cc((i - 1) * y + j + 1).Value + cc(i * y + j - 1).Value + cc(i * y + j + 1).Value + cc((i + 1) * y + j - 1).Value + cc((i + 1) * y + j).Value + cc((i + 1) * y + j + 1).Value
If nn = 3 Then
temp(i, j) = 1
ElseIf nn = 2 Then
temp(i, j) = cc(i * y + j).Value
Else
temp(i, j) = 0
End If
Next j, i
For i = 1 To x - 2
For j = 1 To y - 2
cc(i * y + j).Value = temp(i, j)
Next j, i
End Sub
Private Sub tz_Click()
Timer1.Enabled = False
tz.Enabled = False
ks.Enabled = True
MsgBox "结束后请关闭生命。", vbOKOnly
End Sub