 |
Как изучить язык 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 |
|
1.1 |
21.10.2009 |
В библиотеку была добавлена возможность сериализации
объектов. |
|