мой код выглядит примерно так, но у меня есть проблема. Всякий раз, когда выбор один и тот же, игра перезапускается. После окончания игры я получаю предупреждение «undefined», потому что функция startGame() снова запускается с параметрами из первого раунда (где выборы были одинаковыми).Как остановить цикл после того же выбора?
Я новичок в словах JS и хотел бы сохранить это как можно более простым. Может ли кто-нибудь помочь мне, предоставив решение о том, как остановить «неопределенный»?
// the game starts here
function startGame() {
// the user
var userChoice = prompt("Do you choose rock, paper or scissors?");
// if invalid input
while ((userChoice != "rock") && (userChoice != "paper") && (userChoice != "scissors")) {
userChoice = prompt("Please select again, this time correctly!");
}
alert("You chose " + userChoice);
// computer
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} else if (computerChoice <= 0.67) {
computerChoice = "paper";
} else {
computerChoice = "scissors";
}
alert("Computer pick: " + computerChoice);
// comparison between user and computer
var compare = function(choice1, choice2) {
// if both selections are the same
if (choice1 == choice2) {
alert("Tie, restart the game!");
startGame();
}
// if the user selects rock
else if (choice1 == "rock") {
if (choice2 == "scissors") {
return "You have won the game!";
} else {
return "LOOOOOSSEEER!";
}
}
// if the user selects scissors
else if (choice1 == "scissors") {
if (choice2 == "rock") {
return "You have won the game!";
}
} else {
return "LOOOOOSSEEER";
}
};
alert(compare(userChoice, computerChoice));
}
// startGame();
В вашей сначала 'if', т. е.' if (choice1 == choice2) {..', вы снова запускаете игру, вызывая 'startGame();' явно там. Разве это не нормально для игры для перезапуска в соответствии с вашим кодом? –
Вы должны использовать функцию сравнения только для возврата статуса игры .. и после этого в зависимости от ее значения вы можете либо поставить предупреждение, либо перезапустить startHame fn call. например, var result = compare (ch1, ch2); if (result === "...") {... – Amitesh
@Amitesh Kumar вы можете дать мне пример из моего кода? Я не понимаю, что вы пытаетесь объяснить. –