Visual Basic で迷路アプリケーションを作成しています。ゲームは、整数である X と Y の 2 つの変数に依存します。再描画のためにフォーム全体を基本的に無効にするタイマーがあります。私の質問は、フォームの周りにさまざまな正方形や長方形が点在していることです。フォームが描画する正方形がこれらのオブジェクトに触れているかどうかを検出するために、ハンドラーまたはそのようなものを作成するにはどうすればよいですか?
コード:
Public Class Form1
Const W As Integer = 35 'Width
Const H As Integer = 35 'Height
Dim X As Integer
Dim Y As Integer
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'Handles if a key is pressed
Select Case e.KeyCode
Case Keys.Up
Y -= 2
Case Keys.Down
Y += 2
Case Keys.Left
X -= 2
Case Keys.Right
X += 2
Case Keys.Escape
Me.Close()
End Select
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "Maze"
TmrRedraw.Start()
MsgBox("Press ESC to quit")
Cursor.Position = Me.Location
End Sub
Private Sub TmrRedraw_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TmrRedraw.Tick
If CollisionDetect() = False Then
Me.Invalidate()
CheckForWin()
End If
End Sub
Private Function CollisionDetect()
Dim Collision As Boolean = False
'Here is where the problem lies
Return Collision
End Function
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.FillRectangle(Brushes.Blue, X, Y, W, H)
End Sub
Private Sub CheckForWin()
Dim WinSqX As Integer = WinSquare.Location.X
Dim WinSqY As Integer = WinSquare.Location.Y
If X = WinSqX And Y = WinSqY Then
TmrRedraw.Stop()
MsgBox("Congratulations! You won!")
Me.Close()
End If
End Sub
End Class
そうそう、プレーヤーは矢印キーを使用して X と Y を変更する必要があり、再描画すると移動します。
ありがとう