我在vb.net玩游戏并决定制作一个23x18网格标签,总共234个标签。每个标签的标题为“Label(x)”,从1到234.我有另一个标签,当我按下一个键(wasd)时,它应该朝相应的方向移动。在大多数情况下,它会正确地执行此操作,但在其他情况下,它会跳过它们,完全跳过一个或两个标签。我无法想象为什么会这样。
Dim lab As Label
Dim x As Integer
Private Sub Form1_KeyDown1(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
For x = 1 To 234
lab = Controls("Label" & x)
If e.KeyCode = Keys.A And lab.Location = New Point(lblPlayer.Location.X - 20, lblPlayer.Location.Y) And lab.Text <> "#" Then
lblPlayer.Location = lab.Location
ElseIf e.KeyCode = Keys.D And lab.Location = New Point(lblPlayer.Location.X + 20, lblPlayer.Location.Y) And lab.Text <> "#" Then
lblPlayer.Location = lab.Location
ElseIf e.KeyCode = Keys.W And lab.Location = New Point(lblPlayer.Location.X, lblPlayer.Location.Y - 13) And lab.Text <> "#" Then
lblPlayer.Location = lab.Location
ElseIf e.KeyCode = Keys.S And lab.Location = New Point(lblPlayer.Location.X, lblPlayer.Location.Y + 13) And lab.Text <> "#" Then
lblPlayer.Location = lab.Location
End If
Next x
End Sub
我认为这可能是由于网格中的标签位置错误(我已经确认为假),但即使如此,标签也不应该移动,而不是跳跃。它跳过的标签是一致的,但老实说我不明白为什么会跳过这些特定的标签。
我已经添加了一个sub,它使'player'已经通过更改颜色的每个标签,这表明它甚至没有通过'jumped'标签,它完全跳过它们,因为它们仍然存在相同的颜色。老实说,我看不出这段代码是如何允许的,因为它只应检查标签位于正确的位置,并且只有在那里找到该标签时才会移动。
我在这里有完整的脑屁吗?很抱歉,如果这是一个错误的地方,可以提出具体的问题。如果不是这样的场景,请将我指引到正确的位置。