我有一个称为Player的类,它具有属性名称和得分,并且在每次游戏后,它们都使用method写入文件File.AppendAllText(path, content+Environment.NewLine);
。现在,当单击标签“得分”并加载新的Form时,我必须将它们添加到listBox。.但是我想使用我的类Player,并向列表或播放器中添加项目,而不仅仅是从文件中加载它们。 ..我使用SortedList
如下图所示...
SortedList<int, Player> topList = new SortedList<int, Player>();
private void Scores_Load(object sender, EventArgs e)
{
topList.Clear();
string filename = "highscores.txt";
using (StreamReader sr = File.OpenText(filename))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] s = line.Split(';');
string name = s[0];
int score = int.Parse(s[1]);
Player newPlayer = new Player(name, score);
if (!topList.ContainsKey(score))
topList.Add(score, newPlayer);
}
}
Output();
}
private void Output()
{
lstScores.Items.Clear();
int rank = 1;
foreach (int k in topList.Keys.Reverse())
{
if (rank < 10)//top 9
{
Player temp = (Player)topList[k];
lstScores.Items.Add(" " + rank.ToString() + "\t" + temp.ToString());//override of method ToString(), so it returns in format Name+"\t"+Score;
}
rank++;
}
}
现在这是可以接受的,但是这里的问题是我不能拥有两个相同的琴键,在这种情况下,琴键是分数……所以我想知道我该如何修改它以便拥有两个或更多相同的琴谱? ..也许我应该使用List<>
,但是我不知道如何按分数对列表进行排序,因为我在同一行文件中有字符串+ int(名称+分数)?
您可以使用列表:
List<Player> players = new List<Player>();
players.Add(new Player(name, score));
并按分数排序:
var sorted = players.OrderByDescending(p => p.Score).ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句