我有一个简单的游戏,我想用名字保存高分,然后在另一个表单上显示它,但按点的降序排列。 我想用txt文件来做,保存就可以了,我只是保存:亚当,200,约翰,100等等。显示它们也没问题但是如何对它们进行排序?那么如何将分数与名称联系起来呢?
答案 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
这基本上保留了一对键和值。你应该能够很容易地排序。