Я создаю игру-викторину для моего курса по вычислительной технике уровня A.Тест работает нормально, но проблема в том, что в конце теста я хочу сохранить оценку пользователей и имя пользователя в текстовом файле.Я уже пытался найти ответ как на Stack Overflow, так и на других сайтах, но не смог найти ответ.
В конце теста у меня есть форма EndForm, и когда эта форма загружается, я вызываю метод с именем SaveScore()
.Код ниже.Я хочу, чтобы этот метод сохранял имя пользователя и оценку пользователя в файле Scores.txt.Я также хочу, чтобы оценка пользователей обновлялась, если пользователь повторяет тест и получает более высокий балл.Я не знаю, почему мой текущий код не работает.
private void SaveScore()
{
string file = @"..\..\textfiles\scores.txt";
FileStream fileStream;
StreamWriter streamWriter;
try
{
if (File.Exists(file))
{
string[] HighScore = File.ReadAllLines(file).ToArray();
string[] contents = new string[] { };
File.WriteAllLines(file, contents);
fileStream = new FileStream(file, FileMode.Create, FileAccess.Write);
streamWriter = new StreamWriter(fileStream);
for (int i = 0; i < HighScore.Length; i++)
{
string[] HighScores = HighScore[i].Split('~');
string username = HighScores[0];
int currentScore = Convert.ToInt32(HighScores[1]);
if (player.Score > currentScore)
{
streamWriter.WriteLine(player.Name + "~" + player.Score);
for (int x = i; x < 4; x++)
{
string[] newHighScore = HighScore[x].Split('~');
string newUsername = newHighScore[0];
int newScore = Convert.ToInt32(newHighScore[1]);
streamWriter.WriteLine(newUsername + "~" + newScore);
}
break;
}
else
{
streamWriter.WriteLine(username + "~" + currentScore);
}
streamWriter.Close();
fileStream.Close();
//Write player score data to file if it is not already there.
if (HighScore.Length < 10)
{
fileStream = new FileStream(file, FileMode.Append, FileAccess.Write);
streamWriter = new StreamWriter(fileStream);
streamWriter.WriteLine(player.Name + "~" + player.Score);
streamWriter.Close();
fileStream.Close();
}
}
}
}
catch
{
MessageBox.Show("Error saving high score", "Error");
}
}
Любая помощь будет оценена, спасибо заранее.