Я строю задачу «камень-ножницы для бумаги». На данный момент мой код работает только на 1 раунд. Я не уверен, как я получу это, чтобы сохранить счет, повторяя 5 раундов. У меня сложилось впечатление, что мне понадобится цикл for, по крайней мере, для раундов, например:
for(i=0; i<5;i++);
но я не знаю, где его вставить в свой код. Я поискал в Интернете и не могу найти достаточно простого для понимания ресурса, который не начал бы использовать методы переключения или какой-либо другой более продвинутый код для создания игры. Любая помощь будет оценена по достоинству. Спасибо.
function computerPlay() {
let random = Math.random();
if (random <= 0.3333) {
return "paper";
} else if (random >= 0.6666) {
return "rock";
} else {
return "scissors";
}
}
function playRound(playerSelection, computerSelection) {
if (playerSelection.toLowerCase() === "rock") {
if (computerSelection === "paper") {
computerScore++;
return lose;
} else if (computerSelection === "rock") {
return tie;
} else {
userScore++;
return win;
}
}
if (playerSelection.toLowerCase() === "scissors") {
if (computerSelection === "paper") {
userScore++;
return win;
} else if (computerSelection === "rock") {
computerScore++;
return lose;
} else {
return tie;
}
}
if (playerSelection.toLowerCase() === "paper") {
if (computerSelection === "paper") {
return tie;
} else if (computerSelection === "rock") {
userScore++;
return win;
} else {
computerScore++;
return lose;
}
}
}
let userScore = parseInt(0);
let computerScore = parseInt(0);
let win = "You win"
let lose = "You lose"
let tie = "It is a tie"
let playerSelection = prompt("Pick a move");
const computerSelection = computerPlay()
console.info(playRound(playerSelection, computerSelection))
console.info("your score = " + userScore);
console.info("Computer's score = " + computerScore);Я не видел. Я работаю с руководством по проекту Odin, и после этой игры рассматриваются массивы. Я действительно не хочу отклоняться от их порядка преподавания. Спасибо хоть.
Пожалуйста, отметьте в своем вопросе «без массивов», прежде чем кто-нибудь будет тратить свое время на ответ.
Это пример, которому вы, возможно, захотите следовать: stackoverflow.com/questions/1527803/…
Добавлены некоторые обновления в ваш код, попробуйте более простой способ с рекурсией.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я немного отредактировал ваш фрагмент кода, надеюсь, он удовлетворит ваши потребности :)
просто введите код ниже в цикл for
let playerSelection = prompt("Pick a move");
const computerSelection = computerPlay()
console.info(playRound(playerSelection, computerSelection))
console.info("your score = " + userScore);
console.info("Computer's score = " + computerScore);
function computerPlay() {
let random = Math.random();
if (random <= 0.3333) {
return "paper";
} else if (random >= 0.6666) {
return "rock";
} else {
return "scissors";
}
}
function playRound(playerSelection, computerSelection) {
if (playerSelection.toLowerCase() === "rock") {
if (computerSelection === "paper") {
computerScore++;
return lose;
} else if (computerSelection === "rock") {
return tie;
} else {
userScore++;
return win;
}
}
if (playerSelection.toLowerCase() === "scissors") {
if (computerSelection === "paper") {
userScore++;
return win;
} else if (computerSelection === "rock") {
computerScore++;
return lose;
} else {
return tie;
}
}
if (playerSelection.toLowerCase() === "paper") {
if (computerSelection === "paper") {
return tie;
} else if (computerSelection === "rock") {
userScore++;
return win;
} else {
computerScore++;
return lose;
}
}
}
let userScore = parseInt(0);
let computerScore = parseInt(0);
let win = "You win"
let lose = "You lose"
let tie = "It is a tie"
for(var i=0;i<5;i++){
let playerSelection = prompt("Pick a move");
const computerSelection = computerPlay()
console.info(playRound(playerSelection, computerSelection))
console.info("your score = " + userScore);
console.info("Computer's score = " + computerScore);
}Аааа, отлично работает. Собираюсь пойти и попытаться понять это сейчас. Спасибо за помощь.
добро пожаловать, @Alex, и не забудьте принять ответ, если он сработал для вас :)
Попробуйте код ниже:
Цикл - не лучший подход, читайте здесь:
Это позволяет пользователю играть 5 раз.
Используя рекурсия:
function computerPlay() {
let random = Math.random();
if (random <= 0.3333) {
return "paper";
} else if (random >= 0.6666) {
return "rock";
} else {
return "scissors";
}
}
function playRound(playerSelection, computerSelection) {
if (playerSelection.toLowerCase() === "rock") {
if (computerSelection === "paper") {
computerScore++;
return lose;
} else if (computerSelection === "rock") {
return tie;
} else {
userScore++;
return win;
}
}
if (playerSelection.toLowerCase() === "scissors") {
if (computerSelection === "paper") {
userScore++;
return win;
} else if (computerSelection === "rock") {
computerScore++;
return lose;
} else {
return tie;
}
}
if (playerSelection.toLowerCase() === "paper") {
if (computerSelection === "paper") {
return tie;
} else if (computerSelection === "rock") {
userScore++;
return win;
} else {
computerScore++;
return lose;
}
}
}
let userScore = parseInt(0);
let computerScore = parseInt(0);
let win = "You win"
let lose = "You lose"
let tie = "It is a tie"
var i = 0;
const play = () => {
let playerSelection = prompt("Pick a move");
const computerSelection = computerPlay()
console.info(playRound(playerSelection, computerSelection))
console.info("your score = " + userScore);
console.info("Computer's score = " + computerScore);
i++;
if (i !== 5) {
play();
} else {
alert("Game Over=> User("+userScore+") vs Computer("+computerScore+")");
}
}
play();
вы должны проверять массивы, чтобы вы могли сохранять результат каждый раз, когда вы выполняете цикл. Вы изучили это?