Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Удар по шайбе

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

Если хоккеист находится под контролем искусственного интеллекта, то мы обновляем ее логику, вызывая mBrain. update (). Если же хоккеист под управлением игрока, то логика ИИ игнорируется, а спортсмен следует за мышью. В классе PlayState метод goFromStickHit () выполняется каждый раз, когда игрок нажимаете на экран. Координата клика используется в качестве конечной точки для удара. Результат виден… Читать ещё >

Удар по шайбе (реферат, курсовая, диплом, контрольная)

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

Вычисление вектора удара, А вот и реализация удара по шайбе:

public class Puck {.

// (…).

public function goFromStickHit (theAthlete :Athlete, theDestination: Vector3D, theSpeed: Number = 160) :void {.

// установка шайбы перед хоккеистом во избежании неожиданных столкновений.

placeAheadOfOwner ();

// очистка владельца шайбы (т.к. был совершен удар).

setOwner (null);

// вычисление траектории шайбы.

var new_velocity :Vector3D = theDestination — position;

velocity = normalize (new_velocity) * theSpeed; } }.

В классе PlayState метод goFromStickHit () выполняется каждый раз, когда игрок нажимаете на экран. Координата клика используется в качестве конечной точки для удара. Результат виден ниже:

Добавление ИИ

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

Для этого мы будем использовать конечный автомат (FSM — finite state machine). Как было написано ранее, FSM является универсальным и полезным инструментом для реализации ИИ в играх.

Немного изменим наш класс Athlete:

public class Athlete {.

// (…).

private var mBrain: StackFSM; // конечный автомат, контролирующий ИИ.

public function Athlete (thePosX :Number, thePosY: Number, theTotalMass: Number) {.

// (…).

mBrain = new StackFSM (); }.

// (…) }.

Поле mBrain является экземпляром класса StackFSM, о котором более подробно вы можете узнать из этой статьи. Он использует стек для управления состоянием ИИ. Каждое состояние описывается методом, и, когда состояние кладется в стек, оно становится активным и вызывается каждый раз при вызове основного метода update ().

Все состояния игрока будут выполнять строго определенную функцию: взять шайбу, отобрать шайбу, патрулировать зону и т. д.

Теперь хоккеист может быть как под нашим контролем, так и под контролем ИИ. Обновим наш класс:

public class Athlete {.

// (…).

public function update ():void {.

// очистка всех действующих сил.

mBoid.steering = null;

if (mControlledByAI) {.

// хоккеист управляем ИИ.

// обновление логики конечного автомата.

mBrain.update ();

} else {.

// хоккеист управляем игроком,.

// поэтому он будет следовать за курсором мыши.

followMouseCursor (); }.

// главный метод обновления физического тела.

mBoid.update (); } }.

Если хоккеист находится под контролем искусственного интеллекта, то мы обновляем ее логику, вызывая mBrain. update (). Если же хоккеист под управлением игрока, то логика ИИ игнорируется, а спортсмен следует за мышью.

Что касается самих состояний, посылаемых искусственному интеллекту, то мы реализуем два из них. Первое будет отвечать за подготовку игроков к матчу, т. е. они переместятся к своим стартовым позициям и будут смотреть на шайбу. Второе состояние просто будет заставлять хоккеиста стоять и следить за шайбой.

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