【发布时间】:2019-07-09 18:09:08
【问题描述】:
我有一个 while 循环显示一个图形节点数组(使用一个函数在要显示的图形节点中返回一个字符),然后是一个“移动”过程,该过程将一个“生物”从一个节点移动到另一个节点。生物通过按“W”、“A”、“S”或“D”来决定去哪里,然后从生物上解除占用(使用称为“解除占用”的函数)图形节点并将该生物放入图形节点中生物想要移动的方向。
我尝试在几乎所有地方抛出一些错误,并使用 trycatch 来中断不起作用的代码,但我没有收到任何错误。我在“选择案例”语句中添加了一个案例。
While True
Try
Console.SetCursorPosition(0, 0)
myMap.ShowMap()
myMap.MoveCreatures()
Catch ex As Exception
Console.Clear()
Console.WriteLine(ex.Message)
Console.ReadKey(True)
End Try
End While
Public Sub MoveCreatures()
For y = 0 To tiles.GetLength(1) - 1
For x = 0 To tiles.GetLength(0) - 1
If tiles(x, y).IsOccupied Then
tiles(x, y).MoveCreature()
End If
Next
Next
Public Sub MoveCreature() Implements ITile.MoveCreature
If Occupied = True Then
Creature.Action(Me)
Else
Throw New Exception("No creature to move here.")
End If
End Sub
Select Case Console.ReadKey(True).KeyChar
Case "w"
If currentTile.North IsNot Nothing Then
currentTile.North.Occupy(currentTile.Deoccupy)
Else
Throw New Exception("Can't go in this direction!")
End If
Case "a"
If currentTile.West IsNot Nothing Then
currentTile.West.Occupy(currentTile.Deoccupy)
Else
Throw New Exception("Can't go in this direction!")
End If
...
'S' 和 'D' 的代码是相同的减去方向变化。例如。 'S' 有
currentTile.South
当生物移动到“W”或“D”时,它不会重新显示地图,直到我按下另一个键,而当它移动到“A”或“S”时,它会立即刷新地图。我希望它在我按“W”、“A”、“S”或“D”中的任何一个时刷新地图。
附:抱歉放了这么多代码。
【问题讨论】:
-
您正在针对字符串测试 Char。将您的字符串更改为字符:
"w"c、"a"c等。 -
感谢您的帮助,我会尽快尝试,如果不起作用,我会添加更多代码,希望它有助于识别错误。
-
你能不能在所有调用ReadKey的地方都放一个断点,看看它是否挂在某个地方。
标签: vb.net select-case