Игра камень, ножницы, бумага - повторение 5 раундов

Я строю задачу «камень-ножницы для бумаги». На данный момент мой код работает только на 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);

вы должны проверять массивы, чтобы вы могли сохранять результат каждый раз, когда вы выполняете цикл. Вы изучили это?

WiseStrawberry 19.09.2018 13:05

Я не видел. Я работаю с руководством по проекту Odin, и после этой игры рассматриваются массивы. Я действительно не хочу отклоняться от их порядка преподавания. Спасибо хоть.

Alex 19.09.2018 13:08

Пожалуйста, отметьте в своем вопросе «без массивов», прежде чем кто-нибудь будет тратить свое время на ответ.

Steven Spungin 19.09.2018 13:10

Это пример, которому вы, возможно, захотите следовать: stackoverflow.com/questions/1527803/…

karen 19.09.2018 13:11

Добавлены некоторые обновления в ваш код, попробуйте более простой способ с рекурсией.

Harshal Y. 19.09.2018 13:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
1 072
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я немного отредактировал ваш фрагмент кода, надеюсь, он удовлетворит ваши потребности :)

просто введите код ниже в цикл 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 19.09.2018 13:18

добро пожаловать, @Alex, и не забудьте принять ответ, если он сработал для вас :)

Dhaval Pankhaniya 19.09.2018 13:20

Попробуйте код ниже:

Цикл - не лучший подход, читайте здесь:

Это позволяет пользователю играть 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();

Другие вопросы по теме