Найти тему

Программирование на Бейсике. Основные операторы графического режима

Оглавление

Итак, все, что мы до этого делали, все, что выводили на экран – все это происходило в текстовом режиме (SCREEN 0). Эту команду мы не писали, потому что экран по умолчанию работает именно в текстовом режиме.

Существует также несколько других режимов. Нам интересен 12-й режим, позволяющий создать разрешение экрана размером 640 точек (пикселей) по горизонтали и 480 точек по вертикали. Кратко можно говорить 640 на 480. Первая цифра всегда говорит о количестве точек по горизонтали, вторая – по вертикали.

В эпоху популярности Бейсика это было приличное разрешение. Сейчас мониторы имеют разрешение от 1366х768 до 3840х2160. Но – что есть, то есть. Изучая Бейсик, мы будем работать с разрешением 640х480 пикселей.

Кстати, это разрешение полного экрана, включая строку «Press any key to continue», появляющуюся при завершении программы. Поэтому если необходимо использовать всю высоту экрана для отображения чего-либо, реализуйте задержку выполнения или окончания программы с помощью ожидания нажатия любой клавиши.

Координатная сетка расположена таким образом: в левом верхнем углу координата (0,0), в правом нижнем – (639,479). Итого 640х480.

Чтобы переключить экран в графический режим, необходимо написать команду SCREEN 12. После этого станут активными команды для рисования:

  • PSET
  • LINE
  • CIRCLE
  • PAINT

В графическом режиме также, как и в текстовом, можно сразу задать цвет фона и переднего плана. Но можно указывать цвет непосредственно для каждой команды.

PSET – рисование точки

Для того, чтобы нарисовать точку (один пиксель), существует следующая команда:

PSET(x, y), c

где (x, y) – координата будущей точки, с – цвет. Если не указывать цвет, то точка нарисуется цветом по умолчанию (7) или указанной ранее командой COLOR.

LINE – рисование линии

Одна из самых часто используемых команд. Позволяет нарисовать линию от первой до второй координаты. В самом простом варианте записывается так:

LINE(x1, y1) – (x2, y2), c

где (x1, y1) – координата начала линии, (x2, y2) – координата конца линии, с – цвет (необязательный параметр).

Если команду LINE дополнить в конце буквой «B»:

LINE(x1, y1) – (x2, y2), c, B

то мы получим незакрашенный горизонтальный прямоугольник, верхний левый угол которого будет иметь координату (x1, y1), а нижний правый – координату (x2, y2). Обратите внимание: если не указываем цвет, то запятая, стоящая перед цветом, все равно должна остаться. То есть команда без цвета будет выглядеть так:

LINE(x1, y1) – (x2, y2), , B

Если же мы хотим, чтобы прямоугольник получился закрашенным, то необходимо вместо «В» добавить «BF»:

LINE(x1, y1) – (x2, y2), c, BF

CIRCLE – рисование окружности

Чтобы нарисовать окружность, необходимо выполнить команду

CIRCLE(x, y), R, c

где (x, y) – координата центра окружности, R – радиус, с – цвет (необязательно).

PAINT – заливка цветом

Если необходимо залить цветом какую-либо фигуру, то применяется команда

PAINT(x, y), c, b

где (x, y) – любая координата, находящаяся внутри контура фигуры, c – цвет заливки, b – цвет контура фигуры.

Давайте что-нибудь нарисуем. Например, диагональный крест на весь экран:

-2

Как видите, надпись «Press any key to continue», появляющаяся после завершения программы, немного «съела» картинку снизу. Чтобы этого не происходило, как мы уже писали выше, необходимо реализовать задержку выполнения программы (или ее окончания) с помощью ожидания нажатия любой клавиши (функция INKEY$).

Давайте нарисуем окружность в центре экрана и закрасим получившийся левый сектор круга желтым цветом:

-3

Для этого мы добавили две строки:

CIRCLE (320, 240), 100, 4
PAINT (300, 240), 14, 4

Обратите внимание на вторую строку, а именно на координаты. Как мы их получили? Все просто. У левого сектора самой правой точкой будет центр экрана с координатой (320, 240), а самой левой точкой будет 320-100 (потому что мы указали радиус 100 для окружности) = 220. Следовательно, по горизонтали можно брать любую точку от 221 до 319 (потому что мы должны указать координату внутри контура заливки). А по вертикали тут и думать нечего – просто сместили точку влево, взяв ту же 240. Получилось (221..319, 240) => (300, 240). Надеемся, ход мыслей вам понятен.

Еще один момент. Мы не случайно нарисовали окружность красным цветом, как линии. В результате мы получили границу закрашиваемого сектора одного цвета. И это правильно. Потому что для того, чтобы команда заливки сработала адекватно, необходимо, чтобы у контура все границы были одного цвета.

На этом все. Для закрепления этой темы рекомендуем выполнить все задания.

Комменты приветствуются, за палец вверх - отдельное спасибо. Удачи!

------------------------------

Список уроков Программирование на Бейсике для начинающих

Следующий урок Подпрограмма

Предыдущий урок Создание игры "Виселица"

------------------------------

Задания

1. Доделать рисунок из учебника до такого вида:

-4

2. Нарисовать с помощью двух команд (SCREEN 12 и задержку не учитываем) следующее:

-5

3. Нарисовать флаг Италии, Андреевский флаг, Норвегии, Чехии, Турции, Великобритании. Постараться выполнить каждый флаг минимально возможным количеством команд. Каждый флаг должен занимать полный экран. Смену флагов организовать нажатием клавиши [N] – «next».

4. Нарисовать солнце. Солнечный диск диаметром 100 пикс, все лучи длиной 50 пикс, расстояние солнечных лучей от солнечного диска 10 пикс:

-6

Рисунок выполнить с помощью расчетов, без подбора координат. Придумать, как реализовать одинаковую длину лучей и одинаковое расстояние между лучами и диском.

5. Создать графическое меню выбора одного из 9 любых флагов. Каждый флаг должен занимать 1/9 часть экрана. Текущий выбор должен быть чем-то обозначен. Например, рамкой вокруг выбранного флага. Первым должен быть выделен первый флаг:

-7

Перемещение между флагами должно осуществляться с помощью клавиши пробела. Перемещение должно осуществляться «по кругу»: 1-2-3-4-5-6-7-8-9-1-2-3-…

Предусмотреть вариант завершения программы с помощью нажатия клавиши [Q].

Наука
7 млн интересуются