Вход/Регистрация
Программирование КПК и смартфонов на .NET Compact Framework
вернуться

Климов Александр Петрович

Шрифт:

scoreValue = scoreValue + 100;

messageString = "Счет: " + scoreValue + " Жизнь: " + livesLeft;

// звук касания ветчины

bonusHamSound.Play;

// прячем ветчину с экрана

hamPresent = false;

 } else {

// Отчитываем время назад

hamTimerCount--;

if (hamTimerCount == 0) {

// время вышло - удаляем ветчину

hamPresent = false;

}

 }

}

Также надо изменить код методов

Form1_Paint
и
updatePosition
. Если изображения батона и ветчины пересекаются, то нужно увеличить счет и удалить изображение ветчины. В ином случае надо уменьшить время отображения ветчины или удалить это изображение, если соответствующий период времени уже закончился. Соответствующий код приведен в листинге 11.53.

Листинг 11.53

//(Form1_Paint)

// Выводим на экран кусок ветчины

if (hamPresent) {

 g.DrawImage(bonusHamImage, bonusHamRectangle.X, bonusHamRectangle.Y);

}

//(updatePosition)

// Активизируем ветчину

startHam;

//(timerTick)

hamTick;

Но мы можем продолжить улучшение игры, добавляя в нее новые возможности. Все изменения по-прежнему будут происходить в проекте

Bouncer
. Теперь предстоит создать таблицу лучших результатов, улучшить работу графики и разобраться с применением спрайтов.

Управление таблицей результатов

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

Поэтому понадобится еще одна форма для отображения имен игроков. При достижении лучшего результата эта форма будет показана на экране, чтобы пользователь мог ввести свое имя.

Новую форму надо добавить в проект и задать для нее имя

HighScore.cs
. На созданной форме следует разместить текстовое поле для ввода имени и меню, которое сигнализирует об окончании ввода. Созданная форма будет отображаться при достижении высокого результата. В этом случае игрок-рекордсмен вводит свое имя и нажимает на пункт меню OK для закрытия формы и сохранения имени.

Переключение между формами

Программа должна выводить форму с результатами поверх основной формы игры, чтобы позволить игроку ввести имя, а затем вернуться к игре. Когда форма с лучшими результатами появляется на экране, основная форма должна быть скрыта. И наоборот, при закрытии окна с результатами основная форма восстанавливается.

При загрузке формы генерируется событие

Load
. При закрытии формы генерируется событие
Closing
. Программа должна контролировать эти события для реализации поставленной задачи.

При старте программы создается экземпляр формы

HighScore
. Данный экземпляр имеет ссылку на родительскую форму. При достижении высокого результата форма
HighScore
выводится на экран. При этом выполняется метод
HighScore_Load
, который скрывает родительскую форму. На экране появляется форма, отображающая лучшие результаты, игрок вводит свое имя и выполняет команду меню
OK
. При этом срабатывает обработчик события для меню
OK
, которое закрывает форму
HighScore
. При закрытии формы выполняется метод
HighScore_Closing
. Основное окно формы снова появляется на экране. Код главной формы извлекает имя игрока из формы
HighScore
.

Итак, метод

HighScore_Load
должен скрыть родительскую форму. Для этого метод должен использовать ссылку на главное окно. Ссылка на родительское окно передается в форму
HighScore
при ее создании, как показано в листинге 11.54.

Листинг 11.54

/// <summary>

/// Родительское окно, из которого вызывается данное окно.

/// Используется при закрытии данного окна.

/// </summary>

private Form parentForm;

public HighScore(Form inParentForm) {

 // Сохраняем родительское окно при закрытии окна лучших

 // результатов.

 parentForm = inParentForm;

 InitializeComponent;

}

Этот код является конструктором формы

HighScore
. Когда идет создание формы, то передается ссылка на родительскую форму.

Код метода

HighScore_Load
приведен в листинге 11.55.

  • Читать дальше
  • 1
  • ...
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: