C#基本游戏的高分系统

时间:2014-08-03 03:00:23

标签: c#

您好我正在为我的游戏制作一个高分系统。

现在我正在使用以下代码:

string currentScore = File.ReadLines("Highscores.txt").Take(4).First();

int.TryParse(currentScore, out currentscoreInt);

if (currentscoreInt < score)
{
    string writeScore = score.ToString();
    System.IO.StreamWriter file = new System.IO.StreamWriter("Highscores.txt");
    file.WriteLine("NAME:");
    file.WriteLine(name);
    file.WriteLine("SCORE:");
    file.WriteLine(writeScore);
    file.WriteLine("CHARACTER:");
    file.WriteLine(character);

    file.Close();
}

我遇到的问题是,如果得分(最新得分)小于从文件中读取的得分,则只需将其写入。我相信这是因为从文件读取然后转换为int的字符串返回为0.我不确定下一步该做什么。三江源

3 个答案:

答案 0 :(得分:2)

我的猜测是第一行:

string currentScore = File.ReadLines("Highscores.txt").Take(4).First();

Take(4)将获取Highscores.txt文件的前4行,而First()将返回第一个元素。从你的编写代码判断,这将采用“NAME:”并将其解析为整数 - 这可能不会做你想做的事情

答案 1 :(得分:1)

int.TryParse(currentScore, out currentscoreInt);

TryParse将返回一个布尔值,告诉您解析是否成功。如果不是,则out变量将设置为默认值,因此currentscoreInt为0.

验证您的TryParse是否已成功,并从那里开始:

bool parsed = int.TryParse(currentScore, out currentscoreInt);
if(parsed) 
{
   //.....
}

总之,你的代码非常令人困惑。为什么currentscore会被从高分榜中拉出来?你应该调试你的代码。

答案 2 :(得分:0)

。取(4)抓住前4行。然后First()抓住第一行(从前四行),它看起来应该是&#34; NAME:&#34;,它不会转换为int。你可能想要.Last()而不是.First()。