如何在代码中按从高到低的顺序正确打印分数列表。org/javascript?

How to properly print out list of scores in order from highest to lowest in code.org/javascript?

我有“残局”的功能,功能是这样的

function endgame()  {
   setScreen("scorescreen");
  ismytimergoing = false;
  appendItem(scorelist, score);
  for (var i = 0; i < scorelist.length; i++) {
    if (scorelist[i] > scorelist[i +1]) {
      highestnumber = scorelist[i];
    } else if ((scorelist[i] == scorelist[i + 1])) {
      highestnumber = scorelist[i];
    } else {
      highestnumber = scorelist[i + 1];
    }
  }
  setText("scoretext", (scorelist + "  ") + namelist);
}

这是一个相当简单的点击按钮游戏,我有一个循环,可以在每次点击后增加分数,不同的数量取决于当前的分数。

    onEvent("clickbutton", "click", function( ) {
  setProperty("gamescreen", "background-color", rgb(randomNumber(1, 250), randomNumber(1, 250), randomNumber(1, 250), 0.5));
  if (score < 10) {
    level = 1;
    setText("levelbutton", "level " + level );
    score += 1;
    setText("scorecounter", "Score = " + score);
    changebutton("clickbutton");
    changebutton("dontclickbutton");

  }
  else if ((score >= 10)) {
    level = 2;
    setText("levelbutton", "level " + level );
    score += 2;
    setText("scorecounter", "Score = " + score);
    changebutton("clickbutton");
    changebutton("dontclickbutton");
  }
  else if ((score >= 50))  {
    level = 3;
    setText("levelbutton", "level " + level );
    score += 3;
    setText("scorecounter", "Score = " + score);
    changebutton("clickbutton");
    changebutton("dontclickbutton");
  }
});

changebutton是一个函数,可以改变参数中通过的任何“按钮”的背景颜色和文字颜色,但这不是这里的重点。 “Endgame”的功能是我遇到的困难,所以我们开始吧。 “残局”至少在点击错误的按钮和时间用完时被调用,这在游戏过程中会发生。在我的残局函数中,我有

setText("scoretext", (scorelist + " ") + namelist);

但是显示的是一大堆数字,而我要显示的是分数从高到低的列表,每个名字都在名单中排列。作为一个侧面点,我的开始按钮接受用户输入,将其设置为一个名为“name”的变量并附加到我的名单中。这是一个结果示例,我输入 meir 作为名称,显示正常,但我的分数是 5,显示为

0,0,0,0,1,2,2,3,3,4,

4,5,5,5 meir

尽管我的评分列表中应该只有 5,所以它不应该打印出所有其他内容。因此,如果我能得到任何帮助来正确排序得分列表,并且只打印出得分,而不是一大堆数字,那会很棒,最好让它按照最高得分的得分顺序打印出名字名字到得分最低的名字,那太好了。提前致谢。

有人看到我的代码并指出了至少部分问题。 “残局”函数启动的方式之一是时间 == 0,我在“残局”函数中有以下内容。

  ismytimergoing = false;
  appendItem(scorelist, score);

我觉得

ismytimergoing = false;

停止计时器,但当计时器 == 0 时会发生这种情况,因此残局功能会继续发生,不断增加得分列表大小,使其打印出大量数字。所以我将残局功能更改为以下内容。

function endgame() {
  setScreen("scorescreen");
  ismytimergoing = false;
  seconds = 60;
  appendItem(scorelist, score);
  for (var i = 0; i < scorelist.length; i++) {
    if (scorelist[i] > scorelist[i +1]) {
      highestnumber = scorelist[i];
    } else if ((scorelist[i] == scorelist[i + 1])) {
      highestnumber = scorelist[i];
    } else {
      highestnumber = scorelist[i + 1];
    }
  }
  setText("scoretext", (scorelist + "  ") + namelist);
}

我更改了残局功能,所以现在即使由于计时器归零而发生这种情况,秒数也会重置并且只有 运行 一次,从而使得分列表更容易处理.