Недавно я начал изучать Javascript, наслаждаясь этим много. Итак, узнав некоторую информацию о циклах, я решил улучшить простую игру Rock, Scissors, Paper. Улучшение заключается в том, чтобы удерживать победы игроков, а компьютер выигрывает значения в качестве переменных, а не зацикливать функцию до тех пор, пока переменная playerScore не достигнет значения 10. Я не так хорошо разбираюсь в синтаксисе, хотя пытаюсь получить общую логику и где я совершил ошибку ,Нужна помощь в решении проблемы с контуром
Для достижения моей цели я объявил две переменные - playerScore и computerScore, их начальное значение равно 0. После победы каждого игрока или победы компьютера я решил добавить + 1 к переменной.
Чем начать игру, я объявил функцию playGame() и зациклил ее с помощью While. Цикл кажется бесконечным и более того, текущие результаты не регистрируются на консоли. Любая помощь очень ценится, поможет мне понять логику гораздо больше, чем любые пройденные мной курсы.
Вот код:
var playerScore = 0;
var computerScore = 0;
function getUserChoice() {
var userInput = prompt('Choose stone, scissors or paper');
userInput = userInput.toLowerCase();
if(userInput === 'stone' || userInput === 'paper' || userInput === 'scissors' || userInput === 'bomb') {
return userInput;
}
else {
alert('Error! Choose stone, scissors or paper!');
}
}
function getComputerChoice() {
var randomNumber = Math.floor(Math.random() *3);
if(randomNumber === 1) {
return 'stone';
}
else if(randomNumber === 2) {
return 'paper';
}
else {
return 'scissors';
}
}
function determineWinner (userChoice, computerChoice) {
if(userChoice === computerChoice) {
return 'That's a tie!';
}
if(userChoice === 'stone') {
if(computerChoice === 'scissors') {
playerScore = playerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Player won!';
}
else {
if(computerChoice === 'paper') {
computerScore = computerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Computer won!'
}
}
}
if(userChoice === 'paper') {
if(computerChoice === 'scissors') {
computerScore = computerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Computer won!';
}
else {
if(computerChoice === 'stone') {
playerScore = playerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Player wonи!';
}
}
}
if(userChoice === 'scissors') {
if(computerChoice === 'stone') {
computerScore = computerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Computer won!';
}
else {
if(computerChoice === 'paper') {
playerScore = playerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Player won!';
}
}
}
if(userChoice === 'bomb') {
if(computerChoice === 'stone' || computerChoice === 'scissors' || computerChoice === 'paper') {
playerScore = playerScore + 1;
сonsole.log(playerScore);
console.log(computerScore);
return 'Player won!';
return 'Player won!';
}
}
}
while(playerScore < 10) {
function playGame() {
var userChoice = getUserChoice();
var computerChoice = getComputerChoice();
alert('Player chose' + ' ' + userChoice + '!');
alert('Computer chose' + ' ' + computerChoice + '!');
alert(determineWinner(userChoice, computerChoice));
playGame() = false;
}
};
playGame();
Большое спасибо, это сработало! Еще одна вещь, которую я хотел сделать, - отслеживать текущие оценки как для компьютера, так и для игрока. В 'function defineWinner', в каждом операторе if/else я добавил' console.log (playerScore); \t console.log (computerScore); ', но он отображает результаты только для консоли, когда цикл завершен, а не« онлайн ». Любой очевидный способ исправить это? – atogz
Вы должны дать браузеру «время дышать». Для этого вам нужно удалить цикл while и использовать такие вещи, как 'setTimeout' или' setInterval'. –