2016-05-12 3 views
-1

Для моего класса нам нужно сделать игру в кости, я сделал I версию войны, мне нужно немного помочь ее завершить. Мне нужно отобразить последние пункты, и мне бы хотелось, чтобы как-то я мог показать разницу между результатами. Я также не знаю, как закончить цикл игры.Мне нужно закончить игру или продолжить Пока цикл для класса

public class Game { 

    public static void main(String[] args) 
     { 
     Dice myDie = new Dice(); 
     Dice CompDie= new Dice(); 

     int player =0; 
     int computer =0; 
     boolean gameOver; 
     do 
     { 
      int[] scores = new int[3]; 
      gameOver = false; 
      while(!gameOver) 
      { 
       myDie.roll(); 
       System.out.println("You rolled a " + myDie.getValue()); 
       player = myDie.getValue(); 

       CompDie.roll(); 
       System.out.println("Computer rolled a " + CompDie.getValue()); 
       computer = CompDie.getValue(); 

       checkResults(player, computer, scores); 
       printResults(scores); 

       // ask player if want to continue enter Y to continue 
       System.out.println("Do you want to continue playing enter Y if so"); // I need to end loop here 




      } 

     }while(keepPlaying()); 








     } 
    public static boolean keepPlaying() 
    { 
     Scanner readIn = new Scanner(System.in); 
     boolean playAgain = false; 
     System.out.println("Do you want to play again?"); 
     String answer = readIn.nextLine().toUpperCase(); 
     char ans = answer.charAt(0); 
     if(ans == 'Y') 
      playAgain = true; 
     return playAgain; 

    } 
    public static void checkResults(int player, int computer, int[] scores) 
    { 
     if(player > computer) 
     { 
      scores[1]++; 
     } 
     else if(player < computer) 
     { 
      scores[2]++; 
     } 
     else 
     { 
      scores[0]++; 
     } 
    } 
    public static void printResults(int[] list) 
    { 
     System.out.println("  Ties Player Computer"); 
     for (int i = 0; i < list.length; i++) 
     { 
      System.out.printf("%8d", list[i]); 
     } 
     System.out.println(); 
    } 
} 
+0

Самая внутренняя петля совершенно не нужна; вы должны избавиться от него и иметь код внутри него только в первом цикле. Вам также необходимо инициализировать 'score' перед первым циклом, иначе он будет заново создан как пустой массив каждый раз, когда цикл будет запущен, и не сохранит ранее добавленные значения. –

+0

Также нет необходимости отмечать это с помощью 'eclipse', поскольку этот вопрос не имеет ничего общего с IDE. –

+0

Я закончил цикл, и теперь мне нужно инициализировать оценки, как вы сказали, как мне это сделать, – Lucas

ответ

0
while(!gameOver) 
     { 

     } 

Этот цикл не является необходимым, а также никогда не останавливается. Если вы все еще этого хотите, вам нужно установить gameOver = true, когда вы хотите выйти.

Чтобы показать разницу между оценками, просто вычтите оценки друг от друга и распечатайте их. System.out.println(Math.abs(score[1] - score[2])); Что-то вроде этого.

+0

Хорошо, но как я могу взять данные от пользователя, когда они нажмут Y, чтобы продолжить, – Lucas

Смежные вопросы