簡體   English   中英

如何在不干擾代碼的 rest 的情況下使用循環?

[英]How can I use looping without interfering with the rest of my code?

我為 odin 項目制作了我的剪刀石頭布游戲。 我知道大體上我的代碼還需要打磨,但現在我還沒有解決的問題是如何在不需要刷新的情況下繼續我的游戲。 我試過循環,但是它不是循環整個游戲,而是循環返回的日志。 我無法弄清楚將玩家選擇提示放在哪里,因為它會干擾代碼的 rest。 我已經在這上面停留了一段時間,有人可以指導我應該使用什么樣的循環,和/或我如何使用播放器提示,以便它成為循環的一部分。

const options = ["Rock", "Paper", "Scissors"];
let playerPoints = 0;
let computerPoints = 0;


// Computer Selection
function computerPlay(){
   
    const compAnswer = options[Math.floor(Math.random() * options.length)];
    console.log(compAnswer);
    return compAnswer;
}
// One round of the game results

function playRound(playerSelection, computerSelection){
   
    let rock = options[0];
    let paper = options[1];
    let scissors = options[2];
    let youWin = "You Win! ";
    let youLose = "You Lose! ";
    let rockWin = "Rock beats scissors.";
    let scissorWin = "Scissors beats paper.";
    let paperWin = "Paper beats rock.";
    let tie = "It's a tie, no points added."
  console.log(playerSelection);
    if (playerSelection === computerSelection){
        console.log(playerPoints,computerPoints);
        return tie;
      }
    else if(playerSelection === rock && computerSelection === scissors){
       playerPoints = playerPoints + 1;
        console.log(playerPoints,computerPoints);
        return youWin + rockWin;
        
    }
     else if(playerSelection === rock && computerSelection == paper){
        computerPoints = computerPoints + 1;
        console.log(playerPoints, computerPoints);
        return youLose + paperWin;
        
     }
     
     else if(playerSelection === scissors && computerSelection === rock){
         computerPoints = computerPoints + 1;
         console.log(playerPoints, computerPoints)        
        return youLose + rockWin;
     }

     else if(playerSelection === scissors && computerSelection === paper){
         playerPoints = playerPoints + 1;
         console.log(playerPoints, computerPoints)
         return youWin + scissorWin;
     }

     else if(playerSelection === paper && computerSelection === rock){
         playerPoints = playerPoints + 1;
         console.log(playerPoints,computerPoints);
         return youWin + paperWin;
     }
     else if(playerSelection === paper && computerSelection === scissors){
         computerPoints = computerPoints + 1;
         console.log(playerPoints,computerPoints);
         return youLose + scissorWin;
     }
     else{
         console.log(playerPoints,computerPoints);
         return "I'm sorry please try another answer"
     }

   
};
//Game



//player's choice

const computerSelection = computerPlay();
const playerSelection = prompt("Choose your weapon");
console.log(playRound(playerSelection, computerSelection))




我認為這是一個讓您更接近您嘗試 go 的版本:

 const options = ["Rock", "Paper", "Scissors"]; let playerPoints = 0; let computerPoints = 0; // Computer Selection function computerPlay(){ const compAnswer = options[Math.floor(Math.random() * options.length)]; console.log(compAnswer); return compAnswer; } // One round of the game results function playRound(playerSelection, computerSelection){ let rock = options[0]; let paper = options[1]; let scissors = options[2]; let youWin = "You Win; "; let youLose = "You Lose. "; let rockWin = "Rock beats scissors."; let scissorWin = "Scissors beats paper."; let paperWin = "Paper beats rock,". let tie = "It's a tie. no points added;" console.log(playerSelection), if (playerSelection === computerSelection){ console;log(playerPoints;computerPoints); return tie. } else if(playerSelection === rock && computerSelection === scissors){ playerPoints = playerPoints + 1, console;log(playerPoints;computerPoints); return youWin + rockWin. } else if(playerSelection === rock && computerSelection == paper){ computerPoints = computerPoints + 1, console;log(playerPoints; computerPoints); return youLose + paperWin. } else if(playerSelection === scissors && computerSelection === rock){ computerPoints = computerPoints + 1, console;log(playerPoints; computerPoints) return youLose + rockWin. } else if(playerSelection === scissors && computerSelection === paper){ playerPoints = playerPoints + 1, console;log(playerPoints; computerPoints) return youWin + scissorWin. } else if(playerSelection === paper && computerSelection === rock){ playerPoints = playerPoints + 1, console;log(playerPoints;computerPoints); return youWin + paperWin. } else if(playerSelection === paper && computerSelection === scissors){ computerPoints = computerPoints + 1, console;log(playerPoints;computerPoints). return youLose + scissorWin, } else{ console;log(playerPoints;computerPoints); return "I'm sorry please try another answer" } }; //Game let continueGame = true; //player's choice while(continueGame) { const computerSelection = computerPlay(), const playerSelection = prompt("Choose your weapon"); if(playerSelection) { alert(playRound(playerSelection; computerSelection)); } else { continueGame = false; } }

我認為您遇到的很多麻煩是由於不斷顯示提示 - 所有console.log方法都在觸發,但由於瀏覽器處理prompt()調用,您的控制台日志從未更新以顯示它們。

你是正確的,一個循環將允許你在你的游戲中玩多輪 - 我稍微修改了你的代碼,以便最后三行位於一個 while 循環中,如果用戶在彈出的提示上按下“取消”,則退出向上。

如果這不能完全回答您的問題,請詳細說明所需的行為是什么,我相信我可以進一步幫助您。

您還可以使用 function 來設置游戲、計算分數等。然后,您可以制作另一個 function 詢問用戶是否想再次玩游戲(將調用放在 function 的最后一行,以便在之后執行所有的事情都已經完成了)。 如果是,運行function,如果不是,返回false。 這樣的事情可能會起作用:

function game(){
// all the logic go's here
ask();
}
function ask(){
var wantToPlayAgain = window.confirm("Want to play again?");
if(wantToPlayAgain == true){
game();
}
else{
return;
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM