1
私はビジュアルベーシックで迷路アプリケーションを構築しています。ゲームは2つの変数XとYが整数に依存しています。基本的にフォームを無効にして再描画を行うタイマーがあります。今私の質問は、フォームの周りに点在する様々な正方形と長方形があるということです。フォームを描画する四角形がこれらのオブジェクトに接触している場合、ハンドラを作成する方法、またはそのようなものを作成する方法はありますか?VB.NET迷路の衝突を検出する方法
コード:
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を変更するには、矢印キーを使用する必要があり、それが再描画したときに、それが移動します。
おかげ
ので:ブロックは、ここにプレイヤーのユニットである、Listofthingsはすべてを含むリストでありますボード上の矩形の 1つの質問:Public Sub New()とは何ですか?これはForm1_Loadの意味ですか? – Azerty560
@ Azerty560はい、基本的に、x、y、w、h変数は単純な矩形オブジェクトです。 – LarsTech
すべての矩形で配列のリストを手入力する必要がありますか? (これは私が実際にフォーム上に何も絶対に必要としないのですか?) 回答ありがとう=) – Azerty560