Назад к списку статей

Работа с графикой в BASIC.

     Обычно в DOS программах вначале используется текстовый режим. В текстовом режиме на экран выводятся символы. 80 по горизонтали и 25 строк по вертикали. Для использования графического режима его нужно включить функцией SCREEN K K - номер режима. Возможны номера 1, 2, 7-13
Каждый режим характеризуется: Разрешением: максимальным количеством точек для вывода по вертикали и горизонтали. Количеством выводимых цветов.

Точки.
В графическом режиме вывод на экран производится точками.
Отсчет координаты точки начинается с левого верхнего угла.
PSET (x,y), N - рисует точку на экране с координатами X,Y; цветом N.

REM ТОЧКИ В ЛИНИЮ
SCREEN 7
FOR I = 1 TO 20
PSET (I * 10, 100), I
NEXT
Линии
 
LINE [x1,y1],(x2,y2) n, B[BF] - рисует линию, если x1 и y1 пропущены то рисует из текущей, иначе из указанной координатами.
N - цвет. B - рисует прямоугольник. BF - закрашеный прямоугольник.

SCREEN 7
FOR X = 1 TO 200 STEP 10
LINE (150, 150)-(X, 0)
NEXT

SCREEN 7
FOR X = 15 TO 1 STEP -1
LINE (0, 0)-(X * 10, X * 10), X, BF
DO: LOOP WHILE INKEY$ = ""
NEXT
Окружности. CIRCLE (x,y),R,n - Окружность с координатами x, y, радиусом - R, цветом - n.
SCREEN 7
FOR R = 1 TO 100
CIRCLE (100, 100), R, RND * 15
NEXT R

Заливка

PAINT (x,y),[цвет области, I, цвет границы] - Заливка цветом замкнутого пространства.
Простая программа для выявления битых пикселей на LCD экране
SCREEN 7
REM Заполнение экрана цветом
FOR I = 1 TO 15
PAINT (100, 100), I
DO: LOOP UNTIL INKEY$ <> ""
NEXT

Выбор цвета

COLOR N, M - Устанавливает цвета в изображении. Первая цифра - цвет. Вторая - выбираемая палитра.
Первая REM Разноцветная ломаная
SCREEN 7
DO
X = RND * 250
Y = RND * 180
LINE -(X, Y), RND * 15
T = TIMER + 1
A: IF T > TIMER THEN GOTO A
LOOP WHILE INKEY$ = ""
Вторая REM Цветные окружности
SCREEN 7
DO
X = RND * 300
Y = RND * 180
C = RND * 15
CIRCLE (X, Y), RND * 20, C
T = TIMER
A: IF T = TIMER THEN GOTO A
LOOP WHILE INKEY$ = ""
Третья REM Разноцветные окружности
SCREEN 7
DO
CIRCLE (160, 100), 100 * RND, RND * 15
T = TIMER
A: IF T = TIMER THEN GOTO A
LOOP WHILE INKEY$ = ""
 
Четвертая REM Цветные круги до нажатия клавиши
SCREEN 7
RANDOMIZE (TIMER): K=0
DO
X = RND * 300:Y = RND * 180:C = RND * 15
CIRCLE (X, Y), RND * 20, C
PAINT (X, Y), C:T = TIMER
A: IF T = TIMER THEN GOTO A
K = K + 1: IF K > 5 THEN CLS : K = 0
LOOP WHILE INKEY$ = ""
 
Пятая REM Пучки линий до нажатия клавиши
SCREEN 7
DO
X1 = RND * 300: Y1 = RND * 200
FOR X = -3.14 TO 0 STEP .1
Y = SIN(X)
LINE (X1, Y1)-(X * RND * 50 + RND * 200, -Y * RND * 50 + RND * 150), RND * 15
NEXT X
T = TIMER + 1
A: IF T > TIMER THEN GOTO A
CLS
LOOP WHILE INKEY$ = ""
Шестая REM Разноцветные закрашенные прямоугольники до нажатия клавиши
SCREEN 7
RANDOMIZE (TIMER)
DO
X1 = RND * 250: Y1 = RND * 180
X2 = RND * 250: Y2 = RND * 180
LINE (X1, Y1)-(X2, Y2), RND * 15, BF
T = TIMER + 1
A: IF T > TIMER THEN GOTO A
LOOP WHILE INKEY$ = ""
Седьмая REM Разноцветные конусы под разными углами до нажатия клавиши
SCREEN 7
DO
X = RND * 280: Y = RND * 200: Z = RND * 100
IF Z > 50 THEN ZX = 1 ELSE ZX = -1
Z = RND * 100
IF Z > 50 THEN ZY = 1 ELSE ZY = -1
FOR I = 1 TO 50
CIRCLE (X + I * ZX, Y + I * ZY), I / 2, RND * 15
NEXT
T = TIMER + 1
A: IF T > TIMER THEN GOTO A
LOOP WHILE INKEY$ <> ""
Восьмая REM Разноцветные витражи
SCREEN 7: RANDOMIZE TIMER
DIM X(400), Y(400)
N = 0: COLOR 4, 1
DO
IF N <> 0 GOTO 200
A = RND * 12: B = RND * 12
FOR I = 1 TO 360
Z = 6.2832 * I / 360
X(I) = 160 + 160 * SIN(5 * Z) * COS(A * Z)
Y(I) = 100 + 150 * COS(5 * Z) * SIN(B * Z)
LINE (X(I - 1), Y(I - 1))-(X(I), Y(I)), 4
NEXT
200 : C = INT(15 * RND)
IF C = 4 THEN GOTO 200
T = TIMER
206 : IF T = TIMER THEN GOTO 206
PAINT (RND * 300, RND * 200), C, 4
N = N + 1: IF N > 150 THEN CLS : N = 0
LOOP WHILE INKEY$ = ""
Автором сайта выполнена методическая разработка по изучению графических возможностей языка QBasic. Разработка является дипломантом всероссийского конкурса.

Архив можно взять здесь: BAS-GRAPH.zip

На главную