Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по QBasic.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
535.04 Кб
Скачать

Изображение линий и прямоугольников

Линию можно провести с помощью оператора LINE.

Например,

LINE (A, B) - (C, D), цвет - проводит линию из точки с координатами (А,В) до точки с координатами (С, D) с заданным номером цвета (цвет указывать необязательно)

Для изображения прямоугольника используется оператор LINE (A, B) - (C, D), цвет, В (от слова ВОХ)

Оператор , LINE (A, B) - (C, D), цвет, ВF (от слова ВОХ FILL)

Следующий пример удобно просмотреть пошажно командами DEBUG->STEP (F8) и VIEW->OUTPUT SCREEN (F4) .

SCREEN 12

LINE (0, 0)-(640, 480)'прямая по диагонали экрана

LINE (20, 50)-(70, 100), , B 'квадрат

LINE (80, 80)-(100, 100), 2, B 'зелёный квадрат

LINE (200, 110)-(250, 300), 4, BF 'красный заполненный квадрат

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

Рассмотрим программу, рисующую отрезки со случайными концами и цветом.

SCREEN 12

RANDOMIZE TIMER 'включаем генератор случайных чисел

DO

'генерируем координаты и цвет

a = INT(RND * 640)

b = INT(RND * 480)

c = INT(RND * 640)

d = INT(RND * 480)

v = INT(RND * 16 + 1)

'проводим линию

LINE (a, b)-(c, d), v

'цикл продолжается до нажатия клавиши

LOOP UNTIL INKEY$ <> ""

Изображение кругов и эллипсов

Круги и эллипсы рисуются с помощью оператора CIRCLE, к которому добавляются параметры.

CIRCLE x,y,радиус,цвет,начало,конец,коэффициент сжатия

Здесь:

  • x и y – координаты центра.

  • Цвет – число от 1 до 16.

  • Начало – начальное значение дуги в радианах, по умолчанию 0.

  • Конец – конечное значение дуги в радианах, по умолчанию 2*pii (pii = 3,14...)

  • Коэффициент сжатия – отношение высоты эллипса к его ширине, для круга равен 1.

В случае круга достаточно параметров центра круга и радиуса.

Приведём пример изображения круга и эллипса.

Его построение можно исследовать, нажимая клавиши F8 и F4.

SCREEN 12

CIRCLE (100, 100), 30 'обычный белый круг

CIRCLE (200, 100), 30, 4 'красный круг

CIRCLE (200, 300), 30, 9, 3.14 'синяя дуга

CIRCLE (400, 180), 60, 2, , , 4 'зелёный овал

Рассмотрим программу, где меняется коэффициент сжатия.

SCREEN 12

FOR к = 1 TO 16 STEP 0.1

CIRCLE (150, 240), 150, 2, , , к

NEXT

FOR к = 1 / 16 TO 1 STEP .1

CIRCLE (460, 240), 150, 4, , , к

NEXT

Раскрашивание

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

PAINT (x,y),цвет,цвет границы

Рассмотрим следующую картинку рыбы:

SCREEN 12

CIRCLE (190, 100), 100, 1, , , .3 'синий эллипс –тело рыбы

CIRCLE (265, 92), 5, 1, , , .7 'синий эллипс – глаз рыбы

'ограниченное синим тело рыбы станет зелёным

PAINT (190, 100), 2, 1

LINE (40, 120)-(40, 80), 2 'зелёный контур

LINE (40,80)-(100, 100), 2 'рыбий хвост

LINE (100,100)-(40, 120), 2'рисунок

'хвост с зелёным контуром становится синим

PAINT (50, 100), 1, 2

Ниже даётся эффектная программа с использованием операторов

PAINT и CIRCLE:

RANDOMIZE TIMER 'мешаем случайные числа

SCREEN 12

DO

X = RND * 640 'случайный центр

Y = RND * 480

Raadius = RND * 100 'случайный радиус

C = INT(RND * 14 + 1) 'случайный цвет C

CIRCLE (X, Y), Raadius, 15 'круг с белым контуром

PAINT (X, Y), C, 15 'закрашиваем белый круг цветом C

CIRCLE (X, Y), Raadius, C 'рисуем круг цветом С

LOOP UNTIL INKEY$ <> ""

Ещё одна интересная программа:

INPUT "Введи радиус"; R

'выбираем местоположение и направление движения

d 'направление движения

MI = 1: NI = 1

'центр

M = 100: N = 100

'включаем графический экран и начинаем рисовать

SCREEN 12

DO

'проверяем, что не выходим за пределы

IF M < R OR M > 640 - R THEN MI = -MI

IF N < R OR N > 480 - R THEN NI = -NI

CIRCLE (M, N), R, 0 'закрашиваем чёрным (для стирания)

M = M + MI

N = N + NI

CIRCLE (M, N), R 'белый цвет

'далее стоит задержка (число 200 может быть увеличено)

FOR pidur = 1 TO 200

NEXT pidur

LOOP UNTIL INKEY$ <> ""