你好,我是一名JavaScript新手,我想做一個簡單的石頭、剪刀、布的游戲,在宣布獲勝之前回圈五次。我不明白為什么我的回圈不作業,我已經嘗試了do while回圈、while回圈,最后用for回圈解決了,但這個函式似乎沒有像我想要的那樣回圈五次。我還遇到了一個問題,為什么游戲的輸贏是3,而不是一個回合的輸贏。我希望有人能幫助我解決這個問題,這將是非常感謝的。
。 let computerSelection = computerPlay();
let playerSelection = prompt("enter your Move")。
let roundWinner;
let playerWins = 0;
let computerWins = 0;
let gameWinner;
function computerPlay(computerSelection =3){
let choice = Math.floor(Math. random()*computerSelection) 1。
let answer = ""/span>;
if (choice === 1){ answer = "ROCK"}. else if (choice === 2){答案 ="PAPER"}。else {answer ="SCISSORS"}。
return answer;}。
function round(playerSelection , computerSelection) {
if (playerSelection.toUpperCase() === "ROCK" && computerSelection === "SCISSORS") {playerWins = 1}。
else if( playerSelection. toUpperCase() === "ROCK" && computerSelection === "PAPER"){computerWins = 1} 。
else if(playerSelection. toUpperCase() === "SCISSORS"/span> && computerSelection === "PAPER") {playerWins = 1}。
else if( playerSelection. toUpperCase() === "SCISSORS" && computerSelection === "ROCK"){computerWins = 1} 。
else if (playerSelection. toUpperCase() === "PAPER"/span> && computerSelection === "ROCK"/span>) {playerWins = 1}。
else if( playerSelection. toUpperCase() === "PAPER" && computerSelection === "SCISSORS"){computerWins = 1}。
else if( playerSelection !== computerSelection) {roundWinner = "You entered an invalid input, please try again!"}.
return (playerWins && computerWins)|| roundWinner;}。
function game(){
for ( i = 0; i < 6; i ) {round(playerSelection,computerSelection); if(playerSelection == computerSelection) {i = 0}. else {i }; }
if (playerWins > computerWins) {gameWinner =`You win! 你贏得了${playerWins}對${computerWins}`}。
else if (computerWins > playerWins) {gameWinner = `你輸了! 你輸了${playerWins}給${computerWins}`}。
else {gameWinner = roundWinner}
return gameWinner;
}
game()。
let message = document.querySelector('main')。
message.innerHTML = `<h1>${gameWinner} </h1>`;
* {
margin: 0px;
padding: 0px;
border: 0px;
}
h1 {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 500px;
}
<!DOCTYPE html>
<html lang="en"/span>>
<head>/span>
<meta charset="UTF-8">/span>
< meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=devicewidth, initial-scale=1. 0">
<link rel="styleheet" href="style。 css">
<title>石頭、紙、剪刀</title>
</head>/span>
<body>
<main></main>
<script src="game. js"></script>>
</body>
</html>/span>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
謝謝
uj5u.com熱心網友回復:
我建議做一些改變:
我建議做一些改變:
我建議做一些改變
如果你想讓它回圈5次,那就是
for(i=0;i<;5;i )(loops for i=0,1,2,3,4 -> 5 times)
在我看來,對于計算機的選擇,最好用Math.round而不是Math.floor來選擇(1.9的floor仍然是1,round是2)
。
let choice=Math。 round(Math.random()*2) 1。你可以洗掉該函式的引數。
當你輸入玩家的選擇并且與計算機相同時,它不應該像你的代碼那樣回傳 "無效輸入"。我猜這是因為
playerSelection === computerSelection,當我改成playerSelection.toUpperCase()時,這個錯誤就消失了。由于與上一點相同的問題,在這一部分
for (i=0;i<;6;i ) { round(playerSelection,computerSelection)。 if(playerSelection === computerSelection) {i = 0}。 else(playerSelection === computerSelection) {i } }你的IF總是假的,所以你給'i'加了1,但是你的回圈也加了1,所以最后你加了2。 我會用
if(playerSelection.toUpperCase() == computerSelection) {i -= 1; } else {}。萬一你不希望抽獎被計算在內。否則,這部分可以完全缺失,而游戲可以很好地運行。
當游戲以平局結束時。
else {gameWinner = roundWinner}可以改寫為else {gameWinner="It's a draw."},你的解決方案對我來說不起作用。當玩家輸入無效的值,并且你按照@Gil的建議修復了回圈,你在最后遇到了一個未定義結果的問題。你可以將這一行改為
else if( playerSelection.toUpperCase( ) != computerSelection ) { alert("You entered an invalid input, please try again!") 。 round(playerSelection,computerSelection)。 }這就解決了錯誤的輸入,而且不需要重新運行整個回圈。
而且我認為使用這一行會更簡單
playerSelection=playerSelection.toUpperCase()。當你得到用戶的輸入時,這樣你就不需要在每個IF陳述句中重寫它。
uj5u.com熱心網友回復:
這里的主要問題是輸入值。
你的玩家輸入和計算機輸入應該在每個回圈中被呼叫,但你只用了一次,而不是每次都重新宣告。 修改一下吧
let computerSelection = computerPlay()。
let playerSelection = prompt("Enter your Move") 。
對此
let computerSelection;
let playerSelection;
現在改變回圈,以便每次都填充輸入的內容
for (let i =0; i < 6; i ) {
///每次回圈都要填入輸入。
playerSelection = prompt("Enter your Move"/span>)。
computerSelection = computerPlay()。
round(playerSelection,computerSelection)。
if(playerSelection !== computerSelection) {
i ;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326639.html
標籤:
