如何用名字创建游戏高分榜?

时间:2012-11-07 13:52:49

标签: c#

我有一个简单的游戏,我想用名字保存高分,然后在另一个表单上显示它,但按点的降序排列。 我想用txt文件来做,保存就可以了,我只是保存:亚当,200,约翰,100等等。显示它们也没问题但是如何对它们进行排序?那么如何将分数与名称联系起来呢?

5 个答案:

答案 0 :(得分:3)

您需要以更明显的结构方式存储它们。因此,例如,您仍然可以使用文本文件,每行一个条目:

Adam,200
John,200

然后你将从文件中读取,将每行解析为HighScoreEntry对象(当然,你必须创建HighScoreEntry类),并且将其添加到列表中。或者使用LINQ进行转换:

var highScoreEntries = File.ReadLines("highscores.txt")
                           .Select(line => HighScoreEntry.FromLine(line))
                           .ToList();

然后你可以使用:

var orderedScores = highScoreEntries.OrderByDescending(entry => entry.Score);

或者,您可以使用类似XML的东西来存储分数,这样可以提供更多的结构,并使一些解析更容易。

如果所有这些听起来都太难,请尝试确定导致问题的确切步骤。

答案 1 :(得分:0)

您可能想要创建一个如下所示的对象:

public class Player  
{  
    string name;  
    long score; // i assume no decimal points  
    // getters/setters
} 

然后这样排序:

List<Player> players = new List<Player>();  
players.Sort(delegate(Player player1, Player player2) { return player1.score.CompareTo(player2.score); });

答案 2 :(得分:0)

您需要在项目中使用静态类。 这个概念是,写一个类并在里面取消一个数组,我想给你看一个样本:

class score

{
    public static int max = 0;
    public static int john = 0;


}

现在,您可以通过提供给类来更改项目中任何位置的值。您可以创建一个包含用户名的数组。

现在,是时候制作新表格,并画出标签和按钮。

答案 3 :(得分:0)

var scores = File.ReadLines("scores.txt")
    .Select(line => {
            string[] parts = line.Split(',');
            return new { Name = parts[0], Score = int.Parse(parts[1]) };
        })
    .OrderByDescending(highScore => highScore.Score);

答案 4 :(得分:0)

可以尝试使用

 List<Dictionary> myList  

这基本上保留了一对键和值。你应该能够很容易地排序。