0

我正在开发一个游戏。

场景中有一个图片框,图片框的图像设置在一个数组中,该数组在用户在文本框中回答正确的图像名称后随机变化。

我现在已经设置了一个 Int 变量正确增加和错误减少。

它将播放正确的特定声音和错误的特定声音。

为什么我要调试,它应该按原样工作几次,然后通过单击按钮 1,它转到 else 而不是 if。

因此,即使在文本框中设置了正确的输入,我也不会增加 Int 并播放错误的音频。这是代码:

namespace AngelinaSkriver2
{
public partial class Form1 : Form
{

    Bitmap[] bildeListe = new Bitmap[4];

    int poengInt;

    Random r = new Random();


    public Form1()
    {
        InitializeComponent();

        bildeListe[0] = Properties.Resources.ål;
        bildeListe[1] = Properties.Resources.ant;
        bildeListe[2] = Properties.Resources.apple;
        bildeListe[3] = Properties.Resources.arm;

        pictureBox1.Image = bildeListe[r.Next(0, 3)];

    }

    public void button1_Click(object sender, EventArgs e)
    {
        int tilfeldigBildet = r.Next(0, 3);
        SoundPlayer riktigLyd = new SoundPlayer("lyd/applause.wav");
        SoundPlayer feilLyd = new SoundPlayer("lyd/feil.wav");

        if (pictureBox1.Image == bildeListe[0])
        {
            if (textBox1.Text.Trim().ToLower() == "ål")
            {

                riktigLyd.Play();

                poengInt += 1;

                textBox1.Text = "";

                pictureBox1.Image = bildeListe[tilfeldigBildet];

            }
            else
            {

                feilLyd.Play();

                poengInt -= 1;

                textBox1.Text = "";
            }

            String poengString = poengInt.ToString();
            label1.Text = poengString;

        }


        if (pictureBox1.Image == bildeListe[1])
        {
            if (textBox1.Text.Trim().ToLower() == "maur")
            {

                riktigLyd.Play();

                poengInt += 1;

                textBox1.Text = "";

                pictureBox1.Image = bildeListe[tilfeldigBildet];

            }
            else {

                feilLyd.Play();

                poengInt -= 1;

                textBox1.Text = "";
            }

            String poengString = poengInt.ToString();
            label1.Text = poengString;

        }

        if (pictureBox1.Image == bildeListe[2])
        {
            if (textBox1.Text.Trim().ToLower() == "eple")
            {

                riktigLyd.Play();

                poengInt += 1;

                textBox1.Text = "";

                pictureBox1.Image = bildeListe[tilfeldigBildet];
            }
            else
            {

                feilLyd.Play();

                poengInt -= 1;

                textBox1.Text = "";
            }

            String poengString = poengInt.ToString();
            label1.Text = poengString;

        }

        if (pictureBox1.Image == bildeListe[3])
        {
            if (textBox1.Text.Trim().ToLower() == "arm")
            {

                riktigLyd.Play();

                poengInt += 1;

                textBox1.Text = "";

                pictureBox1.Image = bildeListe[tilfeldigBildet];
            }
            else
            {

                feilLyd.Play();

                poengInt -= 1;

                textBox1.Text = "";
            }

            String poengString = poengInt.ToString();
            label1.Text = poengString;

        }

    }

我似乎找不到任何应该使它不起作用的东西,我是否忽略了某些东西?

4

1 回答 1

1

无法从这段代码中说出原因。您已确保文本与调试文本框中的文本完全一致?

但一些一般性建议:使用 textBox1.Text.Trim().ToLower() 并进行比较。然后你不必检查那么多不同的版本。

如果图像是,为什么数组中的单词也不是?那么你只需要一个比较。只需存储图像/单词的索引即可。比较图像对象不是最好的方法,即使它有效。

而不是 poengInt += -1; 而是 poengInt -= 1; 更好,更容易理解。

为什么一开始就为正确和错误创建 SoundPlayer 的实例,然后在实际播放声音时再次创建它们?

还要从一开始就使用解释变量名称,而不是 textBox1、Form1 等。从长远来看,它会变得容易得多。

于 2013-05-20T12:11:55.907 回答