В настоящее время я работаю над консольной игрой с группой из 3 человек, включая меня, которая создает игру «Блэк Джек» для школьного проекта, но у нас есть проблема в программе в классе Java «Menu.java». Iсоздал метод проверки текущего значения карты каждый раз, когда игрок выбирает «HIT» в инструкции switch в строке 63, которая затем вызывает метод playerGetCard () в классе Dealer.java, который затем вызывает метод n.addValue (Икс);в строке 143 и возвращает его в класс Menu.java, который затем складывает номер значения случайной карты, заданной в Dealer.java в методе установки, который был переименован в addValue в строке 22 в классе Menu.java, потому чтоЯ хочу сложить все числа, которые дает игрок, и как только кто-то выбирает «HIT» в классе Menu.Java в строке 37, он вызывает метод под названием «handValuePlayerCheck» в строке 26, который проверяет, является ли текущее значениеиз карт выше 21, если это произойдет, тогда игра заканчивается и меняет логическое значение setLose метода set на true в строке 14, но по какой-то причине оператор if отказывается выводить System.out.println («ВЫ ПОТЕРЯЛИ»«);а также не изменяет логическое значение на true, что завершает игру в методе menu () в строке 55 в классе Menu.java.
Я пробовал все, например, не использовать метод setter или getter итакже пытается использовать «это».метод, но это, похоже, тоже не работает, у кого-нибудь есть идея, почему это не обновляет логическое значение, называемое «потерять»?
Пробовал не использовать Getter / Setterметодов.
Изменены методы Getter / Setter в класс WinOrLose.java, но он не работает, также пытался поместить его в тот же класс, который проверяет числа на первом месте вКласс Menu.Java в строке 26
Также попытался использовать это. (VariableName);но, похоже, ничего не изменилось.
Попытка переименования переменных, но, похоже, ничего не изменилось.
Также попытался проверить, является ли переменнаяперезаписывает значение с тем же именем, но я не нашел ничего, что могло бы перезаписать что-либо.
Main.java
package com.tony;
public class Main {
public static void main(String[] args) {
Dealer d = new Dealer();
Menu menu = new Menu();
d.Cards();
menu.menu();
}
}
Dealer.java
package com.tony;
import java.util.ArrayList;
import java.util.Random;
import java.util.HashMap;
public class Dealer {
String cardName;
private int randomInt;
private int value;
private WinOrLose wl = new WinOrLose();
private Menu m = new Menu();
private HashMap<Integer, String> hmap = new HashMap<Integer, String>();
public void Cards(){
int counter = 1;
for(int i = 0; i<9; i++){
counter++;
hmap.put(i, counter + " of diamonds");
}
counter = 1;
for(int i = 9; i<18; i++){
counter++;
hmap.put(i, counter + " of clubs");
}
counter = 1;
for(int i = 18; i<27; i++){
counter++;
hmap.put(i, counter + " of hearts");
}
counter = 1;
for(int i = 27; i<36; i++){
counter++;
hmap.put(i, counter + " of spades");
}
for(int i = 36; i<37; i++){
hmap.put(i, "Ace of diamonds");
}
for(int i = 37; i<38; i++){
hmap.put(i, "Ace of clubs");
}
for(int i = 38; i<39; i++){
hmap.put(i, "Ace of hearts ");
}
for(int i = 39; i<40; i++){
hmap.put(i, "Ace of spades");
}
for(int i = 40; i<41; i++){
hmap.put(i, "Jack of diamonds");
}
for(int i = 41; i<42; i++){
hmap.put(i, "Jack of clubs");
}
for(int i = 42; i<43; i++){
hmap.put(i, "Jack of hearts");
}
for(int i = 43; i<44; i++){
hmap.put(i, "Jack of spades");
}
for(int i = 44; i<45; i++){
hmap.put(i, "Queen of spades");
}
for(int i = 45; i<46; i++){
hmap.put(i, "Queen of diamonds");
}
for(int i = 46; i<47; i++){
hmap.put(i, "Queen of clubs");
}
for(int i = 47; i<48; i++){
hmap.put(i, "Queen of hearts");
}
for(int i = 48; i<49; i++){
hmap.put(i, "King of spades");
}
for(int i = 49; i<50; i++){
hmap.put(i, "King of diamonds");
}
for(int i = 50; i<51; i++){
hmap.put(i, "King of clubs");
}
for(int i = 51; i<52; i++){
hmap.put(i, "King of hearts");
}
}
public void dealCard(){ // Once hit has been selected this will randomly generate a number
this.randomInt = (int) (Math.random()*52+1);
setCardName(hmap.get(this.randomInt));
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public void playerGetCard() { // that card and it's value and adds it to m.addValue();
ArrayList<String> player = new ArrayList<String>();
player.add(getCardName());
if(getCardName().contains("Ace")){
System.out.println("This is an " + getCardName());
//Check players total card number if goes over add 1
//if doesn't add 10
if(m.getValue() <= 11){
m.addValue(11);
}else{
m.addValue(1);
}
}else if(getCardName().contains("Jack") || getCardName().contains("Queen") || getCardName().contains("King")) {
System.out.println("This is a " + getCardName());
// Check max in winorlose
m.addValue(10);
}else {
int n = Integer.parseInt(getCardName().substring(0, 1));
System.out.println(n);
m.addValue(n);
// check max in winorlose
System.out.println("Name of random card is " + getCardName());
}
System.out.println("Your total hand value is: " + m.getValue());
}
}
Menu.java
package com.tony;
import java.util.Scanner;
public class Menu {
private boolean lose;
private int value;
public boolean isLose() {
return lose;
}
public void setLose(boolean lose) {
this.lose = lose;
}
public int getValue() {
return value;
}
public void addValue(int value) { // This takes the value of the randomly given card and adds it here.
this.value = this.value + value;
}
public void handValuePlayerCheck(){ // Checks if the value of the cards that were given goes over 21 if it does then change boolean lose to false and display "You lost"
System.out.println(isLose());
if(this.value > 21){
System.out.println("YOU LOST");
setLose(true);
}
}
public void menu(){
Scanner i = new Scanner(System.in);
Player p = new Player();
Dealer d = new Dealer();
System.out.println("Welcome to black jack!");
d.Cards();
System.out.println("What is your name?");
p.setName(i.nextLine());
System.out.println("Let's Begin!");
System.out.println();
System.out.println("1: Hit");
System.out.println("2: Split");
System.out.println("3: Hold");
System.out.println("4: Double Down");
System.out.println("5: Surrender");
System.out.println("Your turn!");
while(true){
if (isLose()) {
System.out.println("You lost! Try again!");
break; // IF lose variable is set to TRUE then the game will end using the break command and display "You lost! Try Again!"
}
boolean has = i.hasNextInt();
if (has) {
switch (i.nextInt()) { //This calls the methods case 1: is the "HIT" option.
case 1:
handValuePlayerCheck();
d.dealCard();
d.playerGetCard();
break;
}
}
}
}
}