[英]How to add High score to game
在游戏结束时(当看到玩家得分时)创建一些方法来将得分保存在结构化文件中,例如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.