我正在开发一款游戏。
场景中有一个图片框,图片框的图像设置在一个数组中,该数组在用户在文本框中回答图像的正确名称后随机更改。
我现在已经设置了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;
}
}
我似乎找不到任何应该使它不起作用的东西,我忽略了什么?
答案 0 :(得分:1)
不能说这个代码为什么。您已确保文本在调试的文本框中完全正确吗?
但是一些一般的建议:使用textBox1.Text.Trim()。ToLower()并进行比较。然后你不必检查那么多不同的版本。
如果图像是,那么为什么数组中的单词也不是?那你只需要一次比较。只需存储图像/单词的索引即可。即使它有效,比较图像对象也不是最好的方法。
而不是poengInt + = -1;而是poengInt - = 1;更好更容易理解。
为什么在开始时为正确和错误创建SoundPlayer实例,然后在实际播放声音时再次创建它们?
也可以从一开始就使用解释变量名,而不是textBox1,Form1等。从长远来看,这样做会更容易。