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

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

Шрифт:

□ Добавление в игру случайных элементов.

В программу надо ввести булеву переменную

gameLive
, которая имеет значение
True
, когда пользователь ведет игру. Если значение переменной равно
False
, то сыр будет двигаться по экрану, но никаких игровых действий производиться не будет.

Для этого потребуется изменить метод, выполняющийся при старте игры. Новая версия приведена в листинге 11.44.

Листинг 11.44

/// <summary>

/// True, если игра запущена на экране.

/// </summary>

private bool gameLive = false;

/// <summary>

/// Число оставшихся жизней.

/// </summary>

private int livesLeft;

/// <summary>

/// Число жизней, доступных для игрока.

/// </summary>

private int startLives = 3;

private void startGame {

 // Устанавливаем число жизней, счет и сообщения

 livesLeft = startLives;

 scoreValue = 0;

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

 // Располагаем помидоры наверху экрана

 tomatoDrawHeight = tomatoLevelStartHeight;

 placeTomatoes;

 // Поместим батон в центре экрана

 breadRectangle.X = (this.ClientSize.Width - breadRectangle.Width) / 2;

 breadRectangle.Y = this.ClientSize.Height / 2;

 // Поместим сыр над батоном в центре экрана

 cheeseRectangle.X = (this.ClientSize.Width - cheeseRectanglе.Width) / 2;

 cheeseRectangle.Y = breadRectangle.Y — cheeseRectangle.Height;

 // Установим начальную скорость

 xSpeed = 1;

 ySpeed = 1;

 // Установим флаг, позволяющий начать игру

 gameLive = true;

}

Этот код возвращает все объекты на исходные позиции и начинает новую игру. Батон располагается в середине экрана, а сыр чуть выше него. Этот метод связан с пунктом меню, позволяющим начать игру.

Теперь надо добавить код, который проверяет, не коснулся ли сыр нижней границы экрана. В этом случае вызывается метод

loseLife
, который уменьшает количество жизней у игрока.

Соответствующий код приведен в листинге 11.45.

Листинг 11.45

if ((cheeseRectangle.Y + cheeseImage.Height) >= this.Height) {

 // сыр достиг нижней границы экрана

 loseLife;

 goingDown = false;

}

Метод

loseLife
подсчитывает количество оставшихся жизней и заканчивает игру, если все жизни были израсходованы. Также метод может показывать лучший достигнутый счет игры. Его код приведен в листинге 11.46.

Листинг 11.46

private void loseLife {

 if (!gameLive) {

return;

 }

 // Потеряли еще одну жизнь

 livesLeft--;

 if (livesLeft > 0) {

// обновим сообщение на экране

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

 } else {

// Останавливаем игру

gameLive = false;

// сравниваем с лучшим результатом

if (scoreValue > highScoreValue) {

highScoreValue = scoreValue;

}

// меняем сообщение на экране

messageString = "Лучший результат: " + highScoreValue;

 }

}

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

  • Читать дальше
  • 1
  • ...
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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