如何在游戏中添加高分

时间:2016-04-20 14:57:15

标签: c# xml

所以我需要在蛇形游戏中添加一个高分表,当我谷歌它时我无法理解。那么你们可以通过经验法则向我解释如何做到这一点吗?

这是代码,我不能在这里输入它也许它太长了。 Pastebin

2 个答案:

答案 0 :(得分:1)

在游戏结束时(当玩家得分可见时)创建一些方法来保存结构化文件中的得分,如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);

因此,您的DataSet结构将使用XML文件中的数据创建和实现。它应该包含一个名为&#34;得分&#34;的DataTable对象。用列&#34; playerName&#34;和&#34;点&#34;。

3)从DataSet获取DataTable:

DataTable scoresDataTable = scoresDataSet.Tables["score"];

4)将DataTable绑定到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视图,你仍然拥有与HeaderText属性不同的列名的DataSource。

7)将DataSet保存为XML:

scoresDataSet.WriteXML(@"c:\MyGameFolder\MyXML.xml");

8)排序DataGridView降序(顶部得分更高):

yourGridViewName.Sort(yourGridViewName.Columns["points"], ListSortDirection.Descending);

这就是全部。感谢您的阅读,我希望它有所帮助。

答案 1 :(得分:0)

为了简单起见,为什么不使用文本(csv / json)文件。

就像在其他答案中所说的那样,你需要在最后捕获信息,如果你对名字不感兴趣只会得分更简单,但无论哪种方式你都可以采用相同的方式。

如果您要保留一份名为前十名的名单,那么您会想要 - 阅读文件 - 添加新分数 - 按分数排序 - 写前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));