2014-11-14 81 views
0

所以,我正在設計一款RPG遊戲,而我的戰鬥系統無法正常工作。 我很新,但我很好理解我在這裏的大部分內容。每當我運行戰鬥系統時,'eHp'和'hp'變量都不會被更新。變量未更新

hit = rand() % atk + 1 + (rand() % 3 + 1); 
      diff = hit - OppD; 
      if (diff > 0) 
       eHp = eHp - diff; 
      if (eHp <= 0) 
       break; 
      OppHit = rand() % OppA + 1; 
      OppDif = OppHit - def; 
      hp = hp - OppDif; 
      if (hp <= 0) 
       break; 

這是在while循環內的switch語句中。健康點的顯示位於switch語句之前的while循環中。 switch語句用於決定玩家決定使用哪種攻擊。 如果您需要查看更多代碼。只要說你需要看多少,我會更新它。 謝謝!

+4

如果變量值(atk,hit,OppD ...)是一個健全的東西,如果if條件滿足並且內部執行代碼,並且如果有某種無法解釋的(就像條件不成立,條件成立,或者減法結果錯誤等)。 – deviantfan 2014-11-14 16:50:18

+0

@deviantfan不,我從來沒有被教過如何使用調試器 – ShadowWesley77 2014-11-14 17:50:17

+0

我也沒有(由其他人教導如何使用調試器),但這是非常重要的事情,您應該儘快自己學習。谷歌,只是試圖在一些程序。 – deviantfan 2014-11-14 18:30:18

回答

0

將代碼塊更改爲此代碼塊,然後將輸出粘貼到問題中,如果查看輸出尚未爲您解決問題。

hit = rand() % atk + 1 + (rand() % 3 + 1); 
diff = hit - OppD; 

std::cout << "hit: " << hit << "\ndiff:" << diff << "\neHP: " << eHp << std::endl; 

if (diff > 0) eHp = eHp - diff; 
if (eHp <= 0) break; 

OppHit = rand() % OppA + 1; 
OppDif = OppHit - def; 

std::cout << "OppHit: " << OppHit << "\nOppDif: " << OppDif << "\nhp: " << hp << std::endl; 

hp = hp - OppDif; 

if (hp <= 0) break; 
+0

改變到這個代碼塊沒有改變任何東西,它也不會執行cout語句 – ShadowWesley77 2014-11-14 18:03:03

+0

@ ShadowWesley77我希望它給了你一堆輸出。 – 2014-11-14 18:03:58

+0

@Johnathan Mee不,它沒有給我任何更多的輸出 – ShadowWesley77 2014-11-14 18:06:08

0

事實證明switch語句的條件是在char數據類型中,但我的情況是int數據類型。

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – dove 2014-11-14 18:44:26

+0

@dove但我想通了我的問題。有沒有辦法刪除這個問題? – ShadowWesley77 2014-11-15 02:31:12

+0

@ ShadowWesley77你應該在你的問題的底部看到這個:「分享|編輯|關閉|刪除|標記」只需點擊「刪除」 – 2014-11-15 15:21:33