[英]Equals or less in if sentence doesn't work
因此,我開了一家簡單的商店來購買自己正在制作的游戲的升級版。 當我擁有正確或更多數量的Cookie時,我可以購買升級,並且確實會顯示消息框,但是如果我的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!");
}
}
您的for
循環很奇怪:
for (MessageBox.Show("Checking..."); cookies > 9;n++)
cookies <= 9
時,不會進入此循環。 因此,您的if
語句永遠不會到達。
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!");
}
}
您的代碼無效,因為循環條件顯示“僅當cookie的數量大於九時才循環”。 如果數字小於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++) {
...
}
for
循環將一直在其中執行代碼,直到不滿足條件為止(實際上,它永遠不會執行)。 由於您的代碼處於click事件中,並且您的消息中專門提到“每次點擊”,因此在我看來, 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!");
}
}
由於這看起來像是一個家庭作業問題,因此建議您將上述內容與當前代碼進行比較,以弄清代碼為何無法正常工作。 如果您仍然感到困惑,請隨時發表評論
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.