Программирование - это просто
Advertisement
Главная arrow Исходники arrow Описания библиотек arrow Описание классов библиотеки «Easy game base library version 2.2»
16.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Описание классов библиотеки «Easy game base library version 2.2» Печать E-mail
Автор megabax   
07.06.2010 г.
Скачать библиотеку можно здесь

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

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

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

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

 

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

 

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

 

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

Начиная с версии 1.4 содержит свойство ID – идентификатор объекта, который присваивается при добавлении его в контейнер.

 

Класс TEGVector. Класс вектор с неограниченным количеством координат. Сериализация объекта пока не реализована. Из функционала пока реализована только поддержка обращения к координате по индексу. 

 

Класс TEGBitmap. Хранилище битовой карты. Хранит маленькую и большую картинку. При чем в качетсве большой картинки может хранить как саму битовую карту, так и просто ссылку на файл и загружать ее только при обращении к свойству BitBigmap. Начиная с версии 2.1 предусмотрена сериализация объекта.

 

Класс TEGCollection. Предок все коллекций и контейнеров. Содержит методы поиска, добавления и удаления.  Так же есть метод IsMap, который проверяет, является ли данная коллекция картой. Для новых классов этот метод требует переопределения, если его признак «Карта» отличается от родительского.  

 

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

 

Класс TEGLocationObjectsCollection дочерний от TEGPointerCollection. Это коллекция указателей на объекты класса TEGLocationObject или его потомков. В отличии от TEGBaseClass предназначен для хранения именно указателей, а не самих объектов.

 

Класс TEGEvent. Абстрактный класс игрового события. Содержит список участников события, имеет метод Reaction (абстрактный), который предназначен для реализации реакции объектов-участников события на событие. Имеет поле Age, которое увеличивается на единицу после каждого такта.

 

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

 

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

 

Класс TEGContainer. Предназначен для управления списком объектов. Имеет метод AddGameObject – добавление объекта в список. Метод MakeQuantumOfTime передает квант времени всем хранящимся в нем объектам. Данный класс является родителем для класса «Карта» (TEGMap) и «Платформа игры»  (TEGPlatform).  В отличии от TEGPointerCollection и TEGLocationObjectsCollection хранит именно сами объекты, которые физически удаляются из памяти при вызове деструктора этого класса, либо при удалении методом Delete.

 

Класс TEGStoredCollection. Сохраняемая коллекция, предок всех типизированных коллекций объектов, в том числе TEGBitmaps

 

Класс TEGBitmapsCollection - коллекция объектов TEGBitmap. В отличии от TEGBitmaps хранит не сами объекты а лишь указатели на них. Используется для возврата результатов поиска.

 

Класс TEGBitmaps. Хранит список объектов TEGBitmap. Предусмотрена сериализация и поиск по уникальному идентификатору - метод GetBitmapById.

 

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

 

Класс TEGAction.  Заготовка для класса «Действие». Содержит метод GetActionName, который возвращает наименование действия. Содержит ссылку на инициатора действия (поле FInitiator). Для одного и того же действия могу быть несколько классов потомков TEGAction, но со своими особенностями, в зависимости от того, какой из объектов генерирует действие. При этом предполагается, что:

·         Каждый объект умеет принимать действие.

·         После принятие действия может возникнуть либо событие, либо объект инициирует ответное действие (но уже в следующем кванте времени).

 

 

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

 

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

 

Класс TEGTask. Базовый класс задачи. Задача может быть активной – тоесть, она выполняется, это задается свойством Active. Для проверки, можно ли применить задачу к данному объекту используется метод IsCanExec.

 

Класс TEGLocationObject. В отличии от просто объекта привязан к карте, имеет координаты. Так же имеет метод DrawWithMap для его прорисовки на карте. Содержит абстрактный метод IsCollision, предназначенный для проверки коллизии (столкновения) с другим объектами. Для проверки, является ли данный объект подвижным или статичным, предназначен метод IsMobile. По умолчанию он возвращает false и требует переопределения у дочерних классов, если их признак подвижности (статичности) отличается от родительского. Содержит абстрактный метод GetStopVector, который определяет останавливающий вектор для события стоп. Предполагается, что для направления остановки значения вектора 0, для направления, в котором нет препятствий движению единица.  Вектор остановки предполагает два направления – по горизонтали и вертикали. Объект, получивший вектор остановки, должен сам обрабатывать его. Он может, например, остановится в направлении остановки или отразиться от препятствия. В будущем планируется расширить значения векторов остановки, ввести, например, понятие частичной остановки (значении больше 0 но меньше 1).  В настоящее время методы IsCollision и GetStopVector реализованы у класса TEGWall (стена), а реакция на коллизию реализована у потомка TEGUnit – класса TEGEventsUnit.

 

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

 

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

 

