В настоящее время я делаю игру с бумажными ножницами, в которой вы играете против компьютера. Мой цикл while для контроля, который достиг максимального значения, продолжает замерзать. Надеюсь, что нижеприведенный метод не слишком прост для чтения и содержит достаточную информацию. В основном, когда я играю в игру и пытаюсь сделать ход, программа просто зависает. Я пробовал программу без цикла while, и он отлично работает. Я сделал так, чтобы каждый шаг был числом. 0 для скалы, 1 для ножниц и 2 для бумаги. Метод computerPlayer.newChoice(); является случайным числом из другого класса.Замерзание в петле
public void newChoice() {
while (humanS < 3 && computerS < 3) {
computerPlayer.newChoice();
if (playerChoice == 0) {
viewer.jLblHumanM.setText("Sten");
if (computerPlayer.choice == 0) {
viewer.jLblComputerM.setText("Sten");
} else if (computerPlayer.choice == 1) {
HScore += 1;
viewer.jLblComputerM.setText("Sax");
viewer.jLblHumanS.setText("" + HScore);
} else if (computerPlayer.choice == 2) {
CScore += 1;
viewer.jLblComputerM.setText("Påse");
viewer.jLblComputerS.setText("" + CScore);
}
} else if (playerChoice == 1) {
viewer.jLblHumanM.setText("Sax");
if (computerPlayer.choice == 0) {
HScore += 1;
viewer.jLblComputerM.setText("Sten");
viewer.jLblHumanS.setText("" + HScore);
} else if (computerPlayer.choice == 1) {
viewer.jLblComputerM.setText("Sax");
} else if (computerPlayer.choice == 2) {
HScore += 1;
viewer.jLblComputerM.setText("Påse");
viewer.jLblHumanS.setText("" + HScore);
}
} else if (playerChoice == 2) {
viewer.jLblHumanM.setText("Påse");
if (computerPlayer.choice == 0) {
viewer.jLblComputerM.setText("Sten");
HScore += 1;
viewer.jLblHumanS.setText("" + HScore);
} else if (computerPlayer.choice == 1) {
viewer.jLblComputerM.setText("Sax");
CScore += 1;
viewer.jLblComputerS.setText("" + CScore);
} else if (computerPlayer.choice == 2) {
viewer.jLblComputerM.setText("Påse");
}
}
}
}
если '(Humans <3 && КОМПЬЮТЕРОВ <3)', то вы будете продолжать называть 'newChoice' навсегда (и, вероятно, получить StackOverflowError в какой-то момент) .. – assylias
Я не думаю, что вы увеличиваете свои переменные 'humanS' или' computerS' ... – brso05
Какой поток выполняет этот код? – talex