所以,我做了一个简单的商店,为我正在制作的游戏购买升级版。当我有了正确的或更多的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和!更新代码:
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!");
}
}发布于 2016-01-22 17:52:02
n是什么?我用attempt代替了它。
if,if改成了if,else。这有两个好处:
最大的好处是使代码更简单,一次只做一件事,并且不要重复:)希望这样可以减少big的数量。
以下是更新的代码:
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!");
}
}发布于 2016-01-22 17:49:34
您的for循环很奇怪:
for (MessageBox.Show("Checking..."); cookies > 9;n++)当cookies <= 9时不输入此循环。因此,您的if语句永远无法到达。
发布于 2016-01-22 17:56:51
您的代码不工作,因为循环条件是“只有在cookies数量大于9个时才循环”。如果数字小于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++) {
...
}https://stackoverflow.com/questions/34952894
复制相似问题