为什么程序在“if”处于“if”时将其设置为“else”?

时间:2013-05-20 11:57:28

标签: arrays if-statement random picturebox

我正在开发一款游戏。

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

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

它将播放特定的声音以正确发出错误的特定声音。

为什么我要调试, 它应该工作几次然后, 点击按钮1, 它去了别的而不是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;

        }

    }

我似乎找不到任何应该使它不起作用的东西,我忽略了什么?

1 个答案:

答案 0 :(得分:1)

不能说这个代码为什么。您已确保文本在调试的文本框中完全正确吗?

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

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

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

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

也可以从一开始就使用解释变量名,而不是textBox1,Form1等。从长远来看,这样做会更容易。