我打算为XNA游戏制作一个记分牌但是我在弄清楚如何制作方面遇到了一些麻烦.完成关卡后,玩家会在出现提示时输入他的名字.他的名字和时间将在文本文件中记录,如下所示:
sam 90
james 64
matthew 100
Run Code Online (Sandbox Code Playgroud)
我试图找出一种方法,只按时间对数据进行排序,而不考虑名称.
我还没有开始编码,但如果有人能给我任何想法,我将不胜感激.
首先,使用读取文本文件,File.ReadAllLines(...)以获得字符串数组.然后迭代数组并将每个字符串拆分为空白空间(假设用户不能在其名称中输入空格)并在第二个元素上排序,这应该是分数.您必须将其转换为字符串int.Parse(...)才能正确排序.
string[] scores = File.ReadAllLines("scorefile.txt");
var orderedScores = scores.OrderByDescending(x => int.Parse(x.Split(' ')[1]));
foreach (var score in orderedScores)
{
Console.WriteLine(score);
}
//outputs:
//matthew 100
//sam 90
//james 64
Run Code Online (Sandbox Code Playgroud)
我建议使用分号之类的东西来分隔名称和分数而不是空格,因为这样可以更容易处理用户被允许在其名称中输入空格的情况.