所以我做了一个简单的商店来为我正在制作的游戏购买升级版。当我拥有正确或更多数量的cookie时,我可以购买升级并且它确实显示了消息框,但是如果我有更少,它什么都不做。没有消息框或任何东西。
public void button1_Click_1(object sender, EventArgs e) //2CookiesPerClick
{
for (MessageBox.Show("Checking..."); cookies > 9;n++)
{
if (cookies > 9)
{
panel1.Hide();
cookies -= 10;
MessageBox.Show("You bought 2 Cookies per Click!");
}
if (cookies < 9)
{
button1.Show();
label2.Show();
MessageBox.Show("You don't have enough cookies to buy this upgrade!");
}
}
}
编辑: 更新了它,感谢Rob和Amadeusz Wieczorek! 更新的代码:
public void button1_Click_1(object sender, EventArgs e)//2CookiesPerClick
{
if (cookies >= 10)
{
n++;
panel1.Hide();
cookies -= 10;
MessageBox.Show("You bought 2 Cookies per Click!");
}
else
{
button1.Show();
label2.Show();
MessageBox.Show("You don't have enough cookies to buy this upgrade!");
}
}
答案 0 :(得分:2)
你的for
循环很奇怪:
for (MessageBox.Show("Checking..."); cookies > 9;n++)
cookies <= 9
时未输入此循环。所以永远不会达到你的if
声明。
答案 1 :(得分:2)
n
?我用attempt
替换了它。
if
,if
更改为if
,else
。这有两个好处:
最大的好处是让代码更简单,一次做一件事,并且不要重复自己:)希望这会减少你的错误数量。
以下是更新后的代码:
MessageBox.Show("Checking...");
for (int attempt = 0; attempt < 10; attempt++)
{
cookies++;
if (cookies >= 10)
{
panel1.Hide();
cookies -= 10;
MessageBox.Show("You bought 2 Cookies per Click!");
}
else
{
button1.Show();
label2.Show();
MessageBox.Show("You don't have enough cookies to buy this upgrade!");
}
}
答案 2 :(得分:0)
您的代码不起作用,因为循环条件表示&#34;仅在Cookie的数量大于9时才循环播放#34;。如果数字小于9或等于9,则永远不会执行循环!
而且,我不清楚你为什么要使用循环。每次点击按钮时,该代码是否应该执行一次?
使用for循环的惯用方法是
const int N = 20;
for (int i = 0; i < N; i++) {
...
}
如果没有限制
for (int i = 0; true; i++) {
...
}
技术上可以在部分中调用消息框,但非常非常非常罕见!这个地方保留用于循环变量的声明和初始化。更好:在循环之前调用消息框:
MessageBox.Show("Checking...");
for (int cookies = 0; true; cookies++) {
...
}
答案 3 :(得分:0)
for
循环将继续执行代码,直到不满足条件(实际上,根本不能执行)。由于您的代码处于点击事件中,并且您的消息明确提到“每次点击”,因此我认为for
循环无关紧要。
这可能就是你想要做的事情:
public void button1_Click_1(object sender, EventArgs e) //2CookiesPerClick
{
MessageBox.Show("Checking...")
if (cookies > 9)
{
panel1.Hide();
cookies -= 10;
MessageBox.Show("You bought 2 Cookies per Click!");
}
if (cookies <= 9)
{
button1.Show();
label2.Show();
MessageBox.Show("You don't have enough cookies to buy this upgrade!");
}
}
由于这看起来像是一个家庭作业问题,我建议你将上面的内容与当前的代码进行比较,找出为什么你的代码不起作用。如果你仍然感到困惑,请随时发表评论