JavaScript中的无限循环-While循环
有人知道为什么这会导致无限循环吗。我就是不明白为什么 我觉得问题可能是我的while循环在五点以下 while循环应该在5点停止,当玩家或计算机到达该点时,游戏应该停止 这是石头、布、剪刀。每场比赛的结果要么是玩家赢,要么是电脑赢,要么是平局 当任一玩家赢下5场时,游戏结束 问题是游戏没有按预期结束JavaScript中的无限循环-While循环,javascript,Javascript,有人知道为什么这会导致无限循环吗。我就是不明白为什么 我觉得问题可能是我的while循环在五点以下 while循环应该在5点停止,当玩家或计算机到达该点时,游戏应该停止 这是石头、布、剪刀。每场比赛的结果要么是玩家赢,要么是电脑赢,要么是平局 当任一玩家赢下5场时,游戏结束 问题是游戏没有按预期结束 function getInput() { console.log("Please choose either 'rock', 'paper', or 'scissors'."); retu
function getInput() {
console.log("Please choose either 'rock', 'paper', or 'scissors'.");
return prompt("Please choose either 'rock', 'paper', or 'scissors'");
}
function getPlayerMove() {
return getInput();
}
function randomPlay() {
var randomNumber = Math.random();
if (randomNumber < 0.33) {
return "rock";
}
else if (randomNumber < 0.66) {
return "paper";
}
else {
return "scissors";
}
}
function getComputerMove() {
return randomPlay();
}
function getWinner(playerMove,computerMove) {
var winner;
if (playerMove === 'rock' && computerMove === 'scissors') {
winner = 'Player';
}
else if (playerMove === 'scissors' && computerMove === 'paper') {
winner='Player';
}
else if (playerMove === 'paper' && computerMove === 'rock') {
winner='Player';
}
else if (playerMove === 'paper' && computerMove === 'scissors') {
winner='Computer';
}
else if (playerMove === 'rock' && computerMove === 'paper') {
winner='Computer';
}
else if (playerMove === 'scissors' && computerMove === 'rock') {
winner = 'Computer';
}
else {
winner = "tie";
}
return winner;
}
// A big limitation of this game is the user is only allowed to choose once! To allow more choices you'd need to design the program differently
function playToFive() {
var playerWins = 0;
var computerWins = 0;
var playerMove = getPlayerMove();
while ((playerWins <= 5) || (computerWins <= 5)) {
var computerMove = getComputerMove();
var winner = getWinner(getPlayerMove, getComputerMove);
console.log('The player has chosen ' + playerMove + '. The computer has chosen ' + computerMove);
if (winner === "player") {
playerWins += 1;
}
else if (winner === "computer") {
computerWins += 1;
}
if ((playerWins = 5) || (computerWins = 5)) {
console.log("The game is over! " + "The " + winner + " has taken out the game!");
console.log("The final score was. " + playerWins + " to " + computerWins);
}
else {
console.log("The " + winner + ' takes the round. It is now ' + playerWins + ' to ' + computerWins);
}
}
}
playToFive ();
函数getInput(){
日志(“请选择‘石头’、‘布’或‘剪刀’”;
返回提示(“请选择‘石头’、‘布’或‘剪刀’”);
}
函数getPlayerMove(){
返回getInput();
}
函数随机播放(){
var randomNumber=Math.random();
如果(随机数<0.33){
返回“岩石”;
}
否则如果(随机数<0.66){
返回“文件”;
}
否则{
返回“剪刀”;
}
}
函数getComputerMove(){
返回随机播放();
}
函数getWinner(playerMove、computerMove){
var赢家;
如果(playerMove==='rock'和&computerMove==='scissors'){
赢家=‘玩家’;
}
否则如果(playerMove===‘剪刀’和&computerMove===‘纸’){
胜利者=‘玩家’;
}
否则,如果(playerMove==='paper'和&computerMove=='rock'){
胜利者=‘玩家’;
}
否则,如果(playerMove==='paper'和&computerMove==='剪刀'){
优胜者:计算机;
}
否则,如果(playerMove=='rock'和&computerMove=='paper'){
优胜者:计算机;
}
否则如果(playerMove==='scissors'和&computerMove==='rock'){
获胜者=‘计算机’;
}
否则{
获胜者=“平局”;
}
返回赢家;
}
//这个游戏的一大限制是用户只能选择一次!要允许更多选择,您需要以不同的方式设计程序
函数playtoff(){
var-playerWins=0;
var=0;
var playerMove=getPlayerMove();
while((playerWins首先,在while循环中,您也需要将其更改为&&语句,否则,如果计算机为8,而播放器为3,则循环将继续,直到两个播放器都大于5。问题是这一行
var winner = getWinner(getPlayerMove, getComputerMove);
您正在将函数引用传递给getWinner()方法
这意味着您以后需要再次移动,因此将方法更改为(代码中修复了多个问题)
函数playToFive()
{
var-playerWins=0;
var=0;
while((playerWins为使此if相应运行:
if ((playerWins = 5) || (computerWins = 5)) {}
您需要使用=
操作符,因为只有一个=
用于赋值
if ((playerWins == 5) || (computerWins == 5)) {}
谢谢各位,有很多问题
干杯,伙计们。绝对需要&而不是| | |。这场| | |让比赛继续进行
此外,还需要var winner=getWinner(getPlayerMove,getComputerMove)。这会导致无限循环。我认为首先您应该了解(==)和(===)之间的区别
使用此代码(条件代码不是赋值)
而不是##
问题是这一行
您正在将函数引用传递给getWinner()方法
使用这个
var winner = getWinner(playerMove , computerMove );
而不是
var winner = getWinner(getPlayerMove, getComputerMove);
对于此功能
function getWinner(playerMove,computerMove) {
var winner;
if (playerMove === 'rock' && computerMove === 'scissors') {
winner = 'Player';
}
else if (playerMove === 'scissors' && computerMove === 'paper') {
winner='Player';
}
else if (playerMove === 'paper' && computerMove === 'rock') {
winner='Player';
}
else if (playerMove === 'paper' && computerMove === 'scissors') {
winner='Computer';
}
else if (playerMove === 'rock' && computerMove === 'paper') {
winner='Computer';
}
else if (playerMove === 'scissors' && computerMove === 'rock') {
winner = 'Computer';
}
else {
winner = "tie";
}
return winner;
}
每次此方法都将tie
设置为赢家
但是你应该知道(==)equalto
和(==)相等值和相等类型之间的区别
如果循环应该在任一玩家达到5时结束,比较应该是如果((playerWins=5)|(computerWins=5))
应该是如果((playerWins=5)|(computerWins==5))
不要发布另一个答案,仅仅是重述别人告诉你的内容,投票并相应地接受。
if ((playerWins = 5) || (computerWins = 5)) { // Error Code.
console.log("The game is over! " + "The " + winner + " has taken out the game!");
console.log("The final score was. " + playerWins + " to " + computerWins);
}
var winner = getWinner(playerMove , computerMove );
var winner = getWinner(getPlayerMove, getComputerMove);
function getWinner(playerMove,computerMove) {
var winner;
if (playerMove === 'rock' && computerMove === 'scissors') {
winner = 'Player';
}
else if (playerMove === 'scissors' && computerMove === 'paper') {
winner='Player';
}
else if (playerMove === 'paper' && computerMove === 'rock') {
winner='Player';
}
else if (playerMove === 'paper' && computerMove === 'scissors') {
winner='Computer';
}
else if (playerMove === 'rock' && computerMove === 'paper') {
winner='Computer';
}
else if (playerMove === 'scissors' && computerMove === 'rock') {
winner = 'Computer';
}
else {
winner = "tie";
}
return winner;
}