Как я могу написать консольную Java-игру для воспроизведения, когда пользователь вводит "1"?
Прежде всего, я хотел бы сказать, что я ДЕЙСТВИТЕЛЬНО новичок во всем этом... Я старался выучить как можно больше, поэтому извиняюсь, если какой-либо мой код кажется смешным или повсеместным, но мне нужно было где-то начать. (Кстати, сама основа этого кода относится к CrossCoastGaming: http://tinyurl.com/kktyq4e).
Теперь к вопросу. Я улучшил (из-за отсутствия лучшего слова) кодирование, которое показывает человек в видео, добавив несколько разных фраз, используя переменные и добавив счетчик попыток. Вот мой код:
import java.util.Random;
import java.util.Scanner;
public class Main {
public static int number, guess, tryCount, replay;
public static int maxValue =1;
public static Scanner scan;
public static Random rand;
public static void main(String args[]) {
scan = new Scanner(System.in);
rand = new Random();
System.out.print("Enter a maximum number: ");
while(maxValue < 2)
maxValue = scan.nextInt();
number = rand.nextInt(maxValue);
System.out.print("Guess a number from 1 to " + maxValue + ": ");
while (guess != number) {
guess = scan.nextInt();
tryCount++;
if (guess < 1) {
System.out.print("Guess is not positive. Try again: ");
}else if (guess < number) {
System.out.print("Too low! Try again: ");
}
if (guess > maxValue) {
System.out.println("Guess is higher than " + maxValue + ". Try again: ");
}else if (guess > number) {
System.out.print("Too high! Try again: ");
}
}
if (tryCount == 1) {
System.out.println("Nailed it! It only took you 1 try!");
}
else {
System.out.println("Nailed it! It took you " + tryCount + " tries.");
}
System.out.println("Type 0 to play again. Type 1 to quit.");
if (replay == 1) {
replay = scan.nextInt();
}
}
}
Хорошо, я надеюсь, что это дает любому, кто знает, что они делают, представление о моей цели. Теперь, как вы можете видеть по этой строке:
if (replay == 1) {
replay = scan.nextInt();
}
Я хотел бы написать способ, чтобы люди могли воспроизвести игру без перезагрузки файла. У меня уже есть представление о том, что я хотел бы сделать, но я искал повсюду и, похоже, не могу понять, что продолжать после этого. Я уверен, что что-то упустил. Любая помощь будет принята с благодарностью.
1 ответ
Вы можете использовать цикл do-while для достижения этой цели:
import java.util.Random;
import java.util.Scanner;
public class Main {
public static int number, guess, tryCount, replay;
public static int maxValue = 1;
public static Scanner scan;
public static Random rand;
public static void main(String args[]) {
scan = new Scanner(System.in);
rand = new Random();
do { // start of do-while loop
tryCount = 0; // reset tryCount
System.out.print("Enter a maximum number: ");
while(maxValue < 2) {
maxValue = scan.nextInt();
}
number = rand.nextInt(maxValue);
System.out.print("Guess a number from 1 to " + maxValue + ": ");
while (guess != number) {
guess = scan.nextInt();
tryCount++;
if (guess < 1) {
System.out.print("Guess is not positive. Try again: ");
} else if (guess < number) {
System.out.print("Too low! Try again: ");
}
if (guess > maxValue) {
System.out.println("Guess is higher than " + maxValue + ". Try again: ");
} else if (guess > number) {
System.out.print("Too high! Try again: ");
}
}
if (tryCount == 1) {
System.out.println("Nailed it! It only took you 1 try!");
} else {
System.out.println("Nailed it! It took you " + tryCount + " tries.");
}
do { // check the user's input
System.out.println("Type 0 to play again. Type 1 to quit.");
replay = scan.nextInt();
if (replay != 0 && replay != 1) {
System.out.println("Input not recognized.");
}
} while (replay != 0 && replay != 1);
} while (replay == 0); // end of do-while loop
}
}
Циклы do-while всегда выполняются хотя бы один раз. Условие проверяется в конце цикла.