2014-05-01 33 views
-1

這不明白guessp1和guessp2和guessp3如何分配p1.number等代碼就有人棚點亮這個?我下文稱一個例子,從書中頭扎程序名猜謎遊戲,但我明白整個程序,但某些部分不undestood

public class GuessGame { 
    Player p1; 
    Player p2; 
    Player p3; 
    public void startGame() { 
     p1 = new Player(); 
     p2 = new Player(); 
     p3 = new Player(); 

     int guessp1 = 0; 
     int guessp2 = 0; 
     int guessp3 = 0; 

     boolean p1isRight = false; 
     boolean p2isRight = false; 
     boolean p3isRight = false; 
     int targetNumber = (int) (Math.random() * 10); 
     System.out.println(「I’m thinking of a number between 0 and 9...」); 

     while(true) { 
      System.out.println(「Number to guess is 「 + targetNumber); 
      p1.guess(); 
      p2.guess(); 
      p3.guess(); 
      guessp1 = p1.number;   //this part is not understood 
      System.out.println(「Player one guessed 「 + guessp1); 
      guessp2 = p2.number;   //this part is not understood 
      System.out.println(「Player two guessed 「 + guessp2); 
      guessp3 = p3.number;   //this part is not understood 
      System.out.println(「Player three guessed 「 + guessp3); 
      if (guessp1 == targetNumber) { 
       p1isRight = true; 
      } 
      if (guessp2 == targetNumber) { 
       p2isRight = true; 
      } 
      if (guessp3 == targetNumber) { 
       p3isRight = true; 
      } 
      if (p1isRight || p2isRight || p3isRight) { 
       System.out.println(「We have a winner!」); 
       System.out.println(「Player one got it right? 「 + p1isRight); 
       System.out.println(「Player two got it right? 「 + p2isRight); 
       System.out.println(「Player three got it right? 「 + p3isRight); 
       System.out.println(「Game is over.」); 
       break; // game over, so break out of the loop 
      } else { 
       // we must keep going because nobody got it right! 
       System.out.println(「Players will have to try again.」); 
      } // end if/else 
     } // end loop of loop 
    } // end method method end here 
} // end class 

我在那些我不明白的行前面添加了評論?所以請擺脫一些光線,這將是非常有幫助的完整

+1

請正確格式化您的代碼。很痛苦,現在閱讀它。 – kolossus

+0

Players是使用類Player的Player()對象。你有代碼嗎?顯然,當你使用player.guess()函數時,玩家會被問到屏幕上的一個數字,並將其存儲在這個玩家數字字段中 –

回答

0

Player類有一個實例變量'number'。這個變量包含玩家猜測的數字。你已經創建了Player的三個對象:p1,p2和p3。因此,當你說'p1.number'時,你正在訪問p1猜出的號碼,等等。

我假定每個玩家猜測的實例方法「猜()」,這是在單個對象P1,P2和P3打電話來獲得他們的猜測已經完成。

0

類播放器顯然有一個變量稱爲數字。它可以在您顯示的課程中通過p1.number,p2.number,p3.number訪問。

0

咆哮: 這是我所喜歡稱之爲「猴子編程」的典型例子。不是你,而是示例代碼的來源。 p1,p2和p3也可能被稱爲ITheAuthorAmAMonkey1,ITheAuthorAmAMonkey2和ITheAuthorAmAMonkey3,因爲這兩組名稱同樣有意義(在這種情況下,沒有意義)。

答: P1,P2和P3是遊戲的三個獨立的播放器。您評論的三條線是遊戲引擎,按順序檢索每個玩家對數字的猜測。玩家p1猜測,然後玩家p2猜測,然後玩家p3猜測。

代碼p1.guess()指示玩家P1進行推測。作爲迴應,玩家P1將猜測存儲在名爲number的類成員變量中。代碼guessp1 = p1.number是遊戲引擎,檢索玩家p1的猜測並將其存儲在名爲guessp1的局部變量中。

0

播放器是一個對象,我假定猜()是在播放器對象的方法,其產生1和10之間的隨機數,並保存它就像產生targetNumber播放器的數量可變。然後p1.number等呼叫爲該特定玩家生成的號碼進行比較