私は Visual Basic が初めてで、ユーザーに 2 つの画像が表示され、正しいものを選択する必要があるゲームを作成しようとしています (クイズのようなものです)。ただし、やりがいのあるものにしたいので、ユーザーがもう一度再生するたびに画像がランダムにペアになるようにします。
このために、約 10 枚の画像があり、一度に 2 枚ずつ表示されます。プレーヤーが正しい画像をクリックすると、ラベルを使用して記録されるポイントを受け取ることができ、2 つの新しい画像がそれらを置き換えてプロセスが繰り返されますが、それらが間違っている場合は、「正しくありません!」というメッセージが表示されます。 " その後、それらはマークを失い、2 つの新しい画像がそれらに置き換わります。
TableLayoutPanel と 2 つの画像ボックスを使用してインターフェイスを作成しました。ランダムな画像を生成するコードをいくつか作成しましたが、それらは繰り返されてしまいます。これは望ましくありません。しかし、コードの最後に RemoveAt を配置すると、それらは繰り返されませんが、プレーヤーが写真を 6 回クリックした後、「インデックスが範囲外です」というエラーが発生します。これは、ゲームが終了する前に発生するため、ドンそれもしたくない!
これが私がこれまでに持っているコードです:
初め:
Public Sub New()
' This call is required by Windows Form Designer
InitializeComponent()
' Add any initialization after the InitializeComponent() call
AssignImagesToSquares()
End Sub
Private random As New Random
Private images =
New List(Of Image) From {My.Resources.Aeroplane, My.Resources.Bicycle, My.Resources.Beginner_button, My.Resources.Bird, My.Resources.Butterfly,
My.Resources.Cartoon_Background_Wallpaper_719574, My.Resources.cartoon_farm, My.Resources.Clock, My.Resources.Egg_Timer,
My.Resources.Moderate_background, My.Resources.Tree, My.Resources.Umbrella, My.Resources.Woman}
と
Private Sub AssignImagesToSquares()
For Each Control In TableLayoutPanel1.Controls
Dim imageLabel = TryCast(Control, PictureBox)
If imageLabel IsNot Nothing Then
Dim randomNumber = random.Next(images.Count)
imageLabel.Image = images(randomNumber)
images.RemoveAt(randomNumber)
End If
Next
End Sub
Private Sub picturebox_clicked(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click,
PictureBox1.Click
Dim clickedLabel = TryCast(sender, PictureBox)
If clickedLabel.Image Is My.Resources.Butterfly Then
MsgBox("This is incorrect")
AssignImagesToSquares()
Else
AssignImagesToSquares()
End If
End Sub
コードは順番に書かれています。Visual Basic 2010 Express を使用します。詳細が必要な場合はお知らせください。ここで必死です!!
基本的に、画像の繰り返しを停止し、エラーが表示されないようにするにはどうすればよいですか。また、エラーは発生しませんが、蝶の画像をクリックしてもメッセージ ボックスが表示されません。