Читаем Создание игр для мобильных телефонов полностью

Этот код достаточно прост, в нем переменным класса присваиваются параметры спрайта преследующего. Важно обратить внимание на порядок параметров преследующего, передаваемых в конструктор. Также стоит обратить внимание на вызов родительского конструктора Sprite() через метод super(), которому передаются значения ширины и высоты фрейма спрайта.

Помимо переменных, работу класса определяет единственный метод – update(). Этот метод вызывается один раз за игровой цикл, он обновляет спрайт и перемещает его. Листинг 13.2 содержит код метода update() метода ChaseSprite.

Листинг 13.2. Метод update() класса ChaseSprite реализует преследование

public void update() {

// временно сохранить положение

int xPos = getX();

int yPos = getY();

int direction = 0; // up = 0, right = 1, down = 2, left = 3

// Преследовать или переместиться случайным образом в зависимости от

уровня агрессии

if (Math.abs(rand.nextInt() % (aggression + 1)) > 0) {

// преследовать

if (getX() > (chasee.getX() + chasee.getWidth() / 2)) { //Преследование продолжается, пока преследуемый не входит в граничную зону преследователя

// преследовать влево

move(-speed, 0);

direction = 3;

}

else if ((getX() + getWidth() / 2) < chasee.getX()) {

// преследовать вправо

move(speed, 0);

direction = 1;

}

if (getY() > (chasee.getY() + chasee.getHeight() / 2)) {

// преследовать вверх

move(0, -speed);

direction = 0;

}

else if ((getY() + getHeight() / 2) < chasee.getY()) {

// преследовать вниз

move(0, speed);

direction = 2;

}

}

else {

// переместиться случайным образом

switch (Math.abs(rand.nextInt() % 4)) { //Если спрайт не преследует, то он просто перемещается случайным образом

// переместиться влево

case 0:

move(-speed, 0);

direction = 3;

break;

// переместиться вправо

case 1:

move(speed, 0);

direction = 1;

break;

// переместиться вверх

case 2:

move(0, -speed);

direction = 0;

break;

// переместиться вниз

case 3:

move(0, speed);

direction = 2;

break;

}

}

// проверить столкновения с барьером

if (barrier != null && collidesWith(barrier, true)) {

// вернуть спрайт в исходное положение

setPosition(xPos, yPos);

}

// если спрайт направленный, то перейти к нужному фрейму

if (directional) //Если спрайт является направленным, то выбирается соответствующий фрейм анимации, в противном случае выводится следующий фрейм анимации

setFrame(direction);

else

nextFrame();

}

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT