Суть этого задания в том, что есть два игрока, которые вынимают палку из колоды. Я сделал класс, в котором есть количество доступных палочек. Существует метод, который вызывается для удаления палочек. Однако, когда я пытаюсь удалить палочки, количество палочек не меняется. Поэтому игра не в состоянии закончиться, потому что все еще есть палочки, «оставленные».
Я пытался использовать инт палки для вычитания. Общее количество палочек изменяется, но только в том методе, в котором они вычитаются. Количество палочек не меняется в основном методе.
Я решил использовать классы, как я видел на этом сайте, именно так можно решить эту проблему. У меня не было успеха с этим.
Итак, я создал класс с количеством палочек, поэтому теперь количество палочек одинаково для каждого метода. Та же проблема сохраняется. Тот, который изменяет количество палочек в методе getSticksRemove (), но не main () или getSticksLeft ().
//Main Class
public class Main {
//Method to remove sticks which considers different scenarios.
public static int getSticksRemove(int sticks) {
sticks = StickPile.getValue(StickPile.value);
Scanner input = new Scanner(System.in);
print ("How many sticks to remove?(1-3)");
int x = input.nextInt();
if( x>=1 && x<=3) {
sticks -= x;
}else if(sticks < 3 && x ==2 ) {
print("Not enough sticks left.");
getSticksRemove(sticks);
}else if (x>3) {
sticks -=3;
}else { `enter code here`
sticks-=1;
}
print(sticks);
return sticks;
}
//Main method
public static void main(String [] args) {
StickPile stickPile = new StickPile();
int turnP1 = 0;
int turnP2 = 0;
int sticks = 0;
print("How many sticks are there initially? (1-100)");
StickPile.setValue();
sticks = StickPile.getValue(StickPile.value);
//This is the loop that determines when to stop the game
while(sticks != 0) {
System.out.print("Player 1: ");
getSticksRemove(sticks);
getSticksLeft(sticks);
turnP1++;
System.out.print("Player 2: ");
getSticksRemove(sticks);
getSticksLeft(sticks);
turnP2++;
}
if(turnP1 % 2 == 0 && turnP2 % 2 == 1) {
System.out.println("P2 Loses");
}else {
System.out.println("P1 Loses");
}
}
}
// This StickPile class is the one I made to store the number of sticks.
public class StickPile {
static Scanner input = new Scanner(System.in);
public static int value;
public static void setValue() {
value = input.nextInt();
}
public static int getValue(int x) {
x = value;
System.out.println(x);
return x;
}
Я ожидаю ввести количество палочек для удаления из стопки. Ex. Количество ворсов: 20 -> Удалить: 12 -> Количество ворсов: 8.
However, I get Ex. PileAmoun: 20 --> Remove: 5--> PileAmount: 20,