Qbasic:
# Прямоугольники и квадраты
Рисовать домик отдельными линиями - не самый рациональный способ. Легко увидеть, что домик представляет собой прямоугольник с крышей из двух отрезков. (Так рисуют домик почти все, кроме гениальных фантазеров и профессиональных художников.) А нарисовать прямоугольник можно одним оператором
LINE (x1, y1)-(x2, y2), [цвет], B
Этот оператор рисует рамку-прямоугольник со сторонами, параллельными границам экрана. Точки (x1, y1) и (x2, y2) суть две вершины прямоугольника, расположенные по одной из его диагоналей. Если параметр цвет отсутствует, то будет нарисована белая рамка. (Но “лишняя” запятая должна остаться!)
Поскольку точки экрана представляют собой маленькие прямоугольнички, то попытка нарисовать квадрат оператором
LINE (20, 20)-(120, 120), , B
потерпит неудачу. Высота этого “квадрата” окажется больше, чем ширина, хотя обе стороны содержат одинаковое число пикселей. Уменьшим число точек в высоте “квадрата” в 1.2 раза (для SCREEN 1!) или во столько же раз увеличим ширину “квадрата” - только тогда мы получим истинный квадрат. Поправочный коэффициент назовем “коэффициентом вытянутости” пикселя.
Оператор LINE (x1, y1)-(x2, y2), [цвет], BF рисует такой же, но закрашенный прямоугольник.
Задача. Нарисовать на экране пирамиду из 10 ступенек-прямоугольников.
Решение. Воспользуемся тем, что пирамида имеет осевую симметрию. Расположим ось пирамиды посредине экрана. Пронумеруем прямоугольники сверху вниз числами от 1 до 10. Очевидно, что значения x1, y1, x2, y2 зависят от номера прямоугольника. В силу симметрии, чтобы получить x1, нужно от 160 вычесть что-то, а чтобы получить x2 - прибавить столько же.
Составим вспомогательную табличку.
Номер
ступеньки |
x1 |
x2 |
1 |
160 - 10 |
160 + 10 |
2 |
160 - 20 |
160 + 20 |
3 |
160 - 30 |
160 + 30 |
... |
... |
... |
10 |
160 - 100 |
160 + 100 |
Легко заметить, что номер ступеньки-прямоугольника и величина добавки связаны зависимостью
добавка = 10*номер.
Если обозначить через k номер ступеньки, получим формулы для вычисления x1 и x2:
x1 = 160 - 10*k x2 = 160 + 10*k
Значения y1 и y2 также зависят от номера и высоты ступеньки h, где h - некоторая заранее заданная величина (например, h = 10):
y1 = 40 + h*k y2 = y1 + h
Теперь можно составить программу.
SCREEN 7
h = 10
FOR k = 1 TO 10
x1 = 160 - 10*k
x2 = 160 + 10*k
y1 = 40 + h*k
y2 = y1 + h
LINE (x1, y1)-( x2, y2), , B
NEXT k
|
Задание. Запишите программу под именем PIRAMIDA.BAS. Измените высоту, ширину, цвет ступенек. Составьте пирамиду из закрашенных прямоугольников; из закрашенных прямоугольников с рамкой другого цвета.
Заметим, что использование переменной h для обозначения высоты ступенек позволяет проще изменять высоту ступеньки.
Автор: Гутман Г.Н. Мой любимый QuickBASIC, 2001г
|