Я делаю простой рок, бумагу, ножницы. И иногда, когда я обновляю страницу, ничего не происходит. Когда это произойдет, ошибок не будет. Я попытался запустить этот код в онлайн-редакторе, например w3schools, но результат тот же. Что может вызвать эту проблему?
Вот мой код:
<body onload="game()">
<script>
function game(playerItem, computerSelection) {
function computerSelection() {
var arr = ["rock", "paper", "scissors"];
var computerSelection = arr[Math.floor(Math.random() * 3)];
return computerSelection;
}
var playerItem = "rock";
if (playerItem == "rock" & computerSelection() == "paper") {
document.write(rockVSpaper);
return;
};
if (playerItem == "rock" & computerSelection() == "scissors") {
document.write(rockVSscissors);
return;
};
if (playerItem == "rock" & computerSelection() == "rock") {
document.write(rockVSrock);
return;
};
}
var rockVSpaper = "You lose! The computer paper wraps your rock.";
var rockVSscissors = "You won! Your rock make the computer scissors blunt.";
var rockVSrock = "Tie! A Rock doesn't do anything with another rock.";
</script>
</body>
Иногда это не работает, потому что вы выполняете computerSelection()
три раза в своих условиях if
. Это означает, что каждый раз, когда вы проверяете, вы создаете новый случайный выбор компьютера, который означает, что все три, if
условия могут равняться false
.
Чтобы решить эту проблему, вы должны запустить computerSelection()
один раз и сохранить то, что она генерирует в переменной, а затем использовать ее в ваших операторах if
. Вот так:
var playerItem = "rock";
var computerItem = computerSelection();
if (playerItem == "rock" && computerItem == "paper") {
document.write(rockVSpaper);
return;
};
// The rest of the if statements and code...
Здесь кодируется после применения указанных модификаций.
&
bitwise, вместо этого вы должны использовать&&
логический оператор AND, если хотите, чтобы оба условия выполнялись ( stackoverflow.com/questions/7310109/… )