2016-12-07 15 views
-1

最近私はJavascriptの学習を始め、多くのことを楽しんでいます。だから、ループについての情報を学んだ後、私はシンプルなRock、Scissors、Paperゲームを改善することに決めました。その改善は、プレーヤーの勝利とコンピュータ勝利の値を変数として保持し、playerScore変数が値10に達するまで関数をループさせることです。一般的なロジックを取得しようとしていても、 。ループの問題を解決するための助けが必要

私は、playerScoreとcomputerScoreという2つの変数を宣言しています。初期値は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

あなたが機能playGame()にあなたのwhileループを移動する必要があります。

は、ここでは、コードです。

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 determineWinner'では、すべてのif/else文で' console.log(playerScore);を追加しました。 \t console.log(computerScore); 'が表示されますが、"オンライン "ではなくループが終了したときにコンソールに結果が表示されます。これを修正する明白な方法はありますか? – atogz

+0

ブラウザに「呼吸する時間」を与えなければなりません。これを行うには、 'while'ループを削除して、' setTimeout'や 'setInterval'のようなものを使う必要があります。 –

関連する問題