javascript - JavaScript 项目石头剪刀布---页面首次加载时控制台的问题
问题描述
当你第一次打开页面时,你会看到一个提示框,但你想打开 dev-tools/console 来观察 console.log 消息的出现。
出于某种原因,如果您在弹出提示窗口后打开 dev-tools/console ,console.logs 不会出现,您必须玩到最后才能看到它们。
这是页面的链接:https ://kloba1004.github.io/project-rock-paper-scissors/
鉴于我没有经验,任何人都可以对我的代码给出诚实的意见:
let userWins = 0,
computerWins = 0;
function game() {
for (i = 0; i < 5; i++) {
let playerSelection = prompt("Choose rock, paper or scissors: "),
computerSelection;
const choices = ['rock', 'paper', 'scissors'];
let computerPlay = Math.random() * 10;
if (playerSelection !== null) {
playerSelection = playerSelection.toLowerCase().trim();
}
while ((playerSelection === null) || (playerSelection === '') || (!choices.includes(playerSelection))) {
if (playerSelection === '' || playerSelection === null) {
playerSelection = prompt("U entered absolutely nothing. Try again...Rock, paper or scissors:")
} else {
playerSelection = prompt("You typed it wrong. Try again. Choose rock, paper or scissors: ");
if (playerSelection !== null) {
playerSelection = playerSelection.toLowerCase().trim();
};
}
}
playerSelection = playerSelection.toLowerCase().trim();
function playRound(playerSelection, computerSelection) {
if (computerPlay >= 0 && computerPlay < 3.5) {
computerSelection = 'rock';
if (playerSelection === 'scissors') {
computerWins = computerWins + 1;
return `You lost this round. Rock beats scissors.`;
} else if (playerSelection === 'paper') {
userWins = userWins + 1;
return `You won this round. Paper beats rock.`;
} else {
return `Neither won this round. Rock can\'t beat rock.`;
}
} else if (computerPlay >= 3.5 && computerPlay < 6.5) {
computerSelection = 'paper';
if (playerSelection === 'scissors') {
userWins = userWins + 1;
return `You won this round. Scissors beat paper.`;
} else if (playerSelection === 'rock') {
computerWins = computerWins + 1;
return `You lost this round. Paper beats rock.`;
} else {
return `Neither won this round. Paper can\'t beat paper.`
}
} else {
computerSelection = 'scissors';
if (playerSelection === 'rock') {
userWins = userWins + 1;
return `You won this round. Rock beats scissors.`;
} else if (playerSelection === 'paper') {
computerWins = computerWins + 1;
return `You lost this round. Scissors beat paper.`;
} else {
return `Neither win. Scissors can\'t beat scissors.`;
}
}
}
console.log(playRound(playerSelection, computerSelection) + `Current score is ${userWins} : ${computerWins}.`);
}
if (userWins > computerWins) {
console.log(`You won the game. Final score is ${userWins} : ${computerWins}.`);
} else if (userWins === computerWins) {
console.log(`Neither won the game. Final score is ${userWins} : ${computerWins}.`);
} else {
console.log(`You lost the game. Final score is ${userWins} : ${computerWins}.`);
}
}
game();
解决方案
您的代码如下所示:
function game() {
// Loop
for (i = 0; i < 5; i++) {
let playerSelection = prompt("Choose rock, paper or scissors: "),
computerSelection;
const choices = ["rock", "paper", "scissors"];
let computerPlay = Math.random() * 10;
if (playerSelection !== null) {
playerSelection = playerSelection.toLowerCase().trim();
}
while (
playerSelection === null ||
playerSelection === "" ||
!choices.includes(playerSelection)
) {
if (playerSelection === "" || playerSelection === null) {
playerSelection = prompt(
"U entered absolutely nothing. Try again...Rock, paper or scissors:"
);
} else {
playerSelection = prompt(
"You typed it wrong. Try again. Choose rock, paper or scissors: "
);
if (playerSelection !== null) {
playerSelection = playerSelection.toLowerCase().trim();
}
}
}
playerSelection = playerSelection.toLowerCase().trim();
function playRound(playerSelection, computerSelection) {
...
}
console.log(
playRound(playerSelection, computerSelection) +
`Current score is ${userWins} : ${computerWins}.`
);
}
// Console logs
if (userWins > computerWins) {
console.log(
`You won the game. Final score is ${userWins} : ${computerWins}.`
);
} else if (userWins === computerWins) {
console.log(
`Neither won the game. Final score is ${userWins} : ${computerWins}.`
);
} else {
console.log(
`You lost the game. Final score is ${userWins} : ${computerWins}.`
);
}
}
可以看到,console.log
s 放在for
循环之后,提示用户。所以他们自然会在比赛结束后执行。
更新:
关于第一个console.log
,它在循环结束时执行,因为您playRound
在每次迭代时都声明了函数(并且它被推入堆栈)。
要获得预期的行为,请像这样移动它的声明:
<script>
let userWins = 0,
computerWins = 0;
function playRound(playerSelection, computerSelection, computerPlay) {
if (computerPlay >= 0 && computerPlay < 3.5) {
computerSelection = "rock";
if (playerSelection === "scissors") {
computerWins = computerWins + 1;
return `You lost this round. Rock beats scissors.`;
} else if (playerSelection === "paper") {
userWins = userWins + 1;
return `You won this round. Paper beats rock.`;
} else {
return `Neither won this round. Rock can\'t beat rock.`;
}
} else if (computerPlay >= 3.5 && computerPlay < 6.5) {
computerSelection = "paper";
if (playerSelection === "scissors") {
userWins = userWins + 1;
return `You won this round. Scissors beat paper.`;
} else if (playerSelection === "rock") {
computerWins = computerWins + 1;
return `You lost this round. Paper beats rock.`;
} else {
return `Neither won this round. Paper can\'t beat paper.`;
}
} else {
computerSelection = "scissors";
if (playerSelection === "rock") {
userWins = userWins + 1;
return `You won this round. Rock beats scissors.`;
} else if (playerSelection === "paper") {
computerWins = computerWins + 1;
return `You lost this round. Scissors beat paper.`;
} else {
return `Neither win. Scissors can\'t beat scissors.`;
}
}
}
function game() {
for (i = 0; i < 5; i++) {
let playerSelection = prompt("Choose rock, paper or scissors: "),
computerSelection;
const choices = ["rock", "paper", "scissors"];
let computerPlay = Math.random() * 10;
if (playerSelection !== null) {
playerSelection = playerSelection.toLowerCase().trim();
}
while (
playerSelection === null ||
playerSelection === "" ||
!choices.includes(playerSelection)
) {
if (playerSelection === "" || playerSelection === null) {
playerSelection = prompt(
"U entered absolutely nothing. Try again...Rock, paper or scissors:"
);
} else {
playerSelection = prompt(
"You typed it wrong. Try again. Choose rock, paper or scissors: "
);
if (playerSelection !== null) {
playerSelection = playerSelection.toLowerCase().trim();
}
}
}
playerSelection = playerSelection.toLowerCase().trim();
console.log(
playRound(playerSelection, computerSelection, computerPlay) +
`Current score is ${userWins} : ${computerWins}.`
);
}
if (userWins > computerWins) {
console.log(
`You won the game. Final score is ${userWins} : ${computerWins}.`
);
} else if (userWins === computerWins) {
console.log(
`Neither won the game. Final score is ${userWins} : ${computerWins}.`
);
} else {
console.log(
`You lost the game. Final score is ${userWins} : ${computerWins}.`
);
}
}
game();
</script>
推荐阅读
- c# - c# Interop:如何重新启动 Selection.Find 到文档的开头?
- mysql - SSIS:使用 64 位 ANSI MySQL odbc 驱动程序时,列中出现特殊字符错误
- c# - 如何使用 DataContractJsonSerializer 解析具有变量键名的 json 对象
- java - 使用 API 创建 xlsx 文件
- javascript - 简单 Javascript/HTML 脚本的问题
- python - 此代码中的逻辑错误?
- vhdl - VHDL Loops - 程序似乎使用以前的值
- c# - 如何从嵌套在数组中的数组更新项目
- html - 谷歌分析 - 事件跟踪 - Wordpress
- android - 警报自定义中的视频视图