.
Описание классов библиотеки «Easy game base library version 1.3»
Автор megabax   
17.12.2009 г.
Скачать библиотеку можно здесь

Скачать библиотеку можно здесь.

Скачать библиотеку с примером можно здесь

Посмотреть историю изменения библиотеки можно здесь здесь

 

(C) Шуравин А. П. www.easyprog.ru

 

Описание классов библиотеки «Easy game base library version 1.3»

 

Модуль EasyGameBase – базовые классы.

 

Класс TEasyGameBaseClass. Является родителем всех классов библиотеки. Содержит методы Serialize и Unserialize,  которые пишут и читают в поток соответственно.  Поддерживает контроль версии, для этого предусмотрен защищенный метод  GetVersion, при изменении версии класса он модифицируется. Таким образом, если потока читается объект старой версии это можно проанализировать. При чтении версия записывается в защищенное поле FVersion.  Так же содержит абстрактный метод GetClassCaption, предназначенный для получения русскоязычного наименования класса. Его необходимо переопределять для каждого дочернего класса.

 

Класс TEasyGamePointerCollection. Коллекция указателей на объекты класса TEasyGameBaseClass или его потомков. В отличии от TEasyGameContainer предназначен для хранения именно указателей, а не самих объектов.

 

Класс TEasyGameLocationObjectsCollection дочерний от TEasyGamePointerCollection. Это коллекция указателей на объекты класса TEasyGameLocationObject или его потомков. В отличии от TEasyGameBaseClass предназначен для хранения именно указателей, а не самих объектов.

 

Класс TEasyGameAxesSystem. Является преобразователем координат. Задается точка начала координат в другой координатной системе и масштаб по оси x и y. Для преобразования используются функции GetX, GetY и GetPoint. Для обратного преобразования, когда нужно по точке на экране определить координаты в координатной плоскости используются функции ScreenToAxesX и ScreenToAxesY.

 

Класс TEasyGameNoun. Обозначает сущность игры. Является родителем классов контейнеров (TEasyGameContainer) и классов, обозначающих объекты (TEasyGameObject).  Содержит метод процедуру MakeQuantumOfTime, которая предназначена для совершения действия за выделенный сущности квант времени.

 

Класс TEasyGameContainer. Предназначен для управления списком объектов. Имеет метод AddGameObject – добавление объекта в список. Метод MakeQuantumOfTime передает квант времени всем хранящимся в нем объектам. Данный класс является родителем для класса «Карта» (TEasyGameMap) и «Платформа игры»  (TEasyGamePlatform).  В отличии от TEasyGamePointerCollection и TEasyGameLocationObjectsCollection хранит именно сами объекты, которые физически удаляются из памяти при вызове деструктора этого класса.

 

Класс TEasyGameMap. Данный класс реализует карту.  Имеет свойства «Максимальные координаты» (MaxX и MaxY), метод AddGameObject может добавлять только локационные объекты (TEasyGameLocationObject) и их потомки.  Имеет метод Draw, который отображает карту со всеми включенными в нее объектами на экране. Для преобразования координат данный класс инкапсулирует объект TEasyGameAxesSystem. В данном классе предусмотрены методы для поиска объектов по координатам FindObjectsAsCoord и поиска заданного класса по координатам FindObjectsAsCoordAndClassName. Оба метода возвращают TEasyGameLocationObjectsCollection.

 

Класс TEasyGameAction.  Заготовка для класса «Действие». Не содержит ни полей, ни методов.

 

Класс TEasyGamePlatform. Игровая платформа. Функция данного класса – все включенным в игру объектам дать квант времени и увеличить текущее время на приращение.  Так же может при помощи этого класса управлять скоростью течения игры и размером кванта времени. Иными словами, за один такт вызова метода MakeQuantumOfTime квант времени может раздаваться объектам несколько раз, в зависимости от размера кванта времени и скорости течении игры. Если скорость больше, то за один такт квант времени раздается большее число раз.

 

Класс TEasyGameObject.  Объект. В отличии от сущности объект умеет производить действие в отношении других объектов (метод Action).

 

Класс TEasyGameLocationObject. В отличии от просто объекта привязан к карте, имеет координаты. Так же имеет метод DrawWithMap для его прорисовки на карте.

 

Класс TEasyGamePartOfObject. Заготовка для класса, реализующего составные части других объектов. Например, составной частью объекта дом может быть: стены, потолок, окна, двери, комнаты.

 

Класс TEasyGamePartsContainer.  Заготовка для контейнера составных частей объекта  (TEasyGamePartOfObject).

 

Класса TEasyGameDrawMapObject. Класс объекта, который может быть нарисован на карте. Дочерний от TEasyGameLocationObject.

 

Класс TEasyGameUnit. Реализует юнита – подвижный игровой объект. В данной версии может двигаться по карте со скоростью, заданной вектором в свойствах VX, VY (скорость по оси X и Y) соответственно.

 

Класс TEasyGameWall. Реализует объект «стена». В данной версии реализовано только отображение стены на карте в виде перегородок (что бы можно было создать лабиринт).

 

Класс TEasyGamePartOfWall. Заготовка для составных частей объекта TEasyGameWall (стена).  Имеет абстрактный метод IsPossibleEnter, который показывает, может ли данная часть обеспечить проход сквозь стену. Пример объекта, который позволяет пройти сквозь стену – дверь. Она может быть открытая или закрытая.

 

Класс TEasyGameWallPartsContainer. Заготовка контейнера составных частей стены. В него можно добавить только объекты класса TEasyGamePartOfWall или их потомки.

 

 

Модуль EasyGameWallForm– форма редактирования параметров стены.

 

Класс TfrmWallParameters. Класс формы редактирования параметров стены. Может редактировать координаты и расположения стены: слева, справа, спереди, сзади.

 

 

Модуль EaseGameForms -  модуль форм редактирования объектов.

 

Класс TEasyGameObjectEditForm – класс предка для всех форм редактирования объектов. Объявлять формы рекомендуется примерно вот так:

 

  TfrmWallParameters = class(TEasyGameObjectEditForm)

    chbTop: TCheckBox;

    chbLeft: TCheckBox;

    chbRight: TCheckBox;

    chbBottom: TCheckBox;

    spX: TSpinEdit;

    spY: TSpinEdit;

    Label1: TLabel;

    Label2: TLabel;

    btnOk: TBitBtn;

  private

    { Private declarations }

  public

    { Public declarations }

    function EditObject(AObject:TEasyGameBaseClass):integer; override;

  end;

 

 

Последнее обновление ( 19.12.2009 г. )