Книга: Программирование КПК и смартфонов на .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();
}
}
}
- Начало работы
- Добавление изображения в программу
- Использование встроенных ресурсов
- Вывод картинки на экран
- Создание анимации
- Отражения
- Управление скоростью движения объекта
- Добавляем новый объект
- Устранение мерцания
- Хлеб — всему голова
- Обнаружение столкновений
- Столкновения батона и мяча
- Новые объекты
- Размещение помидоров
- Уничтожение томатов
- Счет игры
- Ведение счета
- Звуковые эффекты
- Дальнейшие улучшения
- И опять добавляем новые объекты
- Управление таблицей результатов
- Переключение между формами
- Отображение дочернего окна
- Получение имени игрока
- Хранение лучших результатов
- Улучшение графики
- Спрайты
- Сохранение информации о пользователях при миграции
- Сохранение информации из Интернета
- Ограничение результатов выборки FIRST
- Хранение конфигурации в системном реестре
- Построение модели выходов (результатов)
- Сохранение рабочей книги с именем, представляющим собой текущую дату
- Сохранение и использование шаблона узла
- Меры результатов
- Сохранение внесенных изменений
- Сохранение информации в реестре Windows
- 4.11.8. Сохранение фильтра
- 13.3. Хранение резервных копий