Квант

51

Рисует школьная ЭВМ

А. Г. ШЕГОЛЕВ

Со школьной ЭВМ, сабженной дисплеем, можно обшаться в диалоговом режиме по заранее предустретному сценарию (см., например, статьи В. А. Каймина в «Кванте», 1986, № 10, 11). При этом ЭВМ и ее пользователь обмениваются фрагментами текстов и числовыми данных. Между тем, большинство школьных микроЭВМ позволяет не только «печать», но и «рисовать» на экране, т. е. обладает графическими возможностями.

Для того чтобы на экране появилось изображение, мы должны указать исполнителю (школьной ЭВМ), где и что необходимо нарисовать. Поэтому прежде всего необходимо договориться о системе координат.

Приняята в микроЭВМ координатная система отличается от известной вам по школьному курсу математики. Начало координат (точка O) помещается в левом верхнем углу, а оси абсцисс и ordinate направлены так, как показано на рисунке 1. Поле экрана представляет собой множество точек, каждой из которых имеет определенный цвет, а координаты любой точки — целые числа x, y в пределах (для экрана ЭВМ «Ямаха») 0≤x≤255, 0≤y≤191.

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

  1. точка (x, y), цвет — изображить точку цвета цвет с координатами (x, y);
  2. отрезок от (x1, y1) до (x2, y2),

52

цв — начертить отрезок, соединяющий точки с координатами (x1, y1) и (x2, y2) цвета цв;
3) округн(x, y), r, цв — нарисовать окружность радиусом r с центром в точке (x, y) цвета цв;
4) дуза (x, y), r, om α до β, цв — нарисовать дуг окружности (x, y), r, цв от угла α до угла β (рис. 2);
5) закрасить (x, y), цв — закрасить цветом цв точку (x, y) вместе с окружностью в пределах заключенной эту точку замкнутой линии того же цвета (в качестве части этой линии может использоваться граница экрана); если же такого контур нет, закрасиется весь экран.
Оказывается, перечисленные команд в полне достаточно, чтобы изобразать довольно замыслованные фигуры. Например, изображение скрипичного клиона можно представить как совокупность отрезков и дуг разного радиуса, плавано переходящих друг в друга (рис. 3).
Для облегчения построения часто повторяющихся элементов введем еще две команды:
6) рамка от (x1, y1) до (x2, y2), цв — изобразить прямоугольную рамку со стороными, параллельными сторонам экрана, цветом цв; прямоугольник задается координатами двух диагональных вершин (x1, y1), (x2, y2) (рис. 4);
7) рамка-закраш от (x1, y1) до (x2, y2), цв — закрасить рамку 6) и ее внутреннюю область цветом цв.
Алгоритмы, написанные с использованием графических команд, могут быть переведены на любой язык программирования, имеющий соответствующее средства. Вот как выглядит запись операторов 1) — 7) на языке MSX-BASIC, принятом на ЭВМ «Ямаха».

  1. N PSET (X, Y), C (точка)
  2. N LINE (X1, Y1) — (X2, Y2), C (отрезок)
  3. N CIRCLE (X, Y), R, C (окружность)
  4. N CIRCLE (X, Y), R, C, A, B (дуга; углы A и B — в радиах)
  5. N PAINT (X, Y), C (закраска)
  6. N LINE(X1, Y1) — (X2, Y2), C, B (рамка)
  7. N LINE(X1, Y1) — (X2, Y2), C, BF (закрашенная рамка).
    Синним здесь выделены изменяющиеся элементы, в качестве которых могут использоваться числа (константы), а также имена переменных. N — номер (нумерция операторов в Бейсике обязаельна), C — целое число от 1 до 15, обозначающее цвет, который нужно закрасить данный объект:
    1 — черный, 6 — темно-красный,
    2 — средне-зелень, 7 — голубой,
    3 — светло-серый, 8 — средне-красный,
    4 — темно-голубой, 9 — светло-красный,
    5 — светло-голубой, 10 — темно-желтый,
    11 — светло-желтый,
    12 — темно-зелень,
    13 — розовый,
    14 — серый,
    15 — белый.
    Например, оператор Бейсика 20 PSET(50, 100), 6 приведет к появлению на экране темно-красной точки с координатами x=50, y=100.
    Кроме того, перевод ЭВМ в графический режим осуществляется по команде графика, что на Бейсике будет записано как SCREEN 2.
    Займется теперь изображением картины, помещенной в начале статы. Сценарий в этом случае — это рисунок, выполненный на бумаге. Вообще же графический сценарий представляет собой последовательность рисунков (сцен) и описание логики их через