0

基本上我必须设计一个水果游戏,其中会随机生成一个水果,孩子必须猜测水果的类型。如果孩子猜对了,他们会收到一条消息说恭喜,如果他们猜错了,他们会收到一条消息说“再试一次”。

我已经完成了编程,但是当我输入水果的名称时,我不知道哪里出错了。因为即使它是正确的,它也会发出一条信息说它是错误的。

我有当水果正确时的程序代码和带有它的信息。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Button1.Visible = True ' The tools that will need to be hide when the check button is cliked
        Button2.Visible = False
        PictureBox1.Visible = False
        TextBox1.Visible = False
    If Label1.Text = "1" And TextBox2.Text = "Banana" Then ' If both are true then the following result is true
        PictureBox2.Image = My.Resources.Well_done 'my.resources.name 'The well_done picture that appears for the correct
        PictureBox2.Visible = True                                        '- answer and at the same time it has to be visble
        Label2.Text = "Congrats! " & TextBox2.Text & "! Correct answer!" 'The msg which appears for the correct answer
        Label2.Visible = True
        Me.BackColor = Color.Yellow      ' The background colour of the form 
    ElseIf Label1.Text = "2" And TextBox1.Text = "apple" Then 'Similary for apple banana and other fruits
        PictureBox2.Image = My.Resources.Well_done
        PictureBox2.Visible = True
        Label2.Text = "Congrats " & TextBox2.Text & "! Correct answer!"
        Label2.Visible = True
        Me.BackColor = Color.Green
    ElseIf Label1.Text = "3" And TextBox1.Text = "orange" Then
        PictureBox2.Image = My.Resources.Well_done
        PictureBox2.Visible = True
        Label2.Text = "Congrats " & TextBox2.Text & "! Correct answer!"
        Label2.Visible = True
        Me.BackColor = Color.Orange
    ElseIf Label1.Text = "4" And TextBox1.Text = "Strawberry" Then
        PictureBox2.Image = My.Resources.Well_done
        PictureBox2.Visible = True
        Label2.Text = "Congrats " & TextBox2.Text & "! Correct answer!"
        Label2.Visible = True
        Me.BackColor = Color.IndianRed
    ElseIf Label1.Text = "5" And TextBox1.Text = "Grapes" Then
        PictureBox2.Image = My.Resources.Well_done
        PictureBox2.Visible = True
        Label2.Text = "Congrats " & TextBox2.Text & "! Correct answer!"
        Label2.Visible = True
        Me.BackColor = Color.Green
4

2 回答 2

2

您的问题的答案可能是因为外壳问题。尝试使用 ToLower() 并确保您的字符串也是小写的。

不过附带说明一下,如果您创建一个名为 Fruit 的抽象类,然后从该类派生不同类型的水果(苹果、草莓等),则可以更高效地编写此代码。然后,您可以创建一个名为 ToString() 的抽象方法,并将输入与 ToString() 方法进行比较。这将使您不必在代码中使用大量的“If”。

于 2013-04-17T23:54:47.477 回答
0

只是为了澄清 icemanind 所说的,您想删除字符串的任何大小写问题。我可以看到你有草莓(大写 S)和橙色(没有大写),这意味着你没有设置真正的字符串结构。请记住,当您检查字符串是否匹配时,他们必须完全按照您的测试输入。

所以你使用 .toUpper 或 .toLower。这会将文本框中的文本转换为小写或大写 - 然后您测试的字符串应该全部小写(我猜小写更容易。)

所以每一行应该更像......

If Label1.Text = "1" Andalso TextBox2.Text.ToLower = "banana" Then

现在您可以在文本框中输入 BAnaNa,它将被测试为香蕉。另请注意,我使用过 Andalso——它对未来的使用有好处。Andalso 应该用于这些类型的测试,因为如果第一个条件有效,它只会检查第二个条件。并检查两者,即使第一个是假的。没什么大不了的,但好的做法和更好的表现。

于 2013-04-19T00:45:59.053 回答