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

Использование FSM, основанного на стеке

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

Brain. pushState (findLeaf); // push «findLeaf» state, making it the active state }. Brain. pushState (goHome); // push «goHome» state, making it the active state. }. Муравей только что подобрал листок, время. Перемещает муравья подальше от курсора. Муравей уже дома. Пора искать новый лист. If (distance (Game.mouse, this) ≤ MOUSE_THREAT_RADIUS) {. If (distance (Game.mouse, this… Читать ещё >

Использование FSM, основанного на стеке (реферат, курсовая, диплом, контрольная)

Важно отметить, что при использовании конечного автомата на основе стека каждое состояние несет ответственность за свое удаление из стека при отсутствии необходимости в нем. Например, состояние attack () само должно удалять себя из стека в том случае, если враг был уже уничтожен.

public class Ant.

public var brain: StackFSM;

public function Ant (posX :Number, posY: Number) {.

brain = new StackFSM ();

// Начинаем с поиска листка.

brain.pushState (findLeaf); }.

public function findLeaf () :void {.

// Перемещает муравья к листу.

velocity = new Vector3D (Game.instance.leaf.x — position. x, Game.instance.leaf.y — position. y);

if (distance (Game.instance.leaf, this) <= 10) {.

//Муравей только что подобрал листок, время.

// возвращаться домой!

brain.popState (); // removes «findLeaf» from the stack.

brain.pushState (goHome); // push «goHome» state, making it the active state. }.

if (distance (Game.mouse, this) <= MOUSE_THREAT_RADIUS) {.

// Курсор мыши рядом. Надо бежать!

// Состояние «runAway» добавляется перед «findLeaf», что означает,.

// что состояние «findLeaf» вновь будет активным при завершении состояния «runAway». brain. pushState (runAway); } }.

public function goHome () :void {.

// Перемещает уравья к дому.

velocity = new Vector3D (Game.instance.home.x — position. x, Game.instance.home.y — position. y);

if (distance (Game.instance.home, this) <= 10) {.

// Муравей уже дома. Пора искать новый лист.

brain.popState (); // removes «goHome» from the stack.

brain.pushState (findLeaf); // push «findLeaf» state, making it the active state }.

if (distance (Game.mouse, this) <= MOUSE_THREAT_RADIUS) {.

// Курсор мыши рядом. Надо бежать!

// Состояние «runAway» добавляется перед «goHome», что означает,.

// что состояние «goHome» вновь будет активным при завершении состояния «runAway». brain. pushState (runAway); } }.

public function runAway () :void {.

// Перемещает муравья подальше от курсора.

velocity = new Vector3D (position.x — Game.mouse.x, position. y — Game.mouse.y);

// Курсор все еще рядом?

if (distance (Game.mouse, this) > MOUSE_THREAT_RADIUS) {.

// Нет, уже далеко. Пора возвращаться к поискам листочкев.

brain.popState (); } } (…) }.

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