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

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

Шрифт:

Отражения

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

updatePositions
приведен в листинге 11.8.

Листинг 11.8

/// <summary>

/// Направление движения по оси X

/// </summary>

private bool goingRight = true;

/// <summary>

/// Направление движения по оси Y

/// </summary>

private bool goingDown = true;

private void updatePositions {

 if (goingRight) {

cx++;

 } else {

cx--;

 }

 if ((cx + cheeseImage.Width) >= this.Width) {

goingRight = false;

 }

 if (cx <= 0) {

goingRight = true;

 }

 if (goingDown) {

cy++;

 } else {

cy--;

 }

 if ((cy + cheeseImage.Height ) >= this.Height) {

goingDown = false;

 }

 if (cy <= 0) {

goingDown = true;

 }

}

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

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

Управление скоростью движения объекта

Рассматривая поведение программы, вам, вероятно, хотелось бы ускорить процесс движения объекта. Чтобы игра была динамичной и увлекательной, нужно постепенно увеличивать сложность игрового процесса для пользователя. Одним из таких способов является ускорение движения. На данный момент кусочек сыра проходит расстояние от одного угла до другого за 5 секунд. Увеличить скорость перемещения картинки очень просто. Достаточно увеличивать значение текущей позиции объекта не на один пиксел, а на несколько. Нужно объявить новые переменные

xSpeed
и
ySpeed
, которые будут отвечать за увеличение или уменьшение скорости движения объекта. Соответствующий код приведен в листинге 11.9.

Листинг 11.9

/// <summary>

/// Скорость движения сыра по горизонтали

/// </summary>

private int xSpeed = 1;

/// <summary>

/// Скорость движения сыра по вертикали

/// </summary>

private int ySpeed = 1;

private void updatePositions {

 if (goingRight) {

cx += xSpeed;

 } else {

cx -= xSpeed;

 }

 if ((cx + cheeseImage.Width) >= this.Width) {

goingRight = false;

 }

 if (cx <= 0) {

goingRight = true;

 }

 if (goingDown) {

cy += ySpeed;

 } else {

cy -= ySpeed;

 }

 if ((cy + cheeseImage.Height) >= this.Height) {

goingDown = false;

 }

 if (cy <= 0) {

goingDown = true;

 }

}

Изменяя значения переменных

xSpeed
и
ySpeed
, мы можем по своему желанию увеличивать или уменьшать скорость движения кусочка сыра. Для этого надо создать новую функцию, код которой приведен в листинге 11.10.

  • Читать дальше
  • 1
  • ...
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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