所以我需要爲蛇遊戲添加一個高分表,並且當我在Google上玩時我無法理解一件事。那麼你們可以按照經驗法則向我解釋怎麼做?如何在遊戲中添加高分
這是代碼,我不能在這裏輸入,也許它太長了。 Pastebin
所以我需要爲蛇遊戲添加一個高分表,並且當我在Google上玩時我無法理解一件事。那麼你們可以按照經驗法則向我解釋怎麼做?如何在遊戲中添加高分
這是代碼,我不能在這裏輸入,也許它太長了。 Pastebin
在遊戲結束時(當玩家評分可見時),創建一些方法來保存結構化文件中的分數,如XML(使用System.IO)。 XML文件可以直接加載到DataSet,DataSet中創建的DataTable是保持高分數據的重要來源。您可以將它作爲「/飛行」進行排序。
編輯: 根據@workabyte希望我會提供一些代碼示例(但不是完整的代碼 - 只是提示,以顯示「如何」)。
1)保持分數可以是非常簡單的XML結構:
<scores>
<score>
<playerName>Some Name</playerName>
<points>100</points>
</score>
</scores>
2)讀取XML文件到DataSet對象:
DataSet scoresDataSet = new DataSet();
string xmlPath = @"c:\MyGameFolder\MyXML.xml";
scoresDataSet.ReadXML(xmlPath);
所以你的數據集結構將被創建,並與數據實現來自XML文件。它應該包含一個名爲「score」的DataTable對象,並帶有「playerName」和「points」列。
3)獲取數據表的數據集:
DataTable scoresDataTable = scoresDataSet.Tables["score"];
4)結合數據表到DataGridView控件(我相信你已經把合適的形式對這種控制):
yourGridViewName.DataSource = scoresDataTable;
5)變化的列標題DataGridView:
yourGridViewName.Columns["playerName"].HeaderText = "Player";
yourGridViewName.Columns["points"].HeaderText = "Score";
6)添加新的分數(某些按鈕的示例代碼爲例如):
scoresDataTable.Rows.Add();
scoresDataTable.Rows[scoresDataTable.Rows.Count - 1]["playerName"] = "Player2";
scoresDataTable.Rows[scoresDataTable.Rows.Count - 1]["score"] = "200";
正如你可以看到你的DataGridView自動刷新。你必須記住,5)中的步驟只是爲了更好的GridView視圖,並且你仍然擁有不同列名的DataSource而不是HeaderText屬性。
7)保存DataSet轉換XML:
scoresDataSet.WriteXML(@"c:\MyGameFolder\MyXML.xml");
8)排序的DataGridView下降頂部(分數越高):
yourGridViewName.Sort(yourGridViewName.Columns["points"], ListSortDirection.Descending);
這就是全部。感謝您的閱讀,我希望它有幫助。
很好的答案,但如果你可以添加一些實際的例子,他會如何做到這一點會好很多 – workabyte
爲了簡單,爲什麼不直接使用文本(CSV/JSON)文件。
就像說在其他的答案,你需要在最後捕捉到的信息,如果你不感興趣的名稱僅分數會比較簡單,但無論哪種方式,你可以接近相同的方式。
如果你要保持一個列表中可以說前10名,那麼你會想 - 讀取文件 - 添加新的得分 - 爲了按分數 - 寫前10
File.ReadAllLines(filepath)可以用來消耗文件。那麼你會想將數據解析爲數字。
如果保存喜歡
name,score
的文件,你可以這樣做
var scores = File.ReadAllLines(file).Select(line => new HighScore{ name=line.Split(',').First(), score=line.Split(',').Last()).ToList()
scores.Add(new HightScore(value,value))
然後你可以使用File.WriteAllLines
File.WriteAllLine(scores.Take(10));
您應該添加一個最簡單的示例,包括您已經嘗試過的以及失敗的示例。不只是你的整個代碼和一個模糊的問題描述。 – Schore
我同意Schore的觀點,有100種方法可以做到這一點,因此瞭解你想要走的方向將會有所幫助。數據庫/文本文件...... – workabyte
嘗試搜索處理「如何在執行之間持久化數據」或類似問題的問題。您將找到大量資源。在這種情況下,您可能希望找到涉及序列化到文件的方法。 –