- •Содержание
- •Введение
- •1. Общие сведения
- •2. Основные элементы языка Бейсик
- •2.1. Алфавит.
- •2.2. Типы данных.
- •2.3. Стандартные функции языка Бейсик
- •2.4. Арифметическое выражение
- •3. Управляющие операторы языка Бейсик
- •3.1. Оператор присваивания
- •3.2. Операторы ввода/вывода данных
- •4. Операторы управления
- •4.1. Программирование разветвлений
- •4.1.1. Логические выражения и выражения отношения
- •4.1.2. Оператор if-then-else-условный оператор
- •4.1.3. Оператор select case
- •4.2. Программирование циклов
- •4.2.1. Операторы организации циклов for-next
- •4.2.2. Оператор while-wend-итерационный цикл 1
- •4.2.3. Оператор do-while (until) lоор-итерационный цикл 2
- •4.3. Процедуры и функции
- •5. Описание и обработка массивов
- •5.1. Оператор размерности массива dimension
- •5.2. Сортировка массивов
- •5.2.1. Сортировка методом пузырька
- •5.2.2. Сортировка массива с помощью оператора обмена swap
- •5.2.3. Другие методы сортировки
- •6. Строковые выражения и функции
- •7. Файлы данных
- •8. Работа с графикой
- •Литература
8. Работа с графикой
Программные средства языка Бейсик позволяют работать не только с текстовой, но и с графической информацией. Это обеспечивается языком графики, псевдографическими символами, набором операторов и функций. Работа с графической информацией требует графических дисплеев.
Цветные графические дисплеи позволяют полностью реализовать все программные графические возможности, заложенные в языке Бейсик.
Операторы и функции, используемые при работе с графикой
Номер п/п |
Оператор или функция |
Назначение |
1. Операторы |
||
1 |
CIRCLE |
Построить эллипс (окружность) |
2 |
COLOR |
Выбрать цвет |
3 |
DRAW |
Изобразить сложную фигуру (объект) |
4 |
GET |
Передать изображение в массив |
5 |
LINE |
Начертить линию (отрезок) |
6 |
PAINT |
Окрасить фигуру (объект) |
7 |
PSET |
Изобразить точку |
8 |
PRESET |
Убрать свечение точки |
9 |
PUT |
Передать изображение из массива на экран дисплея |
10 |
SCREEN |
Установить режим работы дисплея |
11 |
VIEW |
Установить на экране "окно" |
12 |
WINDOW |
Установить систему координат "окна" |
2. Функции |
||
13 |
PMAP |
Определить одну координату точки |
14 |
POINT |
Определить две координаты точки или ее цвет |
15 |
SCREEN |
Определить атрибуты в заданной позиции активной страницы буфера экрана |
Элементарным изобразительным средством графического экрана является черно-белая или цветная точка разной степени свечения. Местоположение всех точек на экране образуют прямоугольную систему координат из горизонтальных строк (х) и вертикальных колонок (у). Количество точек, которое может быть размещено на экране, зависит от разрешающей способности (средней или высокой). При средней разрешающей способности горизонтальная строка содержит 320 точек, вертикальная - 200 точек. При высокой разрешающей способности горизонтальная строка содержит 640 точек, вертикальная - 200. Разрешающая способность устанавливается оператором SCREEN.
Оператор SCREEN устанавливает режим и параметры работы дисплея,
Формат записи оператора SCREEN:
SCREEN [,[цветное- изображение], [активная-страница]
[, отображаемая-страница]]
Ниже приведены примеры записи оператора SCREEN
SCREEN 1,1 средняя разрешающая способность; ширина текстовой строки 40 колонок:
SCREEN 2 средняя разрешающая способность; ширина текстовой строки 80 колонок.
Чтобы перейти от графического режима к текстовому, следует выбрать оператор:
SCREEN 0,0,0
Отметим, что перед этим оператором может потребоваться еще один дополнительный оператор SCREEN 2, если в текстовом режиме была установлена ширина строки 80.
Можно переход к текстовому режиму выполнить с клавиатуры, нажав функциональную клавишу F10.
Палитры цветов для переднего плана
Изображение |
Номер цвета |
Палитра 0 |
Палитра 1 |
|
0 |
Цвет фона |
Цвет фона |
Цветное |
1 |
Зеленый |
Голубой |
|
2 |
Красный |
Пурпурный |
|
3 |
Коричневый |
Белый |
Черно- |
0 |
Черный |
|
белое |
1 |
Белый |
|
|
2 |
Черный |
|
|
3 |
Белый |
После оператора SCREEN используется оператор COLOR, который позволяет выбрать фон и палитру цветов для переднего плана. Имеются две палитры цветов: 0 и 1. Каждая палитра содержит три цвета.
Формат записи оператора COLOR:
COLOR [фон] [, палитра- цветов- переднего- плана]
Для цветного изображения фон выбирается из таблицы (значение от 0 до 15). Следует заметить, что фон всегда совпадает с окаймлением в графическом режиме.
Цвета, используемые при цветном графическом и текстовом режимах
Номер цвета |
Передний план |
Окаймление |
Фон |
0 |
Черный |
Черный |
Черный |
1 |
Синий |
Синий |
Синий |
2 |
Зеленый |
Зеленый |
Зеленый |
3 |
Голубой |
Голубой |
Голубой |
4 |
Красный |
Красный |
Красный |
5 |
Пурпурный |
Пурпурный |
Пурпурный |
6 |
Коричневый |
Коричневый |
Коричневый |
7 |
Белый |
Белый |
Белый |
8 |
Серый |
Серый |
|
9 |
Светло-синий |
Светло-синий |
|
10 |
Светло-зеленый |
Светло - зеленый |
|
11 |
Светло-голубой |
Светло-голубой |
|
12 |
Розовый |
Розовый |
|
13 |
Светло - пурпурный |
Светло - пурпурный |
|
14 |
Желтый |
Желтый |
|
15 |
Белый насыщенный |
Белый насыщенный |
|
16 |
Черный мерцающий |
|
|
17 |
Синий мерцающий |
|
|
18 |
Зеленый мерцающий |
|
|
19 |
Голубой мерцающий |
|
|
20 |
Красный мерцающий |
|
|
21 |
Пурпурный мерцающий |
|
|
22 |
Коричневый мерцающий |
|
|
23 |
Белый мерцающий |
|
|
24 |
Серый мерцающий |
|
|
25 |
Светло-синий мерцающий |
|
|
26 |
Светло - зеленый мерцающий |
|
|
27 |
Светло-голубой мерцающий |
|
|
28 |
Розовый мерцающий |
|
|
29 |
Светло-пурпурный мерцающий |
|
|
30 |
Желтый мерцающий |
|
|
31 |
Белый насыщенный мерцающий |
|
|
Получение простейших геометрических фигур
С помощью графических операторов можно получить следующие изображения:
точки - операторы RSET и PRESET;
отрезка прямой - оператор LINE;
окружности - оператор CIRCLE.
Синтаксис этих графических операторов и примеры приведены в Справке Бейсика.
Пример. Графически построить изображение циферблата часов с передвижением стрелок, соответствующих текущему времени.
DECLARE FUNCTION SEC! (T!)
CLS
SCREEN 7
KI = SEC(0)
PI = 3.1415
WINDOW (-10, -10)-(10, 10)
PSET (0, 0), 15
FOR I = 0 TO 360 STEP 6
PSET (0, 0)
DRAW "TA=" + VARPTR$(I) + " BD75D5"
NEXT
FOR I = 0 TO 360 STEP 30
PSET (0, 0)
DRAW "TA=" + VARPTR$(I) + "BD70C2D10"
NEXT
FOR I = 0 TO 360 STEP 90
PSET (0, 0)
DRAW "TA=" + VARPTR$(I) + "BD66C14D14"
NEXT
COLOR 11, 0
LOCATE 2, 19: PRINT 12
LOCATE 3, 26: PRINT 1
LOCATE 7, 31: PRINT 2
LOCATE 13, 33: PRINT 3
LOCATE 19, 31: PRINT 4
LOCATE 23, 26: PRINT 5
X = -.2: Y = -8.5
FOR I = 1 TO 8
FOR J = 1 TO 8
READ C: PSET (X, Y), C: X = X + 1 / 16
NEXT
X = -.2: Y = Y - 1 / 10
NEXT
DATA 0,0,11,11,11,0,0,0
DATA 0,11,11,0,0,0,0,0
DATA 11,11,0,0,0,0,0,0
DATA 11,11,11,11,11,0,0,0
DATA 11,11,0,0,11,11,0,0
DATA 11,11,0,0,11,11,0,0
DATA 0,11,11,11,11,0,0,0
DATA 0,0,0,0,0,0,0,0
LOCATE 23, 13: PRINT 7
LOCATE 19, 8: PRINT 8
LOCATE 13, 6: PRINT 9
LOCATE 7, 7: PRINT 10
LOCATE 3, 12: PRINT 11
X$ = TIME$
Y$ = MID$(X$, 7, 2)
T = VAL(Y$)
Z$ = MID$(X$, 4, 2)
L = VAL(Z$)
ZZ$ = MID$(X$, 1, 2)
AA = VAL(ZZ$)
IF AA >= 12 THEN AA = AA - 12
C = FIX(L / 12)
H = 180 - AA * 30 - C * 6
PSET (0, 0)
DRAW "TA=" + VARPTR$(H) + "C14ND50"
DO WHILE 1
FOR J = 180 - L * 6 TO -174 STEP -6
PSET (0, 0)
DRAW "TA=" + VARPTR$(J) + "C15ND60"
IF (J + 180) / 72 = (J + 180) \ 72 THEN
PSET (0, 0)
H = H - 6
Q = H + 6
DRAW "TA=" + VARPTR$(Q) + "C0ND50"
DRAW "TA=" + VARPTR$(H) + "C14ND50"
END IF
FOR K = 180 - T * 6 TO -174 STEP -6
PSET (0, 0)
DRAW "TA=" + VARPTR$(K) + "C4ND65"
IF J = K + 6 THEN
PSET (0, 0)
DRAW "TA=" + VARPTR$(J) + "C15ND60"
END IF
IF H = -180 THEN H = 180
IF H = J + 6 OR H = K + 6 OR H = -174 AND (K = 180 OR J = 180) THEN
PSET (0, 0)
DRAW "TA=" + VARPTR$(H) + "C14ND50"
END IF
D = SEC(KI)
M$ = INKEY$
IF M$ = CHR$(27) THEN EXIT DO
DRAW "TA=" + VARPTR$(K) + "C0ND65"
NEXT
T = 0: L = 0
PSET (0, 0)
DRAW "TA=" + VARPTR$(J) + "C0ND60"
NEXT
LOOP
FUNCTION SEC (T)
IF T = 0 THEN KON = 10000000 ELSE KON = T
F$ = TIME$
FOR I = 1 TO KON
IF F$ <> TIME$ THEN
IF VX = 0 THEN
NI = I
F$ = TIME$
VX = 1
ELSE
KI = I
EXIT FOR
END IF
END IF
NEXT I
SEC = KI - NI
END FUNCTION