2015-10-19 34 views
-1

我應該在java中製作胡扯遊戲,但是我有一個問題。你看,技術上這場比賽已經結束了,但是即使你這樣做,也不會說你是否放棄了比賽。它只會繼續滾動直到你贏。我嘗試了一些解決方法,但它似乎只是將其陷入無限循環。遊戲規則: 擲兩個骰子。每個管芯具有分別代表值1,2,...和6的六個面。 檢查兩個骰子的總和。如果總數是2,3或12(稱爲擲骰子),那麼你輸了;如果總數是7或11(稱爲自然),你就贏了;如果總和是另一個值 (即,4,5,6,8,9或10),則建立一個點。繼續滾動骰子,直到 a 7或相同的積分值滾動。如果7滾動,你就輸了。否則,你贏了。胡扯遊戲Java

Example run: 
You rolled 4 + 4 = 8 
point is 8 
You rolled 6 + 2 = 8 
You win 

這裏是我的代碼如下:

import java.util.*; 
public class CrapsGame 
{ 

    public static void main (String[]args) 
    { 



     String restart = "y"; 
     Scanner scan = new Scanner(System.in); 
     int sum=rollDice(); 
     int points = points(sum); 
     boolean youWin=youWin(sum, points); 

     while(restart.equals("y")){ 
     youWin=false; 
     while(youWin==false){ 
      rollDice(); 
      sum=rollDice(); 
      points=points(sum); 
      youWin=youWin(sum, points); 
     } 


     System.out.print("\nWould you like to play again? y or n: "); 
     restart = scan.next(); 
     } 
     System.out.print("The program has ended!"); 
    } 
    public static int rollDice() 
    { 
     int num1= (int)(6.0*Math.random() + 1.0); //first die 
     int num2= (int)(6.0*Math.random() + 1.0); //second die 
     int sum= num1 + num2; //sum of roll 
     System.out.printf("\nYou have rolled %d + %d = %d\n", num1, num2, sum); //Prints the sum 
     return sum; 
    } 


    public static int points(int sum) 
    { 
     int points=0; 
     if (sum>=4 && sum<=6) { //Counts points based on your rolls 
     points = points + 1; 
     System.out.print("Your points are: " + points); 
     } 
     else if (sum>=8 && sum<=10){ 
     points = points + 1; 
     System.out.print("Your points are: " + points); 
     } 
     return points; 
    } 

    public static boolean youWin(int sum, int points) 
    { 
     boolean youWin=false; 
     if (sum==2 || sum==3 || sum == 12) { 
     youWin=false; 
     System.out.print("You lost with a " + sum); //Determines if you win or loose based on the sum and points and returns the youWin boolean 
     } 
     else if (sum==7 || sum==11) { 
     youWin=true; 
     System.out.print("You won with a " + sum); 
     } 
     else if (points==7){ 
     youWin=true; 
     } 
     return youWin; 
    } 

} 
+0

1.刪除代碼的所有噪音。刪除所有那些與你的問題無關的無意義評論和代碼。 2.你應該清楚你的行爲如何偏離預期的行爲。 3.學會使用調試器並追蹤它。通常這種問題很容易在調試器的幫助下發現 –

+0

我會這樣做的,我必須在那裏有所有的廢話,因爲這是我的教授希望我擁有的東西。我知道這沒有幫助。 – snipem1438

+0

你會在你的家庭作業中需要這些,但不是在這裏的問題。 –

回答

1

看來這個方法:

youWin=youWin(sum, points) 

需要返回超過2種。它應該:

  • 返回一個值,如果你肯定會輸
  • 返回一個值,如果你絕對贏
  • 返回一個值,如果你建立一個點。
+0

我正在循環,因爲它應該繼續打印總和並添加點數,直到您獲勝或您獲得擲骰子。我將根據遊戲規則進行更新。 – snipem1438