求大神帮忙看看问题在哪里啊
vba吧
全部回复
仅看楼主
level 6
殷世鸣 楼主
我想做一个贪吃蛇的小程序,还没编完,遇见了一个问题。为啥只能拐一次弯,第二次excel就会关闭,求大神帮忙解答一下。
Dim arr1(), mybean As Range, on_off As Boolean, lever, direc As Byte, snakdirec As Byte
Dim snakelever As Byte, snakelong As Integer, snakefirst As Range, snakelast As Range
Sub 赋值()
Dim i As Integer
For i = snakelong - 1 To 1 Step -1
arr1(1, i + 1) = arr1(1, i)
arr1(2, i + 1) = arr1(2, i)
Next
arr1(1, 1) = snakefirst.Row
arr1(2, 1) = snakefirst.Column
snakefirst = "█"
snakelast = ""
End Sub
Sub 开始()
Dim l As Byte, i As Byte
ReDim arr1(1 To 2, 1 To 5)
For l = 1 To 5
arr1(1, l) = 20 + l
arr1(2, l) = 20
Next
snakelong = UBound(arr1(), 2)
snakdirec = 4
For i = 1 To snakelong
Cells(arr1(1, i), arr1(2, i)) = "█"
Next
Call 等级
Call 前进
End Sub
Sub 等级()
lever = Int(snakelong / 10)
End Sub
Sub 时间()
Dim i As Integer
For i = 1 To 30000 - 1000 * lever
DoEvents
Next
End Sub
Sub 前进()
Dim i As Integer
on_off = True
For i = 1 To 41
If on_off = False Then Exit Sub
If snakdirec = 1 Then
Set snakefirst = Cells(arr1(1, 1), arr1(2, 1) + 1)
ElseIf snakdirec = 2 Then
Set snakefirst = Cells(arr1(1, 1), arr1(2, 1) - 1)
ElseIf snakdirec = 3 Then
Set snakefirst = Cells(arr1(1, 1) + 1, arr1(2, 1))
ElseIf snakdirec = 4 Then
Set snakefirst = Cells(arr1(1, 1) - 1, arr1(2, 1))
End If
Set snakelast = Cells(arr1(1, snakelong), arr1(2, snakelong))
Call 等级
Call 赋值
Call 时间
Next
End Sub
Sub 上()
If snakdirec = 2 Or snakdirec = 1 Then
on_off = False
snakdirec = 4
Call 前进
End If
End Sub
Sub 下()
If snakdirec = 2 Or snakdirec = 1 Then
snakdirec = 3
on_off = False
Call 前进
End If
End Sub
Sub 左()
If snakdirec = 3 Or snakdirec = 4 Then
snakdirec = 2
on_off = False
Call 前进
End If
End Sub
Sub 右()
If snakdirec = 3 Or snakdirec = 4 Then
snakdirec = 1
on_off = False
Call 前进
End If
End Sub
Sub 停()
Dim i As Byte
on_off = False
For i = 1 To 10
DoEvents
Next
Call 前进
End Sub
2016年02月17日 12点02分 1
level 12
大神请受我一拜!
2016年02月18日 07点02分 2
level 9
顶你,我明天看看,争取给您解决
2016年02月22日 09点02分 5
谢谢啊,憋了好久了
2016年02月22日 14点02分
1