我添加了一个函数来跟踪我制作的小游戏的分数。 我想从包含分数的文件中获得前5个分数(包括该分数的名称)。从列表中获得排名前5的分数
保存的分数的格式为:
[名] - [评分]
的得分和名称都存储在2只列出,这是我分析是这样的:
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]));
}
}
然后,我通过检索#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]
我想我可以做一个降序排序比分名单,但将不包括在该指标的变化用户名列表中,最好的方法是什么?
而不是'ReadAllText' /'.Split',你可以只用'ReadAllLines'开始。 – crashmstr