2013-11-01 51 views
0

真的不知道如何解釋這個問題,所以很抱歉模糊的標題。 好的。我爲當前得分和插槽創建了5個整數。現在,我想將當前得分放在高分列表中的正確位置,以便從低到高排列。XNA,訂單高分榜

例子。我剛剛得到了7分。現在我想把它放到記分牌上,首先嚐試一下,我把它放在第一位。但在此之後,我得到了8分。現在我想將8移到第一位置,並且朝着第二個地點的7號。有沒有人有關於如何做到這一點的想法?

我在此之前唯一知道的是如何將當前分數放入高分列表/字符串中。我不知道我會如何點餐。 這是我以前有:

yourScore = "Your Time: " + Convert.ToString(currentTime * 60); 
score1 = "1. " + Convert.ToString(currentTime * 60); 
+0

這是你的...作業嗎? –

+0

那麼,它的學校是一個項目是啊。但是由於我的學校沒有在XNA教授,我最終得到了幾個問題。這裏有沒有我不知道的功課規則? – Johan

+0

不,沒有沒有家庭作業規則,但在幫助中描述了您可以在StackOverflow上詢問哪些問題。請參閱[我可以在這裏詢問哪些主題?](http://stackoverflow.com/help/on-topic)正如您可以閱讀的問題,應該對已解決問題和嘗試解決方案有最少的瞭解。也許你可以添加一段代碼,並告訴我們你到目前爲止所嘗試過的? –

回答

3

我會使用泛型列表。

List<int> highScores = new List<int>(); 

highScores.Add(1); 
highScores.Add(3); 

highScores.OrderBy(i => i); // it is ascending. You could OrderByDescending... 

(我假設你是在C#)

+0

對不起,我很新。我仍然不明白我必須在哪裏指定當前的高分,並將其提交到列表中。我假設highScores.Add(1/5)是列表本身,對吧? 如果我想DrawString到屏幕上,我需要轉換爲字符串?整個highscores列表或只是具體的數字?在這種情況下,什麼部分數字,整個highScores.Add(number1);部分? – Johan

+0

列表與數組類似。讓我們看看這裏:highscores是列表。這是一個類型的列表。方法Add()在列表的末尾添加一個值。因此,您可能需要重新排列列表。但是,如果您想要添加浮點值(例如1.5或3/2),則需要將列表聲明爲列表。當你想以字符串的形式繪製該值時,你可以執行highScores.At(0).ToString()。意即;取值爲位置0,這意味着我們列表中的第一個值,然後將其轉換爲字符串。在你的Drawstring()方法中做到這一點。 –

2

這是不相關的XNA。正如Alexandre所建議的那樣,我會建議使用一個List。他的評論很好地描述了List如何工作。你也可能想看看它的文檔。

List<int> highScores = new List<int>(); 

要添加新的高分,你會那麼做:

highScores.Add(4523); // Someone just made a score of 4523. 
highScores.Sort(); // This will sort the high scores, putting the lowest high score at position 0. 
highScores.Reverse(); // This will reverse the list, putting the highest high score at position 0. 

當你想在屏幕上顯示的高分表,你可以這樣做:

for(int i = 0; i < highScores.Count; i++) 
{ 
    int order = i + 1; 
    int score = highScores[i]; 
    screenPosition = new Vector2(0, i * 20); 
    spriteBatch.DrawString(yourFont, order + ". " + score, screenPosition, Color.Black); 
} 

該代碼將把位置(0,0)的高分,位置(0,20)處的第二最佳分數等。