我正在为我制作的小游戏添加一个跟踪分数的函数。我想从包含得分的文件中获取前五个得分(包括该得分对应的姓名)。
保存得分的格式为:
[name]-[score]
得分和姓名存储在两个列表中,我是这样解析它们的:
然后我使用以下代码来检索排名第一的玩家:
保存得分的格式为:
[name]-[score]
得分和姓名存储在两个列表中,我是这样解析它们的:
string scores = File.ReadAllText(Environment.GetEnvironmentVariable("TEMP") + "/scores");
string[] splitscores = scores.Split('\n');
foreach (string entry in splitscores)
{
string replace = entry.Replace("[", "").Replace("]", "");
string[] splitentry = replace.Split('-');
if (splitentry.Count() > 1)
{
scorenames.Add(splitentry[0]);
scorelist.Add(Int32.Parse(splitentry[1]));
}
}
然后我使用以下代码来检索排名第一的玩家:
int indexMax
= !scorelist.Any() ? -1 :
scorelist
.Select((value, index) => new { Value = value, Index = index })
.Aggregate((a, b) => (a.Value > b.Value) ? a : b)
.Index;
lblhighscore1.Text = "#1: " + scorelist[indexMax] + " by " + scorenames[indexMax];
如果这是我的得分列表,我该如何设置剩下的4个玩家:
[broodplank]-[12240]
[flo]-[10944]
[bill]-[11456]
[tony]-[9900]
[benji]-[7562]
我想对得分列表进行降序排序,但这不会涵盖用户名列表索引的变化,针对此情况最好的方法是什么?
ReadAllLines
代替ReadAllText
/.Split
。 - crashmstr