Книга: Программирование КПК и смартфонов на .NET Compact Framework

Хранение лучших результатов

Хранение лучших результатов

Теперь игроку может указывать свое имя при достижении хорошего результата. Но нужно как-то сохранять это имя и достигнутый результат. Эту информацию будем хранить в той же папке, где и саму программу. Значит, наша программа должна автоматически определять свое местонахождение в файловой системе, чтобы знать, где хранить эту информацию. За это отвечает код, приведенный в листинге 11.62.

Листинг 11.62

/// <summary>
/// Папка, в которой находится программа.
/// Используется как место для хранения настроек игры.
/// </summary>
private string applicationDirectory;
// Получим имя файла программы из текущей сборки
string appFilePath =
 execAssem.GetModules()[0].FullyQualifiedName;
// Выделяем из полного пути имени файла только путь к файлу
applicationDirectory =
 System.IO.Path.GetDirectoryName(appFilePath);
// Обязательно должен быть разделитель в конце пути
if (!applicationDirectory.EndsWith(@"")) {
 applicationDirectory += @"";
}

С помощью данного кода можно получить ссылку на первый модуль в программной сборке. Затем с помощью свойства FullyQualifiedName можно получить полный путь к файлу программы. Текущий каталог можно получить с помощью свойства GetDirectoryName. Также нам нужно быть уверенным, что путь к файлу заканчивается обратным слэшем. Небольшой код с проверкой решит эту проблему. Метод сохранения информации очень прост. Он приведен в листинге 11.63.

Листинг 11.63

/// <summary>
/// Имя файла для хранения лучших результатов.
/// </summary>
private string highScoreFile = "highscore.bin";
/// <summary>
/// Сохраняем лучший результат в файле.
/// </summary>
public void SaveHighScore() {
 System.IO.TextWriter writer = null;
 try {
  writer = new System.IO.StreamWriter(
   applicationDirectory + highScoreFile);
  writer.WriteLine(highScorePlayer);
  writer.WriteLine(highScoreValue);
 } catch {}
 finally {
  if (writer != null) {
   writer.Close();
  }
 }
}

Метод сохранения результата в файле вызывается при выходе из программы. Загрузка лучших результатов выполняется при старте программы с помощью метода LoadHighScore, код которого приведен в листинге 11.64.

Листинг 11.64

/// <summary>
/// Загружаем лучший результат из файла.
/// </summary>
public void LoadHighScore() {
 System.IO.TextReader reader = null;
 try {
  reader = new System.IO.StreamReader(applicationDirectory + highScoreFile);
  highScorePlayer = reader.ReadLine();
  string highScoreString = reader.ReadLine();
  highScoreValue = int.Parse(highScoreString);
 } catch {}
 finally {
  if (reader != null) {
   reader.Close();
  }
 }
}

Оглавление книги


Генерация: 1.151. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз