0

真的不知道如何表达这个问题,所以对于模糊的标题感到抱歉。好的。我为当前分数创建了整数,并为 5 个分数创建了插槽。现在我想将当前分数放在高分列表中,在正确的位置,以便从低到高排序。

例子。我刚得到7分。现在我想把它放到记分牌上,第一次尝试,我把它放在第1位。但在这之后我得到8分。现在我想把8移到第一个位置,然后7 朝第二个位置。有人知道如何做到这一点吗?

在此之前我唯一知道的就是如何将当前分数放入高分列表/字符串中。我不知道如何订购它们。这是我之前的:

yourScore = "Your Time: " + Convert.ToString(currentTime * 60);
score1 = "1. " + Convert.ToString(currentTime * 60);
4

2 回答 2

3

我会使用通用列表。

List<int> highScores = new List<int>();

highScores.Add(1);
highScores.Add(3);

highScores.OrderBy(i => i); // it is ascending. You could OrderByDescending...

(我假设你在 C# 下)

于 2013-11-01T19:46:07.900 回答
2

这与 XNA 无关。正如亚历山大所建议的,我建议使用列表。他的评论很好地描述了 List 的工作原理。您可能还想查看它的文档。

List<int> highScores = new List<int>();

要添加新的高分,您将执行以下操作:

highScores.Add(4523); // Someone just made a score of 4523.
highScores.Sort();    // This will sort the high scores, putting the lowest high score at position 0.
highScores.Reverse(); // This will reverse the list, putting the highest high score at position 0.

当你想在屏幕上显示高分表时,你可以这样做:

for(int i = 0; i < highScores.Count; i++)
{
   int order = i + 1;
   int score = highScores[i];
   screenPosition = new Vector2(0, i * 20);
   spriteBatch.DrawString(yourFont, order + ". " + score, screenPosition, Color.Black);
}

该代码会将高分放在位置(0,0),第二好的分数放在位置(0,20)等。

于 2013-11-02T20:31:19.387 回答