.
История изменений библиотеки Easy Game Library
Автор megabax   
04.11.2009 г.

Как изучить язык C# с нуля?

Как заложить теоретический
и практический фундамент
профессионального .NET-программиста?

История изменений библиотеки PASSBaseObj

История изменений библиотеки Easy Game Library

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

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

Описание последней версии библиотеки находиться здесь.

Версия Дата выхода Изменения
  10.07.2011

Принято решение о прекращении разработки библиотеки. С этого момента  то, что уже написано, будет переписываться на C#. О выходе первых версий Easy Game Library для C# будет сообщено дополнительно.

2.3. 31.08.2010

У класса TEGDoor реализованы методы GetDescription и GetClassCaption. Реализована возможность сериализации объекта TEGDoor. У класса TEGObject исправлена ошибка в методе MakeQuantumOfTime, в результате которой отрабатывались неактивные задачи. У классов TfrmWallParameters и TfrmWallParametersAdd исправлен метод EditObject - теперь он возвращает результат закрытия формы: на какую кнопку нажал пользователь на OK или Cancel. У класса TEGObject появились события AfterAction и BeforeAction, а так же добавлен метод ClearTasks. У класса TEGUnit появился конструктор, инициализирующий начальное значение скоростей по осям X и Y, равным нулю. Кроме того, к классу TEGUnit  добавлен метод LookRound - осмотреться. Эта функция, возвращающая список объектов, найденных в радиусе осмотра, а так же метод Look - смотреть - возвращает список объектов по направлению осмотра на расстоянии радиуса взгляда, если их не закрывает непрозрачный объект. Поэтому к классу TEGObject еще добавлен метод IsTransparent - прозрачность. В класс TEGObjectsCollection добавлен метод AddOfCollection - добавить объекты из другой коллекции.

Добавлены классы:

  • TfrmDoorForm - форма редактирования параметров двери.
  • TfrmParsOfWall - форма редактирования параметров стены.
  • TEGPoint - класс реализующий точку с координатами X, Y. Имеет два конструктора, по заданным координатам и другой точке.
  • TEGDevice - устройство. Заготовка класса. Предок от TEGPartOfObject. От него будут объявляется классы устройств, например: замок, автоматика закрывания открывания двери, ключ, лазерная пушка.
  • TEGAutoDoorCloser - автоматический закрыватель дверей.
  • TEGColorField - цветной квадратик на карте.
2.2 07.06.2010

В класс TEGBitmaps добавлен метод GetNotUsedBitmaps, который возвращает коллекцию TEEBitmapsCollection, содержащую указатели только на объекты, имеющие свойство IsUse равное false. У класса TEGAction добавлено свойство Initiator - объект, инициировавший действие. В класс TEGWall добавлены методы IsPissibleEnter, DoorState. Кроме того, добавлены вспомогательные защищенные функции для рисования дверей. В класс TEGWallPartsContainer добавлен метод FindPartsByLocation - поиск по расположению. В класс TEGPartOfWall добавлено свойство WallLocation.  В классе TEGWall исправлена ошибка, в результате которой юнит мог проходить сквозь горизонтальную стену двигаясь параллельно оси X. Так же исправлена ошибка, из которой юнит мог застревать у углу.

Добавлены классы:

  • TEGStoredCollection - сохраняемая коллекция, предок всех типизированных коллекций объектов, в том числе TEGBitmaps . Часть методов из TEGBitmaps  перенесена в TEGStoredCollection .
  • TEGBitmapsCollection - коллекция объектов TEGBitmap. В отличии от TEGBitmaps хранит не сами объекты а лишь указатели на них. Используется для возврата результатов поиска.
  • TEGAbstractDoor - класс предок всех дверей.
  • TEGDoor - дверь: часть стены, позволяющая проходить сквозь нее (предок от TEGPartOfWall).
2.1 29.04.2010

В класс TEGBaseClass добавлен метод IsChildOf, который проверяет, является ли данный класс дочерним или им самим от заданного. Добавлена возможность назначить объекту задачу (AddTask) и удалить из объекта задачу (DeleteTask). У класса TEGUnit реализован метод IsCollsion. В класс TEGEvent добавлен признак, что объекты прореагировали на событие, свойство IsBeenReaction. В класс TEGUnit добавлен абстрактный метод ChooseReactionOfCollision - выбор реакции на столкновение с другим юнитом. В класс TEGBitmap добавлены свойства BigBitmap, BigBitmapLoaded, BigBitmapPath предназначенные для манипулирования большой картинкой. Ее можно хранить как внутри объекта так и во внешнем файле.

Добавлены классы:

  • TEGTask - задача, которую выполняет объект. Например: идти, осмотреться, драться, искать.
  • TEGRandomWalk - задача: случайное блуждание.
  • TEGPredator - юнит типа "хищник". При столкновении с другими юнитами "съедает" их.
  • TEGEat - действие "съесть"
  • TEGBitmaps - контейнер картинок.
  • TfrmEGBitmapForm - форма редактирования для объекта класса TEGBitmap.
2.0 25.03.2010

В названиях классов префикс EasyGame заменен на EG.  Метод GetVersion оставлен только у класса TEGBaseClass. Остальные классы наследуют этот метод от него. Переопределять GetVersion  категорически не рекомендуется! В класс TEGEvent добавлено свойство Age, которое показывает, сколько квантов времени прошло с момента инициации события. Исправлены ошибки, в результате которых юнит не мог "пролезть" сквозь дырку в стене и иногда "прилипал" к стене.

1.5 24.02.2010

