2013-04-06 70 views
2

我有一個簡單的Windows手機遊戲,玩家在屏幕上拖動一艘船來收集物品並避開小行星。每次收集物品時,屏幕頂部的分數計數器都會增加1。如何製作xna排行榜?

事情是,一旦玩家的小船與小行星碰撞,我想讓遊戲過渡到排行榜,我無法弄清楚我會如何去做。

我有一個存儲分數值的整數,但是一旦玩家與小行星碰撞,該重置整數的值(當然)。

如何才能將死亡前玩家得分的最終值存儲爲單獨的整數並將其顯示在排行榜屏幕上?不需要解釋遊戲狀態管理,我已經知道如何玩這個遊戲。

+0

只是爲了澄清一下,當您的意思是「排行榜」的意思是一個本地的,一個連接到您自己的web服務,或第三方嗎? – Haedrian 2013-04-06 11:46:05

+0

是的,我寧願保持關於這個應用程序的一切離線。 – 2013-04-06 11:52:10

回答

1

好吧。在檢測到碰撞時,您可以將變量分數重置爲0,將分數存儲在獨立存儲設置中,並將該鍵作爲配置文件名稱。只有在已經存在的鍵值較小的情況下,您才能進行額外的存儲操作,或者如果找不到鍵值,則可以將其直接存儲起來。

2

首先,在處理小行星碰撞時發生的事情的代碼中,首先需要保存分數,然後在完成之後重置它。當你顯示它時,你需要從序列化文件中加載你的排行榜。

我不打算進入細節,因爲我發現了一個網站,basicly解釋什麼,我會告訴你:http://xnaessentials.com/tutorials/highscores.aspx

Ofcourse,你將需要修改此一點,添加的方式來訂購高分,但我懷疑這應該讓你開始。

0

遊戲結束後保持高分的最簡單方法是使int爲靜態,並且只在新遊戲開始時將其重置爲零,而不是在遊戲結束時將其重置爲零。

所以在你的MyGame類中: internal static int Score = 0;

無論函數開始新遊戲: MyGame.Score = 0;

並在你的排行榜屏幕上: List highScores = new List();

...

如果(highScores.Count == 0 || MyGame.Score>榜[highScores.Count-1]){// 比分取得了有序列表排行榜(你需要將其限制爲某些最高分數) }