Bonjour à tous,
je souhaite donc trier les valeurs d'un dictionnaire, valeurs que je charge à l'aide d'un fichier xml
j'ai créé une classe pour lire mon fichier xml et mettre les valeurs dans un dictionnaire :
puis dans l'étape suivante je créé mon objet highscore, c'est ici qu'il faudrait trier les valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 class Highscores { string name; int score; XmlDocument xmlDoc = new XmlDocument(); Dictionary<String, int> mHighscores; public Highscores(string allScores) { mHighscores = new Dictionary<string,int>(); Stream stream = File.OpenRead(allScores); xmlDoc.Load(stream); XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Player"); for (int i = 0; i < nodeList.Count; i++) { XmlNodeList childNodes = nodeList[i].ChildNodes; name = childNodes[0].InnerText; score = System.Int16.Parse(childNodes[1].InnerText); mHighscores.Add(name, score); } } public Dictionary<String, int> RankScores { get { return this.mHighscores; } } }
j'ai cru voir qu'il fallait implémenter une classe ISortable mais j'ai pas trouvé d'exemple concret pour donner quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int incr = 0; Highscores scores = new Highscores(cheminduXML); foreach (KeyValuePair<string, int> s in scores.RankScores) { mSpriteBatch.DrawString(spriteFont3, s.Key, new Vector2(mScore.Width / 2 - 120, mScore.Height / 2 - 90 + incr * 20), Color.White); mSpriteBatch.DrawString(spriteFont3, s.Value.ToString(), new Vector2(mScore.Width / 2 + 100, mScore.Height / 2 - 90 + incr * 20), Color.White); incr++; }
Avez-vous une piste?
Code : Sélectionner tout - Visualiser dans une fenêtre à part scores.RankScores.values.sort();
Merci XD
Partager