Обзор предстоящей работы
Касаемо обработки шайбы: если игрок, А находится с шайбой, а игрок B сталкивается с ним, то шайба переходит к игроку B, который становится недвижимым на некоторое время. Класс, ответственный за саму игру, называется PlayState. Среди его полей есть каток, две группы хоккеистов, а также двое ворот. Если мы добавим одного хоккеиста на поле, то увидим такой результат: Private var mBoid: Boid… Читать ещё >
Обзор предстоящей работы (реферат, курсовая, диплом, контрольная)
Как уже говорилось выше, хоккей — очень сложная игра. В ней присутствует огромное количество правил, нарушений и т. д. Для сокращения времени обучения, мы несколько упростим игру и сохраним лишь небольшой набор оригинальных правил этого вида спорта: у нас не будет вратарей (все игроки на катке будут двигаться), а также мы не будем учитывать всевозможные штрафы.
Ворота в нашей игре тоже будут своеобразные — сетка будет отсутствовать, а для того, чтобы забить гол, достаточно шайбе коснуться «ворот» с любой стороны. После забитого гола все игроки встают на свои позиции, шайба перемещается в центр, и через несколько секунд игра начинается заново.
Касаемо обработки шайбы: если игрок, А находится с шайбой, а игрок B сталкивается с ним, то шайба переходит к игроку B, который становится недвижимым на некоторое время.
Для вывода графики я буду использовать графический движок Flixel. Однако в прилагаемом коде я буду опускать все связанное с графикой и максимально обращать ваше внимание на механику игры.
Базовые классы
Давайте начнем с основ — катка, который представляет собой прямоугольник, игроков и двух ворот. Каток имеет физические границы, поэтому ничего не выйдет за пределы поля. Хоккеист будет описываться классом Athlete:
public class Athlete {.
private var mBoid: Boid; // контролирует физическое тело хоккеиста.
private var mId: int; // уникальный идентификатор хоккеиста.
public function Athlete (thePosX :Number, thePosY: Number, theTotalMass: Number) {.
mBoid = new Boid (thePosX, thePosY, theTotalMass); }.
public function update ():void {.
// очистка всех действующих сил.
mBoid.steering = null;
// метод блуждания по катку.
wanderInTheRink ();
// главный метод обновления физического тела.
mBoid.update (); }.
private function wanderInTheRink () :void {.
var aRinkCenter: Vector3D = getRinkCenter ();
// Если расстояние до центра катка больше 80.
// вернуться в центр, иначе бродить.
if (Utils.distance (this, aRinkCenter) >= 80) {.
mBoid.steering = mBoid. steering + mBoid. seek (aRinkCenter);
} else {.
mBoid.steering = mBoid. steering + mBoid. wander (); } } }.
Поле mBoid является объектом класса Boid, более подробно о котором вы можете прочитать в серии уроков про рулевое поведение. Он имеет, среди прочих элементов, вектор направления, вектор силы, а также текущее положение игрока.
Метод update () будет вызываться каждый раз, пока запущена игра. Сейчас в этом методе очищается любое активное усилие в рулевом поведении, добавляется эффект блуждания игрока, а также вызывается метод mBoid. update ().
Класс, ответственный за саму игру, называется PlayState. Среди его полей есть каток, две группы хоккеистов, а также двое ворот.
public class PlayState {.
private var mAthletes: FlxGroup;
private var mRightGoal: Goal;
private var mLeftGoal: Goal;
public function create ():void {.
// здесь будут создаваться все игровые элементы }.
override public function update ():void {.
// включить коллизию всех хоккеистов с бортиками катка.
collide (mRink, mAthletes);
// проверка того, что все хоккеисты в пределах катка.
applyRinkContraints (); }.
private function applyRinkContraints () :void { } }.
Если мы добавим одного хоккеиста на поле, то увидим такой результат: