В данном коде ваш метод main
фактически сводится к
public static void main(String[] args) {
Random r = new Random();
int left = r.nextInt(16) + 15;
int userOrCpu = 1, user;
while (true) {
user = userMove(left);
if (isValidEntry(left, user)) {
if (left == user) {
playLastStone(userOrCpu);
break;
}
left -= user;
}
}
}
И поэтому теперь ясно, что ваш компьютерный плеер cpu
никогда не доходит до своей очереди.
проблема в том, что ваше назначение UserOrCpu += 1;
не попадает в нужную область и не имеет никакого эффекта.
«Фиксированный» метод main
должен выглядеть так
public static void main(String[] args) {
Random r = new Random();
int left = r.nextInt(16) + 15;
int UserOrCpu = 1, User = 1, temp;
while (true) {
if (UserOrCpu % 2 == 1) {
User = userMove(left);
if (isValidEntry(left, User)) {
if (left == User) {
playLastStone(UserOrCpu);
break;
}
left -= User;
} else {
continue;
}
} else {
computerMove(left);
temp = computerMove(left); // executes computer move a 2nd time?
if (left <= temp) {
playLastStone(UserOrCpu);
break;
} else {
left -= temp;
}
}
UserOrCpu += 1;
}
}
Подсказка: Получите себе IDE (например, IntelliJ) для написание кода. Такой редактор кода сразу укажет на «очевидные» проблемы с вашим кодом.