0

我的 js 代码有一个问题,我希望我的数组的值在循环中等于 0,但相反,它每次循环时都会相互叠加或减去。

for(i = 0; i < num_players; i++) {
  alert(players[i] + " Score is " + player_scores[i]);
}
  
4

2 回答 2

1

数组使用有很多问题。这是一个可行的解决方案,我也添加了一些小的改进:

var players = [];
var player_scores = [];

var num_players = 0;
num_players = prompt ("Tell me the total number of players");

for(i=0; i < num_players; i++){
    players.push(prompt("Tell me name: "));
    player_scores.push(0);

    var start_time = new Date();
    start_time.setSeconds(start_time.getSeconds() + 10 );

    for (lives=3; lives>0; lives--) {
      var guess = prompt("K _ _ G");
      var current_time = new Date();
      if (guess.toUpperCase() === "KING" && current_time < start_time) {
        alert ("Guess was correct");
        player_scores[i] += 5;
        break;
      } else if(guess.toUpperCase() === "HINT" && current_time < start_time) {
        alert ("GIVE HINT HERE");
        lives++;
        alert ("You have " + (lives-1) + " lives left");
      } else if(current_time >= start_time) {
        alert ("Time ran out");
        lives = 0;
    } else {
        alert ("Guess was wrong");
        player_scores[i] -= 2;
        alert ("You have " + (lives-1) + " lives left");
    }
  }
  alert("Player " + players[i] + "'s final score is " + player_scores[i]);
}

for(i = 0; i < num_players; i++) {
  alert(players[i] + " Score is " + player_scores[i]);
}

于 2020-07-30T07:53:23.607 回答
1

您需要初始化player_scores[i] = 0;,并且必须为玩家 i 而不是玩家 0 添加/减去分数:player_scores[i] = player_scores[i] - 2;

这有效:

var players = [];
var player_score = [];
var player_scores = [0];
// CHANGE THE VARIABLES //

var num_players = 0;

while (num_players <= 0) {
    num_players = prompt ("Tell me the total number of players");
}

for(i=0; i < num_players; i++) {
    players[i] = prompt("Tell me name: ");
    player_scores[i] = 0;

    start_time = new Date();
    start_time.setSeconds(start_time.getSeconds() + 10 );

    for (lives=3; lives>0; lives--) {

        guess = prompt("K _ _ G");
        current_time = new Date();

        if (guess == "KING" || guess == "king" && current_time < start_time) {
            alert ("Guess was correct");
            player_scores[i] = player_scores[i] + 5;
            break;
        }  
        else if (guess == "HINT" || guess == "hint" && current_time < start_time) {
            alert ("GIVE HINT HERE");
            lives = lives + 1;
            alert ("You have " + (lives-1) + " lives left");
        }  
        else if (current_time >= start_time ) {
            alert ("Time ran out");
            lives = 1;
        }
        else {
            alert ("Guess was wrong");
            player_scores[i] = player_scores[i] - 2;
            alert ("You have " + (lives-1) + " lives left");
        }
    }

alert("Player " + players[i] + "'s final score is " + player_scores[i]);
}

for(i = 0; i < num_players; i++) {
alert(players[i] + " Score is " + player_scores[i]);
}

于 2020-07-30T07:59:36.923 回答