繁体   English   中英

如何在游戏中添加高分

[英]How to add High score to game

所以我需要在蛇游戏中添加一个高分表,当我用google搜索它时我什么都不懂。 你们可以凭经验向我解释如何做吗?

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

在游戏结束时(当看到玩家得分时)创建一些方法来将得分保存在结构化文件中,例如XML(使用System.IO)。 XML文件可以直接加载到DataSet中,而在DataSet中创建的DataTable是保持较高得分的绝佳来源。 您可以“即时”对asc / desc进行排序。

编辑:根据@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文件中的数据创建并实现。 它应包含一个名为“ score”的DataTable对象,其列“ playerName”和“ points”。

3)从数据集获取数据表:

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);

就这样。 感谢您的阅读,希望对您有所帮助。

为简单起见,为什么不只使用文本(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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM