您好我正在为我的游戏制作一个高分系统。
现在我正在使用以下代码:
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.我不确定下一步该做什么。三江源
答案 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()。