我是 Visual Basic 的新手,我正在尝试创建一个游戏,用户将看到两个图像,并且需要选择正确的一个(有点像测验)。但是,我希望它具有挑战性,因此希望在用户再次播放时随机配对图像。
为此,我有大约 10 张图片,一次展示两张。如果玩家点击正确的图像,他们可以继续并获得一个点,该点将使用标签记录,两个新图像将替换它们并重复该过程,但如果它们不正确,则会出现一条消息,说“不正确! " 然后他们将失去一个标记,两个新图像将取代它们。
我使用 TableLayoutPanel 和两个图片框创建了界面。我已经制作了一些生成随机图片的代码,但它们最终会重复自己,这是我不想要的!但是,如果我将 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 速成版。非常感谢任何帮助,如果您需要更多详细信息,请告诉我!我在这里绝望了!!
基本上,如何阻止图像重复并阻止错误出现。此外,没有错误发生,但是如果单击蝴蝶图像,则它不会显示 msgbox,那么那里出了什么问题?