Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник Pascal ABC.doc
Скачиваний:
66
Добавлен:
07.11.2018
Размер:
985.6 Кб
Скачать

Описатели рисунков и класс Picture

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

Тем не менее, автор программы настоятельно рекомендует использовать именно класс Picture при работе с рисунками, что позволит ученику раньше начать осваивать основные понятия объектно-ориентированного программирования.

Класс Picture полностью написан на Pascal ABC и содержит в своем интерфейсе все подпрограммы работы с рисунками.

Пример работы с рисунком с использованием описателей.

uses GraphABC; var n: integer; begin   n:=LoadPicture('demo.bmp');   SetPictureTransparent(n,True);   DrawPicture(n,0,0);   DestroyPicture(n); end.

Эквивалентный пример работы с рисунком как объектом класса Picture выглядит более естественным:

uses GraphABC; var p: Picture; begin   p:=Picture.Create('demo.bmp');   p.Transparent:=True;   p.Draw(0,0);   p.Destroy; end.

Исполнитель Робот

Исполнитель Робот действует на прямоугольном клеточном поле. Между некоторыми клетками, а также по периметру поля находятся стены. Основная цель Робота – закрасить указанные клетки и переместиться в конечную клетку.

Исполнитель Робот и поле, на котором он работает, отображаются следующим образом:

Здесь большой желтый квадрат изображает Робота, маленький желтый квадрат в левом верхнем углу клетки - конечное положение Робота, черными точками помечены клетки, которые надо закрасить.

Команды исполнителя Робот содержатся в модуле Robot:

Right – перемещает Робота вправо; Left – перемещает Робота влево; Up – перемещает Робота вверх; Down – перемещает Робота вниз; Paint – закрашивает текущую ячейку; WallFromLeft – возвращает True если слева от Робота стена; WallFromRight – возвращает True если справа от Робота стена; WallFromUp – возвращает True если сверху от Робота стена; WallFromDown – возвращает True если снизу от Робота стена; FreeFromLeft – возвращает True если слева от Робота свободно; FreeFromRight – возвращает True если справа от Робота свободно; FreeFromUp – возвращает True если сверху от Робота свободно; FreeFromDown – возвращает True если снизу от Робота свободно; CellIsPainted – возвращает True если ячейка, в которой находится Робот, закрашена; CellIsFree – возвращает True если ячейка, в которой находится Робот, не закрашена.

Для вызова задания для исполнителя Робот используется следующий шаблон программы:

uses Robot; begin   Task('c1'); end.

Здесь Task - процедура, содержащаяся в модуле Robot и вызывающая задание с указанным именем.

Имеются следующие группы заданий для исполнителя Робот:

a – вводные задания; c – цикл с параметром; if – логические выражения; w – циклы с условием; сif – циклы + логические выражения; count – переменные-счетчики; cc – вложенные циклы; p – процедуры без параметров; pp – процедуры с параметрами.

Для создания произвольного поля размера 9 x 11 используется процедура StandardField без параметров, а для создания поля размера N x M - процедура Field(N,M). Робот при этом помещается в центр поля.