-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();
大変ありがとうございました!私がやりたかったことは、コンピュータとプレーヤーの両方の現在のスコアを追跡することでした。 'function determineWinner'では、すべてのif/else文で' console.log(playerScore);を追加しました。 \t console.log(computerScore); 'が表示されますが、"オンライン "ではなくループが終了したときにコンソールに結果が表示されます。これを修正する明白な方法はありますか? – atogz
ブラウザに「呼吸する時間」を与えなければなりません。これを行うには、 'while'ループを削除して、' setTimeout'や 'setInterval'のようなものを使う必要があります。 –