Класса TEGDrawMapObject. Класс объекта, который может быть нарисован на карте. Дочерний от TEGLocationObject. Имеет свойство Bitmap:TEGBitmap -  ссылка на картинку в виде битовой карты, которая может отобразиться на карте как обозначение объекта.

 

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

·         udrQuantumOfTime - при каждом новом кванте времени (в этом случае он будет двигаться по экрану плавно).

·         udrNewLocation - только при перемещению в новую локацию (будет двигаться рывками, но реже перерисовываться).

Начиная с версии 1.5 имеет метод GetVAsVector – получить скорость юнита как вектор.

 

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

 

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

 

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

 

Класс TEGAbstractDoor. Заготовка для класса двери. Содержит свойство Closed (Если оно равно true, значит дверь закрыта).  Так как дверь является частью стены, то TEGAbstractDoor потомок класса TEGPartOfWall.

 

 

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

 

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

 

 

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

 

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

 

  TfrmWallParameters = class(TEGObjectEditForm)

    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:TEGBaseClass):integer; override;

  end;

 

Модуль EasyGameActions-  базовые игровые действия

 

Класс TEGStopAction. Действие «остановка».  Имеет свойство StopVector:TEGVector. Предназначено для остановки объектов. Предполагается, что

·         Юнит сам проверяет себя на столкновение с другими объектами.

·         При этом создается событие, которое "знает", как объекты должны реагировать друг на друга.

·         Событие хранит объект инициатор события.

 

Класс TEGEat.  Действие «съесть». Юнит типа «хищник» (класс TEGPredator и его потомки) может съесть юнита не «хищник».

 

Модуль EasyGameEvents -  базовые игровые события и объекты, реагирующие на них

 

Класс TEGCollisionEvent. Событие столкновения. Возникает, когда в одной локации пересекаются два и более объектов. Генерация события реализована для пары  классов TEGEventsUnit и TEGWall – иными словами, когда юнит натыкается на стену.

Класс TEGEventsUnit. Класс юнита, который умеет останавливаться, натыкаясь на стену. Имеет метод Stop – остановка по вектору остановки.

 

Модуль EasyGameTasks -  базовые игровые задачи.

 

Класс TEGRandomWalk. Задача «случайное блуждаение». Данная задача вешается на юнита, и он передвигается по карте случайнм образом. Можно задать макисмальный шаг скорости: свойство Delta.

 

Модуль EasyGameUnits – базовые игровые юниты

 

Класс TEGPredator. Юнит – хищник. При столкновении с другим юнитом при помощи метода ChooseReactionOfCollision определяет, можно ли его съесть, и если да то съедает. В данной версии есть если столкнувшийся с ним юнит не хищник.

 

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

 

Класс TfrmEGBitmapForm. Класс формы редактирования  объекта TEGBitmap. Является потомком класса TEGObjectEditForm, поэтому для вызова диалога редактирования используйте метод EditObject.

 

Модуль EasyGameParts – составные части объектов.

 

Класс TEGDoor. Реализует дверь. Является частью стены. Может быть открыта и закрыта. Если открыта, то в этом направлении можно пройти через стену. Если закрыта – то нельзя. Потомок класса TEGAbstractDoor. Для регулирования открытости и закрытости предусмотрено свойство Close.

  TfrmWallParameters = class(TEGObjectEditForm)

    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:TEGBaseClass):integer; override;

  end;

 

Модуль EasyGameActions-  базовые игровые действия

 

Класс TEGStopAction. Действие «остановка».  Имеет свойство StopVector:TEGVector. Предназначено для остановки объектов. Предполагается, что

·        Юнит сам проверяет себя на столкновение с другими объектами.

·        При этом создается событие, которое "знает", как объекты должны реагировать друг на друга.

·        Событие хранит объект инициатор события.

 

 

 

Модуль EasyGameEvents -  базовые игровые события и объекты, реагирующие на них

 

Класс TEGCollisionEvent. Событие столкновения. Возникает, когда в одной локации пересекаются два и более объектов. Генерация события реализована для пары  классов TEGEventsUnit и TEGWall – иными словами, когда юнит натыкается на стену.

Класс TEGWall. Класс юнита, который умеет останавливаться, натыкаясь на стену. Имеет метод Stop – остановка по вектору остановки.

 

Последнее обновление ( 07.06.2010 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги