Иллюстрированный самоучитель по Basic, вводный курс

Движущиеся изображения (операторы GET и PUT)

Простой способ "оживить" экран состоит в исполнении операторов get и put. Они позволяют "снять" изображение с части экрана и повторить его в другом месте. Это происходит очень быстро, поскольку исходная фигура не перерисовывается теми графическими операторами, которыми она вначале была создана, а просто дублируются все ее точки.

Представленная ниже программа рисует блоху, которая "скачет" по экрану, т. к. сначала оператор get сохраняет ее изображение, а затем оператор put копирует это изображение в любое заданное место экрана. Ощущение движения возникает из-за того, что перед каждым "прыжком" блохи ее старое изображение стирается.

CLS
SCREEN 9
COLOR 9, 1
REM Рисование блохи
DRAW "C2 L20 U20 R20 D20 F10 D10 R2"
DRAW "BM300.175 C2 G10 D10 L2"
DRAW "ВМ300Д55 С2 НЮ ЕЮ L2"
DRAW "BM320.155 C2 ЕЮ НЮ R2"
DRAW "ВМ310Д55 С2 U4"
DRAW "ВМ307.151 С2 RIO H6 G6"
PAINT (310, 170), 2, 2
BYTES = INT((55 *2+7)/8)*60
DIM BUG(BYTES)
GET (285, 135)-(340, 195), BUG
CLS
PUT (250, 80), BUG: SLEEP 1
PUT (250, 80), BUG: SLEEP 1
PUT (30, 60), BUG: SLEEP 1
PUT (30, 60), BUG: SLEEP 1
PUT (460, 130), BUG: SLEEP 1
PUT (460, 130), BUG: SLEEP 1
PUT (180, 70), BUG: SLEEP 1
PUT (180, 70), BUG: SLEEP 1
PUT (300, 70), BUG: SLEEP 1
END

Оператор GET

Прежде чем выполнить оператор get, нужно провести важную подготовительную работу: определить местоположение и размер той области экрана, которую вы хотите снять. Большую помощь в этом вам окажет предварительный набросок на миллиметровой бумаге, где каждый квадратик сопоставляется с точкой экрана.

Оператор get запоминает в массиве изображение заданной области экрана. Поэтому нужно заранее описать массив оператором dim. Существует формула, определяющая требуемую длину массива исходя из размеров запоминаемой области и режима работы экрана. Формула для средней разрешающей способности экрана такова:

INT ((число точек по горизонтали * 2 + 7) /8) * число точек по вертикали

Формула для высокой разрешающей способности экрана:

INT {(число точек по горизонтали + 7) /8) * число точек по вертикали

В строке программы, содержащей присваивание переменной bytes, подсчитывается длина массива, необходимая для изображения блохи при средней разрешающей способности. Рисунок занимает примерно 55 позиций по.горизонтали и 60 – по вертикали. Результат вычисления определяет длину массива bog в следующей строке.

Оператор:

GET (285, 135)-(340, 195), BUG

Переписывает в массив bug содержимое прямоугольной области экрана, левый верхний угол которой совпадает с точкой (285, 135), а правый нижний – с точкой (340, 195).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.