W Cat - Описание языка PascalABC.NET

Тут можно читать онлайн W Cat - Описание языка PascalABC.NET - бесплатно полную версию книги (целиком) без сокращений. Жанр: Детская образовательная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

W Cat - Описание языка PascalABC.NET краткое содержание

Описание языка PascalABC.NET - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru


PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.


PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.


PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.

Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)

Описание языка PascalABC.NET - читать книгу онлайн бесплатно, автор W Cat
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

p := newMultiPictureABC(50,50,100,'multipic.gif');

Третий параметр здесь указывает ширину одного кадра.

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

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

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

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

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

usesABCObjects;

vari:integer;

begin

fori:=1 to30 do

newCircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);

whileTrue do

fori:=0 toObjects.Count-1 do

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

end.

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

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

usesABCObjects;

vari:integer;

begin

fori:=1 to30 do

caseRandom(2) of

0: newCircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);

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

end;

whileTrue do

fori:=0 toObjects.Count-1 do

ifObjects[i] isRegularPolygonABC then

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

end.

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

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

fori:=Objects.Count-1 downto0 do

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

Objects[i].Destroy;

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

Переменные, процедуры и функции модуля ABCObjects

procedureLockDrawingObjects;

Блокирует рисование графических объектов. Возможна лишь перерисовка всего экрана вместе со всеми графическими объектами на нем вызовом RedrawObjects

procedureUnLockDrawingObjects;

Разблокирует рисование графических объектов

procedureRedrawObjects;

Перерисовывает все графическое окно вместе со всеми графическими объектами на нем

procedureToFront(g: ObjectABC);

Переносит графический объект g на передний план

procedureToBack(g: ObjectABC);

Переносит графический объект g на задний план

functionObjectsCount: integer;

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

functionObjectUnderPoint(x,y: integer): ObjectABC;

Графический объект под точкой (x, y)

functionObjectUnderPoint(p: Point): ObjectABC;

Графический объект под точкой p

procedureSwapPositions(o1,o2: ObjectABC);

Поменять позиции графических объектов o1 и o2

functionUIElementUnderPoint(x,y: integer): UIElementABC;

Элемент управления ABCObject под точкой (x, y)

varObjects: ObjectsABCArray;

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

UIElementABC

Класс элемента управления ABCObject

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

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

При наличии большого количества объектов, каждый из которых движется, такой прием может ощутимо ускорить анимацию. Причина здесь кроется в следующем: по умолчанию при каждом движении объекта он перерисовывается в своем прямоугольнике, при этом в этом прямоугольнике перерисовываются все объекты. Если в графическом окне 100 объектов, и каждый из них переместился, то происходит 100*100=10000 перерисовок объектов. После вызова LockDrawingObjects перерисовки не происходит, а в результате вызова RedrawObjects каждый объект прорисовывается только один раз, то есть происходит всего 100 перерисовок объектов.

Следует обратить внимание, что в модуле GraphABC имеются родственные процедуры LockDrawing, UnLockDrawing, и Redraw. Однако, они отвечают за растровую перерисовку без мерцания , в то время как процедуры LockDrawingObjects, UnLockDrawingObjects, и RedrawObjects отвечают только за ускорение перерисовки векторной графики ABCObjects (отсутствие мерцания векторных объектов при их изменении обеспечивается автоматически).

Совмещение графического вывода модулей ABCObjects и GraphABC

Использование объектов ABCObjects можно совмещать с выводом в графическое окно с помощью процедур рисования модуля GraphABC. При этом, все объекты ABCObjects располагаются поверх изображения, нарисованного в графическом окне вызовом процедур рисования модуля GraphABC. Это можно использовать, например, для задания фоновой картинки, на которой затем можно размещать объекты ABCObjects:

FillWindow('aqua.jpg');

c := newCircleABC(100,100,50,clGreen);

RectangleABC(300,300,100,50,clBlue);

Следует иметь в виду, что прорисовка при изменении свойств объектов ABCObjects происходит корректно, но если рисовать вызовом процедур модуля GraphABC, то графические объекты ABCObjects будут затираться. Для восстановления картинки следует либо передвинуть объекты ABCObjects, либо вызвать процедуру RedrawObjects, перерисовывающую все графическое окно.

Модуль ABCSprites

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Описание языка PascalABC.NET отзывы


Отзывы читателей о книге Описание языка PascalABC.NET, автор: W Cat. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x