【发布时间】:2014-01-06 19:09:33
【问题描述】:
我在下面制作了一个循环,让怪物在我的游戏中四处移动,当整个游戏冻结后循环运行......有什么想法可以让循环每 5 秒重复一次吗?
Randomize()
Dim value As Integer = CInt(Int((4 * Rnd()) + 1))
Do
If value = 1 Then
If Me.mob2.Location.X < 750 Then
Me.mob2.Location = New Point(Me.mob2.Location.X + 1, Me.mob2.Location.Y)
End If
ElseIf value = 2 Then
If Me.mob2.Location.Y < 549 Then
Me.mob2.Location = New Point(Me.mob2.Location.X, Me.mob2.Location.Y + 1)
End If
ElseIf value = 3 Then
If Me.mob2.Location.X > 12 Then
Me.mob2.Location = New Point(Me.mob2.Location.X - 1, Me.mob2.Location.Y)
End If
ElseIf value = 4 Then
If Me.mob2.Location.X < 750 Then
Me.mob2.Location = New Point(Me.mob2.Location.X + 1, Me.mob2.Location.Y)
End If
End If
Loop
定时器不起作用:
Private Sub Timer()
' Timer.interval = 1000
End Sub
【问题讨论】:
-
您可以在该函数上放置一个计时器,每 5 秒调用一次,然后您可以完全移除循环。
-
问题是:什么计时器,我做了 Thread.Sleep(50) 并且它仍然冻结......另外,它冻结了 while 程序,而不是函数......
-
你必须做一个计时器,它是VB中的一个对象(你可以从UI编辑器中拖动它或者在加载时自己声明一个)。计时器将有一个函数,它将每 x 毫秒调用一次,因此您只需让计时器的滴答声调用您的函数,然后一起删除循环。
-
正如你现在拥有的那样,你只有一个无限循环,所以它会一直一直锁定你的程序。添加睡眠不会改变它是一个无限循环并且永远不会完成从而锁定您的程序的事实。
-
哦,我试图让它像一个人工智能一样让我的怪物四处走动,有什么想法可以在没有无限循环的情况下做到这一点吗?
标签: vb.net