2016-07-03 2 views
0

Я пытаюсь сделать гадательную игру, в которой я предлагаю пользователю ввести секретный номер, и у него есть 6 попыток сделать это правильно. У меня есть большая часть его, за исключением того, что я не могу заставить его сказать ему, как только он исчерпал свои попытки: «извините, вы закончили, секретный номер x»)Как заставить эту игру угадывать работать?

Мой код:

import java.util.*; 
import java.util.Scanner; 
public class GuessGame{ 
    static public void main(String[] args) 
    { 
    System.out.println("Welcome to the guessing game. I will pick a number between 1"); 
    System.out.println("and 100 and you will try to guess it in 6 tries or less. Here we go: "); 

    for (int i = 6; i > 0; i--) 
    { 
     Random rand = new Random(); 
     int secNumber = rand.nextInt(5); 
     int theNumber = secNumber; 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter a number: "); 
     int guess = s.nextInt(); 

     if (guess == theNumber) 
     { 
     System.out.println("That's it! You guessed it, the number was: " + theNumber + " and it took you " + (7 - i) + " tries."); 
     } 

     while(i > 0) { 
     if (guess < theNumber) 
     { 
     System.out.println("The secret number is bigger than than that. You have " + (i - 1) + " tries left."); 
     break; 
     } 
     else if (guess > theNumber) 
     { 
     System.out.println("The secret number is smaller than than that. You have " + (i - 1) + " tries left."); 
     break; 
     } 

    } 

Чтобы сообщить пользователю, когда он оставил нулевой попытки, а затем раскрыть секретный номер, я попробовал время (я == 0) { System.out.println (....); } Но это срабатывает сразу после первого предположения.

ответ

0

Цикл while не нужен, и стиль отключен. Вот мое решение.

import java.util.*; 
import java.util.Scanner; 


public class GuessGame { 
    public static void main(String[] args) { 
    System.out.println("Welcome to the guessing game. I will pick a number between 1"); 
    System.out.println("and 100 and you will try to guess it in 6 tries or less. Here we go: "); 
    int theNumber = rand.nextInt(5); 
    for (int i = 6; i > 0; i--) { 
     Random rand = new Random(); 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter a number: "); 
     int guess = s.nextInt(); 

     if (guess == theNumber) { 
     System.out.println("That's it! You guessed it, the number was: " + theNumber + " and it took you " + (7 - i) + " tries."); 
     } else if (guess < theNumber) { 
     System.out.println("The secret number is bigger than than that. You have " + (i - 1) + " tries left."); 
     } else if (i == 1) { 
     System.out.println("You could not guess the number"); 
     } else { 
     System.out.println("The secret number is smaller than than that. You have " + (i - 1) + " tries left."); 
     } 
    } 
    } 
} 
+0

, но мне нужно что-то явно для случая, когда я равен нулю, т.е. когда догадок будут исчерпаны. – user311302

+0

Я исправил его для вас. –

+0

спасибо! но кажется, что случайное число продолжает меняться по догадкам. Я думал, что это исправлено с переменной «theNumber». Как я могу это исправить? – user311302

0
  1. это время цикла не является необходимым.
  2. назначить secNumber вне цикла for.
  3. переменная theNumber не требуется.
  4. необходимо заменить rand.nextInt(5) на номер rand.nextInt(100) + 1, чтобы иметь номер от 1 до 100 включительно.
  5. Изменить i - 1 на i, так как количество учётных данных будет равно i.
  6. Удалите break из блоков, потому что они заставят вас покинуть игру.
  7. Добавить break в первое сообщение (если они выиграли)
  8. Добавить, если вы хотите, чтобы игрок знал, что игра окончена.

    import java.util.*; 
    import java.util.Scanner; 
    
    public class GuessGame 
    { 
        public static void main(String[] args) 
        { 
         System.out.println("Welcome to the guessing game. I will pick a number between 1"); 
         System.out.println("and 100 and you will try to guess it in 6 tries or less. Here we go: "); 
         Random rand = new Random(); 
         int secNumber = rand.nextInt(100) + 1; // 2 4 
         for (int i = 6; i > 0; i--) 
         { 
          Scanner s = new Scanner(System.in); 
          System.out.println("Enter a number: "); 
          int guess = s.nextInt(); 
    
          if (guess == secNumber) 
          { 
           System.out.println("That's it! You guessed it, the number was: " + secNumber + " and it took you " + (7 - i) + " tries."); 
           break; // 7 
          } 
          else if (guess < theNumber) 
          { 
           System.out.println("The secret number is bigger than than that. You have " + i + " tries left."); // 5 
          } 
          else if (guess > theNumber) 
          { 
           System.out.println("The secret number is smaller than than that. You have " + i + " tries left."); // 5 
          } 
    
          if(i == 1) // 8 
          { 
           System.out.println("Out of tries."); 
          } 
         } 
        } 
    } 
    
Смежные вопросы