Игра Блэк Джек на Яве
Постановка задачи
У меня есть другая тема по этому вопросу, но я не могу найти его. По сути, у меня есть игра Блэк Джек. Пользователю выдаются две случайные карты (затем эти карты складываются вместе и отображают общее количество). Затем он запрашивает пользователя, хотят ли они другую карту (в целом они хотят, чтобы их общая сумма была ниже 21). Если они выбирают "да", им дают случайный номер карты (они могут продолжать получать карту, но не должны превышать 21), но если они выбирают "нет", игра останавливается.
Вот вывод, который я должен получить: [blackjackoutput.jpg]
И вот что я получаю: [output1.jpg]
Исходный код:
public class BlackJackGame {
public static void main(String[] args) {
int randomnum1 = (int) (1 + Math.random() * 10);
int randomnum2 = (int) (1 + Math.random() * 10);
int total;
char anotherCard = 'y';
char playAgain;
Scanner input = new Scanner(System.in);
// Prints cards player starts off with
System.out.println("First cards: " + randomnum1 + ", " + randomnum2);
// Sum of the 2 cards
total = randomnum1 + randomnum2;
// Prints Total
System.out.println("Total: " + total);
// Do While Loop that asks question to get lower than 21 or terminate.
while (anotherCard != 'n') {
if (total <= 21) {
System.out.print("Do you want another card? (y/n): ");
anotherCard = input.next().charAt(0);
int randomnum3 = (int) (1 + Math.random() * 10);
System.out.println("Card: " + randomnum3);
total += randomnum3;
System.out.println("Total: " + total);
} else if (total > 21) {
System.out.println("BUST.");
System.out.print("Would you like to play again? (y/n): ");
playAgain = input.next().charAt(0);
}
}
}
}
вопрос
Когда я достигаю 21, я выбираю "нет", чтобы остановить программу. Но он продолжает отображать следующую карту и обновленную сумму.
Когда я "БЮСТ". (Или перейти за 21). Он спросит меня, хочу ли я играть. И в отдельных случаях я выбираю "у", а там написано "бюст". и спрашивает меня, хочу ли я играть снова (он зацикливается, говорит "BUST." и задает мне тот же вопрос, не имея возможности завершить программу). То же самое, если я выберу "нет", он скажет "бюст". и спроси меня, могу ли я снова поиграть.
Как вы снова играете в игру?
ПОЖАЛУЙСТА ПОМОГИ!!!
1 ответ
Проблема у вас есть логическая проблема здесь:
if (total <= 21)
{
System.out.print("Do you want another card? (y/n): "); //<--------------
anotherCard = input.next().charAt(0);
int randomnum3 = (int) (1 + Math.random() * 10);
System.out.println("Card: " + randomnum3);
total += randomnum3;
System.out.println("Total: " + total);
Вам нужно проверить if(anotherCard == 'n')
вырваться из петли
Примечание
Эта игра в блэкджек должна иметь лучшее распределение случайных карт, лучше смоделированных из колоды из 52 карт