2016-12-07 4 views
-1

Недавно я начал изучать 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(); 

ответ

0

Вы должны переместить While-цикл в функции playGame().

function playGame() { 
    while(playerScore < 10) { 
    var userChoice = getUserChoice(); 
    var computerChoice = getComputerChoice(); 
    alert('Player chose' + ' ' + userChoice + '!'); 
    alert('Computer chose' + ' ' + computerChoice + '!'); 

    alert(determineWinner(userChoice, computerChoice)); 
    } 
} 
+0

Большое спасибо, это сработало! Еще одна вещь, которую я хотел сделать, - отслеживать текущие оценки как для компьютера, так и для игрока. В 'function defineWinner', в каждом операторе if/else я добавил' console.log (playerScore); \t console.log (computerScore); ', но он отображает результаты только для консоли, когда цикл завершен, а не« онлайн ». Любой очевидный способ исправить это? – atogz

+0

Вы должны дать браузеру «время дышать». Для этого вам нужно удалить цикл while и использовать такие вещи, как 'setTimeout' или' setInterval'. –

Смежные вопросы