Помощь в написании студенческих работ
Антистрессовый сервис

Состояние покоя. 
Конечный автомат: теория и реализация

РефератПомощь в написанииУзнать стоимостьмоей работы

Нахожусь ли я в своей начальной позиции? MBoid. steering = mBoid. steering + mBoid. arrive (mInitialPosition, 80); Private function stopAndlookAt (thePoint :Vector3D) :void {. MBoid. velocity = normalize (mBoid.velocity) * 0.01; } }. If (distance (mBoid.position, mInitialPosition) ≤ 5) {. Я в своей стартовой позиции. MBoid. velocity = thePoint — mBoid. position; Private function prepareForMatch… Читать ещё >

Состояние покоя. Конечный автомат: теория и реализация (реферат, курсовая, диплом, контрольная)

public class Athlete {.

public function Athlete (thePosX :Number, thePosY: Number, theTotalMass: Number, theTeam: FlxGroup) { // указание ИИ состояния 'idle'.

mBrain.pushState (idle); }.

private function idle () :void {.

var aPuck: Puck = getPuck ();

stopAndlookAt (aPuck.position); }.

private function stopAndlookAt (thePoint :Vector3D) :void {.

mBoid.velocity = thePoint — mBoid. position;

mBoid.velocity = normalize (mBoid.velocity) * 0.01; } }.

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

Метод stopAndlookAt () высчитывает нужное направление по тому же алгоритму, по которому мы вычисляли направление удара. Вектор, начинающийся с позиции хоккеиста и заканчивающийся позицией шайбы, измеряется по формуле thePoint — mBoid. position и используется для указания направления взгляда спортсмена.

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

Подготовка к матчу

Это состояние ответственно за то, чтобы игроки возвращались на свои позиции и останавливались там. Обновим наш класс Athlete:

public class Athlete {.

private var mInitialPosition: Vector3D; // стартовая позиция хоккеиста.

public function Athlete (thePosX :Number, thePosY: Number, theTotalMass: Number, theTeam: FlxGroup) { // (…).

mInitialPosition = new Vector3D (thePosX, thePosY); // указание ИИ состояния 'idle'.

mBrain.pushState (idle); }.

private function prepareForMatch () :void {.

mBoid.steering = mBoid. steering + mBoid. arrive (mInitialPosition, 80);

// нахожусь ли я в своей начальной позиции?

if (distance (mBoid.position, mInitialPosition) <= 5) {.

// я в своей стартовой позиции.

mBrain.popState ();

mBrain.pushState (idle); } } // (…) }.

Ниже вы сможете увидеть результат добавления ИИ в игру. Нажмите клавишу G и игроки переместятся в случайные позиции. Затем они встанут на нужные места:

Показать весь текст
Заполнить форму текущей работой