В класс TEasyGamePlatform добавлены методы BeforeMakeQuantumOfTime и AfterMakeQuantumOfTime. В данном классе представляют просто заглушки, предназначены для переопределения в дочерних классах. В класс TEasyGameLocationObject добавлена функция IsMobile которая возвращает true если данный объект может двигаться. Если возможность двигаться у дочернего объекта отличается от его родителя, IsMobile  первого должен быть переопределен.  В класс TEasyGameCollection и его потомки добавлен метод IsMap, который возвращает true, если данная коллекция является игровой картой. В класс TEasyGameMap добавлен метод FindObjectsAsCoordPrecision. В класс TEasyGameObject добавлен обработчик кванта времени, в котором прописано реагирование на события игры. В класс  TEasyGameAction добавлен абстрактный метод GetActionName. Метод Action класса TEasyGameObject больше не абстрактный, но в этот класс добавлен новый абстрактный метод AcceptAction. В класс TEasyGameLocationObject  добавлен абстрактный метод метод IsCollision, который определяет, сталкивается ли с ним объект с заданными координатами и скоростью. Этот метод реализован у класса TEasyGameWall (стена). В класс TEasyGameLocationObject добавлен абстрактный метод GetStopVector, которые проверяют по вектору скорости, в каком направлении данный объект останавливает подвижный объект. Реализован у класса TEasyGameWall (стена). В класс TEasyGameUnit добавлен метод GetVAsVector. Исправлена ошибка в методе SetY класса TEasyGameUnit и в методе SetMaxY класса TEasyGameMap.

Добавлены классы

  • TEasyGameObjectsCollection - коллекция объектов типа TEasyGameObject.
  • TEasyGameEvent - класс, предназначен для обработки игровых событий, например: два юнита оказались в одной локации, юнит столкнулся со стеной и т. д.

  • TEasyGameCollisionEvent - столкновения игровых объектов.
  • TEasyGameStopAction - действие остановки, один объект останавливает другой.
  • TEGVector - класс вектора с неограниченным числом координат. Сериализация данного класса пока не поддерживается.
  • TEasyGameEventsUnit - расширение класса TEasyGameUnit - при столкновении со стеной генерит событие TEasyGameCollisionEvent
 
1.4. 14.01.2010

В класс TEasyGameDrawMapObject добавлено свойство Bitmap. В класс TEasyGameBaseClass добавлено защищенное поле FParent. В класс TEasyGameBaseClass добавлено свойство ID. Оно присваивается экземпляру данного класса при добавлении в контейнер. В контейнер теперь можно добавлять не только объекты TEasyGameObject и его потомки, но так же еще и TEasyGameNoun. В класс TEasyGameUnit добавлено свойство UnitDrawMode - режим перерисовки юнита: udrQuantumOfTime - при каждом новом кванте времени (в этом случае он будет двигаться по экрану плавно) и udrNewLocation - только при перемещению в новую локацию (будет двигаться рывками, но реже перерисовываться).

Добавлены классы

  • TEasyGameCollection- класс для работы с коллекцией объектов. Классы TEasyGamePointerCollection и TEasyGameContainer теперь наследуются от него. По отношению к ни у этого класса добавляется новый метод FindObject, который находит объект по ссылке на него и возвращает индекс объекта в коллекции.

  • TEasyGameBitmap - класс для хранения битовой карты TBitmap. Этот отдельный класс нужен потому что в будущем планируется создать сериализуемое хранилище картинок, на которые будут ссылаться другие объекты библиотеки Easy game.

1.3 17.12.2009

В класс TEasyGameAxesSystem добавлены новые методы ScreenToAxesX и ScreenToAxesY, которые производят действие, обратное функциям GetX и GetY - по координатам на экране определяют координаты в координатной плоскости, заданной объектом TEasyGameAxesSystem. В базовый класс и его потомки добавлена функция GetClassCaption, которая возвращает русский перевод имени класса в формате, понятному пользователю. В класс TEasyGameMap добавлены метод FindObjectsAsCoord, FindObjectsAsCoordAndClassName - список объектов в заданной координатной позиции, последний еще и по заданному классу. Для класса TEasyGameObject и его потомков появилась функция GetDescription, предназначенная для генерации описания объекта.

Добавлены классы:

  • TEasyGameDrawMapObject - объект, рисующийся на карте. Класса в новой версии теперь является дочерним по отношению к нему, а не к TEasyGameLocationObject.
  • TEasyGameUnit - класс юнита, подвижного игрового объекта.
  • TEasyGamePointerCollection - класс коллекция игровых объектов базового класса. В отличии от контейнера, он содержит только ссылки на эти объекты.
  • TEasyGameLocationObjectsCollection - коллекция локационных игровых объектов. В отличии от контейнера, он содержит только ссылки на эти объекты.
  • TEasyGameObjectEditForm (в модуле EaseGameForms) - абстрактный класс предок форм редактирования объектов
1.2 04.11.2009
  • В контейнер (TEasyGameContainer) добавлена возможность очитки контейнера. При загрузке контейнера из потока он сначала очищается, затем в него грузятся данные. Так же у контейнера появился деструктор. 

  • Исправлена ошибка в методе TEasyGamePlatform.MakeQuantumOfTime, из за которой происходило неверное приращение игрового времени при исполнении очередного такта.
  • Добавлены классы TEasyGameAxesSystem, TEasyGamePartOfObject, TEasyGamePartOfWall, TEasyGameWall, TEasyGameWallPartsContainer.
  • Для класса TEasyGameMap (карта) реализована возможность отображения на экране через типовой класса TImage.
  • Метод GetVersion, а так же конструктор Create начиная с базового класса TEasyGameBaseClass стали виртуальными.
1.1 21.10.2009 В библиотеку была добавлена возможность сериализации объектов.
Последнее обновление ( 10.07.2011 г. )