Visual Basic中图片框的对角线移动



我正试图用Visual Basic创建一个简单的平台游戏,作为学校的项目。尽管我已经学会了如何使用WASD键向上、向下、向左和向右移动图片,但我无法通过按住两个键使PictureBox沿对角线移动。例如,当用户按下W键和D键时,PictureBox应该向右上角倾斜移动。简而言之,当用户持有两个键时,我如何对角移动PictureBox?

以下是迄今为止的代码。

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If DPressed = True Then
PictureBox1.Left = PictureBox1.Left + 9
ElseIf DPressed = True AndAlso WPressed = True Then
PictureBox1.Left = PictureBox1.Left + 9
PictureBox1.Top = PictureBox1.Top - 9
ElseIf APressed = True Then
PictureBox1.Left = PictureBox1.Left - 9
ElseIf SPressed = True Then
PictureBox1.Top = PictureBox1.Top + 9
ElseIf WPressed = True Then
PictureBox1.Top = PictureBox1.Top - 9
End If
End Sub
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.D Then
DPressed = True
ElseIf e.KeyCode = Keys.W Then
WPressed = True
ElseIf e.KeyCode = Keys.A Then
APressed = True
ElseIf e.KeyCode = Keys.S Then
SPressed = True
ElseIf (e.KeyCode And Not Keys.Modifiers) = Keys.D AndAlso e.Modifiers = Keys.W Then
DPressed = True
WPressed = True
End If
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.D Then
DPressed = False
WPressed = False
ElseIf e.KeyCode = Keys.W Then
WPressed = False
ElseIf e.KeyCode = Keys.A Then
APressed = False
ElseIf e.KeyCode = Keys.S Then
SPressed = False
End If
End Sub

例如

Private wDown As Boolean = False
Private aDown As Boolean = False
Private sDown As Boolean = False
Private dDown As Boolean = False
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.W
wDown = True
Case Keys.A
aDown = True
Case Keys.S
sDown = True
Case Keys.D
dDown = True
End Select
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
Select Case e.KeyCode
Case Keys.W
wDown = False
Case Keys.A
aDown = False
Case Keys.S
sDown = False
Case Keys.D
dDown = False
End Select
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim xIncrement = 0
Dim yIncrement = 0
If wDown Then
yIncrement -= 9
End If
If aDown Then
xIncrement -= 9
End If
If sDown Then
yIncrement += 9
End If
If dDown Then
xIncrement += 9
End If
PictureBox1.Location += New Size(xIncrement, yIncrement)
End Sub

也许可以尝试将DPressed、WPressed和APressed变量标记为Shared

最新更新