Чтение онлайн

на главную - закладки

Жанры

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

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

Шрифт:

/// Отчет времени перед исчезновением ветчины.

/// Устанавливаем случайное число при появлении ветчины.

/// </summary>

private int hamTimerCount;

/// <summary>

/// Случайное число.

/// </summary>

private Random randomNumbers;

/// <summary>

///
Вызывается для активизации ветчины

/// </summary>

private void startHam {

 // не продолжать, если ветчина уже есть на экране

 if (hamPresent) {

return;

 }

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

 if (randomNumbers.Next(10) > hamLikelihood) {

// не выводить ветчину на экран

return;

 }

 // позиция ветчины в случайной позиции на экране

 bonusHamRectangle.X =

randomNumbers.Next(ClientSize.Width — bonusHamRectangle.Width);

 bonusHamRectangle.Y =

randomNumbers.Next(ClientSize.Height - bonusHamRectangle.Height);

 // как долго держится изображение ветчины на экране

 // (по крайне мере 50 тиков)

 hamTimerCount = 50 + randomNumbers.Next(100);

 // делаем ветчину видимой

 hamPresent = true;

}

На первый взгляд код кажется сложным. Но все очень просто. Метод вызывается каждый раз при столкновении сыра с томатом. Если ветчина уже отображается на экране, то метод ничего не делает. Если ветчины на экране нет, то программа использует случайное число для принятия решения, нужно ли показывать на экране изображение. Генерируется случайное число в промежутке от 0 до 10. Ветчина не выводится, если это число больше, чем заданная переменная.

В нашем случае значение

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

Также метод инициализирует счетчик таймера для отчета длительности присутствия ветчины на экране. Программа использует минимальное время вкупе со случайным периодом. Таким образом, пользователь никогда не будет знать, как долго ветчина будет видима. Каждый раз при обновлении игры программа должна обновлять состояние куска ветчины. Если игрок коснулся изображения ветчины, то надо увеличить счет и удалить изображение. Соответствующий код приведен в листинге 11.52.

Листинг 11.52

/// <summary>

/// Обновляем состояние ветчины

/// </summary>

private void hamTick {

 //
ничего не делаем, если ветчина невидима

 if (!hamPresent) {

return;

 }

 if (breadRectangle.IntersectsWith(bonusHamRectangle)) {

// при касании игроком куска ветчины

// прибавляем 100 очков

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
. Теперь предстоит создать таблицу лучших результатов, улучшить работу графики и разобраться с применением спрайтов.

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

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

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

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

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Бастард Императора. Том 8

Орлов Андрей Юрьевич
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 8

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Эра Мангуста. Том 2

Третьяков Андрей
2. Рос: Мангуст
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эра Мангуста. Том 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Помещицы из будущего

Порохня Анна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Помещицы из будущего

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри