2013-08-29 226 views
4

我正在爲我的Java類製作一個狗文本冒險遊戲,而我最近的任務是爲遊戲添加概率和訓練。如果語句邏輯不能按預期工作

基本上我生成了一個隨機數,如果與技能 「Shake」相關的數字大於設置的數字,那麼狗將成功執行該技巧。

這部分爲我工作100%。

現在加入培訓是我遇到問題的地方。我將每項技能設置爲初始值1.每次技能成功執行時,值增加1.

我的目標是使最大值爲3,如果達到最大值,則狗每執行一次執行一次詭計!

這裏是我有什麼,希望有人可以解釋爲什麼它不工作

// Sit 
    if (Trick.equalsIgnoreCase("Sit")) { 
     if (roll >= 4 || sitSkill == 3) { 
      System.out.println("\n" + name + " sat down for you!"); 
      energy -= 10; 
      food -= 5; 
      sitSkill ++; 
      happy ++; 
     } else { 
      System.out.println("\n" + name + " did not perform the trick successfuly."); 
      energy -= 10; 
      food -= 6; 
      happy -= 20; 
     } 
    } 
+0

sitSkill == 3或sitSkill <= 3? –

+0

請遵守Java約定,並用小寫字母開始變量名稱。大寫字母是用於類名的! –

回答

7

我不能告訴你正在試圖獲得的幫助到底是什麼,但最明顯的問題,我可以看到在sitSkill == 3的情況下,你仍然調用sitSkill++,所以在迭代之後,它將等於4,導致如果roll太低,則觸發else語句。

3

我想你一旦達到3就必須停止增加sitSkill,否則每增加一個點就會增加sitSkill == 3總是錯誤的。

if(roll >= 4 || sitSkill == 3){ 
    if(sitSkill < 3) { 
     sitSkill++; 
    } 
    System.out.println("\n" + Name + " sat down for you!"); 
    Energy -= 10; 
    Food -= 5; 
    Happy ++; 
} 
0

變化

if(roll >= 4 || sitSkill == 3) 

if(roll >= 4 || sitSkill >= 3) 

if(Trick.equalsIgnoreCase("Sit")){ 
     if(roll >= 4 || sitSkill == 3){ 
      System.out.println("\n" + Name + " sat down for you!"); 
      Energy -= 10; 
      Food -= 5; 
      sitSkill = sitSkill == 3 ? sitSkill : sitSkill +); 
      Happy ++; 
     } 
     else{ 
      System.out.println("\n" + Name + " did not perform the trick successfuly."); 
      Energy -= 10; 
      Food -= 6; 
      Happy -= 20; 
     } 
    }