Массив всех графических объектов Objects

Массив всех графических объектов Objects

В модуле ABCObjects определен динамический массив Objects, который хранит все созданные графические объекты. Он принадлежит к типу ObjectsABCArray, определенному в ABCObjects. Для массива Objects определены всего 2 операции: Objects.Count возвращает количество графических объектов, а Objects[i] возвращает i-тый графический объект (типа ObjectABC, нумерация осуществляется с 0).

Использование массива Objects позволяет единообразно обращаться ко всем графическим объектам, вызывая для них любые методы и обращаясь к любым свойствам класса ObjectABC.

Пример 1. Броуновское движение объектов.

uses ABCObjects;

var i:integer;

begin

for i:=1 to 30 do

new CircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);

while True do

for i:=0 to Objects.Count-1 do

Objects[i].MoveOn(Random(3)-1,Random(3)-1);

end.

В этом примере создается 30 объектов CircleABC. Поскольку все они сохраняются в массиве Objects, при их создании результат вызова конструктора не присваивается никакой переменной. После создания все объекты начинают перемещаться в бесконечном цикле на случайный вектор, совершая броуновское движение.

Пример 2. Изменение свойств объектов заданного типа.

uses ABCObjects;

var i:integer;

begin

for i:=1 to 30 do

case Random(2) of

0: new CircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);

1: new RegularPolygonABC(Random(WindowWidth), Random(WindowHeight), 20, 3, clRandom);

end;

while True do

for i:=0 to Objects.Count-1 do

if Objects[i] is RegularPolygonABC then

RegularPolygonABC(Objects[i]).Angle := RegularPolygonABC(Objects[i]).Angle + 1;

end.

В этом примере создается 30 объектов CircleABC или RegularPolygonABC. Затем в бесконечном цикле вращаются только объекты RegularPolygonABC. Вращение достигается увеличением свойства Angle, которое определено только в классе RegularPolygonABC. Для установки принадлежности объекта к классу RegularPolygonABC используется операция is, после чего объект Objects[i] преобразуется к типу RegularPolygonABC при помощи операции приведения типа.

Пример 3. Удаление всех графических объектов, пересекшихся с объектом p:

for i:=Objects.Count-1 downto 0 do

if (Objects[i]<>p) and (p.Intersects(Objects[i]) then

Objects[i].Destroy;

В играх часто нужно удалить все графические объекты, которые настиг объект p. Для этого следует перебрать все графические объекты за исключением самого p и проверить их на предмет пересечения с p. Удаление осуществляется вызовом деструктора соответствующего объекта. Отметим также, что в результате удаления количество объектов уменьшается, поэтому следует перебирать объекты от конца к началу.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Вставка в веб-документ графических объектов

Из книги автора

Вставка в веб-документ графических объектов Поскольку в настоящее время большинство сайтов имеет те или иные графические объекты, возможности программы NeonHtml предусматривают не только вставку изображений в документ, но и максимальную автоматизацию данного процесса.


Вставка графических объектов

Из книги автора

Вставка графических объектов В данном разделе мы рассмотрим, каким образом в веб-документ можно вставить изображение, картинку или иной графический объект. Отметим, что возможности программы предусматривают вставку графических объектов тремя способами. Первый


1996 г.: война всех против всех

Из книги автора

1996 г.: война всех против всех Избрание Билла Клинтона не повернуло вспять волну дерегулирования. Ему пришлось согласиться, что «эпоха большого правительства» закончена — мнение, которое относилось как к режиму вмешательства властей в экономику, так и к концепции


Просмотр всех объектов базы данных с помощью хранимой процедуры sp_help

Из книги автора

Просмотр всех объектов базы данных с помощью хранимой процедуры sp_help SQL Server позволяет просмотреть все объекты, доступные в любой базе данных. Это можно сделать с помощью хранимой процедуры (stored procedure) – небольшого кода, хранящегося и выполняемого на сервере. Просмотреть


Прямоугольный массив

Из книги автора

Прямоугольный массив Для создания прямоугольного массива установите переключатель в окне Array (Массив) в положение Rectangular Array (Прямоугольный массив). При этом станут доступны следующие параметры.• Для изменения количества строк и столбцов используют поля Rows (Строки) и


IB Objects

Из книги автора

IB Objects Этот продукт объединяет две давно известные системы компонентов для Firebird и InterBase, которые позволяют разработчикам использовать инструменты Borland IDE (Delphi, Kylix, и Borland C++ Builder) для реализации всех возможностей Firebird. Одна система совместима с библиотеками Borland TDataset и


Массив компонентов…

Из книги автора

Массив компонентов… Возможно ли создание массива компонентов? Для показа статуса я использую набор LED-компонентов и хотел бы иметь к ним доступ, используя массив.Прежде всего необходимо объявить массив:LED: array[1..10] of TLed;      (10 элементов компонентного типа TLed)При


Полярный массив

Из книги автора

Полярный массив Для создания полярного массива установите переключатель в окне Array (Массив) в положение Polar Array (Полярный массив) (рис. 6.11). Рис. 6.11. Окно создания полярного массиваПри этом становятся доступны следующие параметры.• Поля X и Y служат для указания центра


Трехмерный массив

Из книги автора

Трехмерный массив Для создания трехмерного массива используется команда 3DARRAY. Как и на плоскости, в трехмерном пространстве можно создать два типа массива – прямоугольный и круговой. Только при формировании прямоугольного массива в качестве дополнительного параметра


Прямоугольный массив

Из книги автора

Прямоугольный массив В трехмерном пространстве, кроме строк и столбцов, в прямоугольном массиве добавляются еще и уровни.Чтобы создать трехмерный прямоугольный массив, нажмите кнопку 3D Array (Трехмерный массив) на вкладке Home (Основная) в группе Modify (Редактирование) ленты


Круговой массив

Из книги автора

Круговой массив Чтобы создать круговой трехмерный массив, нажмите кнопку 3D Array (Трехмерный массив) на вкладке Home (Основная) в группе Modify (Редактирование) ленты или выполните команду Modify ? 3D Operations ? 3D Array (Редактирование ? Трехмерные операции ? Трехмерный массив).Пример


Ускорение перерисовки графических объектов

Из книги автора

Ускорение перерисовки графических объектов Для обеспечения быстрой перерисовки используется следующий прием: в начале программы вызывается LockDrawingObjects, а при необходимости перерисовать весь экран – специальная процедура RedrawObjects. Отключается режим вызовом


ABCObjects: контейнеры графических объектов

Из книги автора

ABCObjects: контейнеры графических объектов Класс ContainerABC представляет собой контейнер графических объектов. Он также является потомком ObjectABC, но при создании не содержит ни одного объекта. Он добавляет следующий интерфейс: procedure Add(g: ObjectABC); property Count: integer; // количество


Smarter Objects: виртуальное взаимодействие с реальными объектами Николай Маслухин

Из книги автора

Smarter Objects: виртуальное взаимодействие с реальными объектами Николай Маслухин Опубликовано 07 мая 2013 Медиалаборатория Массачусетского технологического института (MIT Media Lab) представила новую технологию взаимодействия с физическими объектами на


Урок 5.8. Вставка графических объектов в документ

Из книги автора

Урок 5.8. Вставка графических объектов в документ Кроме автофигур в документы Word 2007 можно вставлять и другие графические объекты: рисунки из файлов, картинки из коллекции, диаграммы, фигурный текст, формулы и т. д. Особенности работы с этими объектами мы рассмотрим в этом