УРОК 15. Другие вопросы
Для вывода рамок в текстовом режиме можно воспользоваться элементами псевдографики, которые используются также и в программе Norton Commander. Для того, чтобы использовать коды данных символов, воспользуемся следующей программой:
CLS
FOR i1% = 176 TO 223
PRINT i1%; " "; CHR$(i1%); " ";
NEXT i1%
Теперь попробуем нарисовать рамку, в которой находится текст:
CLS: a1$ = CHR$(205)
a2$ = CHR$(186)
‘ Установка угловых символов
LOCATE 2, 2: PRINT CHR$(201)
LOCATE 10, 2: PRINT CHR$(200)
LOCATE 2, 28: PRINT CHR$(187)
LOCATE 10, 28: PRINT CHR$(188)
‘ установка горизонтальных линий
FOR i1% = 3 TO 27
LOCATE 2, i1%: PRINT a1$;
NEXT i1%
FOR i1% = 3 TO 27
LOCATE 7, i1%: PRINT a1$;
NEXT i1%
FOR i1% = 3 TO 27
LOCATE 10, i1%: PRINT a1$;
NEXT i1%
‘ Установка вертикальных линий
FOR i1% = 3 TO 9
LOCATE i1%, 2: PRINT a2$;
NEXT i1%
FOR i1% = 3 TO 9
LOCATE i1%, 28: PRINT a2$;
NEXT i1%
‘ Установка средних пересечений
LOCATE 7, 2: PRINT CHR$(204);
LOCATE 7, 28: PRINT CHR$(185);
‘ Вывод текста
LOCATE 4, 9: PRINT " Пример рамки "
LOCATE 9, 14: PRINT "OK"
Помимо рамок при помощи данных символов можно рисовать и другие рисунки, но, к сожалению, достаточно ограниченное их число.
Допустимо также ввести символы псевдографики непосредственно в оператор программы. Для этого нужно нажать на клавишу Alt и, не отпуская ее, ввести код символа. После того, как клавиша Alt будет отпущена, на экране появится введенный символ.
Для рамки можно создать и ее тень, что выполнено нижеприведенной программой.
a1$ = CHR$(205): a2$ = CHR$(186)
COLOR 0, 7: CLS
LOCATE 2, 2: PRINT CHR$(201)
LOCATE 10, 2: PRINT CHR$(200)
LOCATE 2, 28: PRINT CHR$(187)
LOCATE 10, 28: PRINT CHR$(188)
FOR i1% = 3 TO 27: LOCATE 2, i1%: PRINT a1$; : NEXT i1%
FOR i1% = 3 TO 27: LOCATE 7, i1%: PRINT a1$; : NEXT i1%
FOR i1% = 3 TO 27: LOCATE 10, i1%: PRINT a1$; : NEXT i1%
FOR i1% = 3 TO 9: LOCATE i1%, 2: PRINT a2$; : NEXT i1%
FOR i1% = 3 TO 9: LOCATE i1%, 28: PRINT a2$; : NEXT i1%
LOCATE 7, 2: PRINT CHR$(204); : LOCATE 7, 28: PRINT CHR$(185);
LOCATE 4, 6: PRINT " Вывод текста рамки ": LOCATE 9, 14: PRINT " ОК "
FOR i1% = 4 TO 29: LOCATE 11, i1%: PRINT CHR$(219); : NEXT i1%
FOR i1% = 4 TO 10: LOCATE i1%, 29: PRINT CHR$(219); : NEXT i1%
Символами псевдографики можно также выводить рисунки на экран, однако, лучше делать это в графическом режиме.
Особый интерес вызывает прорисовка разных геометрических фигур, которые довольно просто организовать. Приведем пример.
SCREEN 9
delta = .5
FOR i1 = 0 TO 6.2 STEP .1
x = 100 * SIN(i1) * COS(2 * i1) + 100
y = 100 * SIN(i1 + delta) + 100
PSET (x, y), 3
NEXT i1
В
данном примере вычисляем значения координат х и у от некоторых функций
синусов и косинусов. Так как полученные значения лежат в интервале от
-1 до 1, то умножим на 100 и прибавим также 100, в результате
принимаемые значения координат будут находиться в пределах от 0 до 100.
Можно прибавить большее значение, чтобы рисунок был в центре экрана.
Как видно из полученной картинки, точки находятся на некотором
расстоянии друг от друга. Это можно поправить, уменьшив шаг цикла с .1
до .01, а конечное значение с 6.2 до 6.28. Кроме того, при таком шаге
точки появляются последовательно одна за другой, поэтому интересно
смотреть, как фигура появляется на экране. Можно попробовать вывести
данную фигуру для разных значений параметра delta, например, 0.01, 1, 1.5 и так далее.
Немного разнообразим формулу для координаты у, поставив дополнительно функцию косинуса.
SCREEN 9
delta = .05
FOR i1 = 0 TO 6.28 STEP .01
x = 100 * SIN(i1) * COS(2 * i1) + 100
y = 100 * SIN(i1 + delta) * COS(i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
Используя комбинации синусов и косинусов, можно получить разные виды графиков, как это показано ниже.
SCREEN 9: delta = 1.05
FOR i1 = 0 TO 6.28 STEP .01
x = 100 * SIN(i1) * COS(2 * i1) + 100
y = 100 * SIN(i1 + delta) * COS(i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
SCREEN 9: delta = 1.05
FOR i1 = 0 TO 6.28 STEP .01
x = 100 * SIN(i1) * COS(2 * i1) + 100
y = 100 * SIN(i1 + delta) * COS(3 * i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
SCREEN 9: delta = 1.05
FOR i1 = 0 TO 12.56 STEP .01
x = 100 * SIN(i1) * COS(2 * i1) + 100
y = 100 * SIN(i1 + delta) * COS(.5 * i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
SCREEN 9: delta = .05
FOR i1 = 0 TO 6.28 STEP .01
x = 100 * SIN(i1) * COS(2 * i1) + 100
y = 100 * SIN(i1 + delta) * COS(.5 * i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
SCREEN 9: delta = .05
FOR i1 = 0 TO 3.14 STEP .01
x = 100 * SIN(2 * i1) * COS(i1) + 100
y = 100 * SIN(2 * i1 + delta) * SIN(i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
SCREEN 9: delta = .305
FOR i1 = 0 TO 20 STEP .01
x = 5 * i1 * SIN(2 * i1) * COS(i1) + 100
y = 5 * i1 * SIN(2 * i1 + delta) * SIN(i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
SCREEN 9: delta = 1.105
FOR i1 = 0 TO 20.14 STEP .01
x = 100 * SIN(2 * i1) * COS(i1) + 100
y = 100 * SIN(3 * i1 + delta * i1) * SIN(2 * i1) + 100
PSET (x + 10, y + 10), 3
NEXT i1
Изменяя параметр delta
и комбинацию синусов и косинусов, можно получить и другие виды
рисунков. Кроме того, дополнительные возможности обеспечивает ввод
функции тангенса, разные степени синусов и косинусов, а также умножая
значения синуса и косинуса или аргумент синусов и косинусов на степени
параметра i1.
Графики можно выводить в полярной системе координат, причем для перехода к этой системе используются формулы:
x = r * COS(fi)
y = r * SIN(fi)
Например, для вывода окружности, воспользуемся программой:
SCREEN 9
r = 100
FOR fi = 0 TO 6.28 STEP .01
x = r * SIN(fi) + 100
y = r * COS(fi) + 100
PSET (x + 10, y + 10), 3
NEXT fi
Для вывода спирали:
SCREEN 9
FOR fi = 0 TO 100 STEP .01
x = fi * SIN(fi) + 100
y = fi * COS(fi) + 100
PSET (x + 10, y + 10), 3
NEXT fi
Можно вывести многоугольники:
SCREEN 9
x0 = 100: y0 = 200
FOR i1 = 0 TO 6.3 STEP .9
x = 100 * SIN(i1) + 100
y = 100 * COS(i1) + 100
LINE (x0, y0)-(x, y), 2
x0 = x: y0 = y
NEXT i1
Чтобы разнообразить график данной программы, изменим шаг в цикле:
SCREEN 9
x0 = 100: y0 = 200
FOR i1 = 0 TO 40 STEP 2.9
x = 100 * SIN(i1) + 100
y = 100 * COS(i1) + 100
LINE (x0, y0)-(x, y), 2
x0 = x: y0 = y
NEXT i1
И
так далее, то есть немного изменив задание координат х и у и изменяя
параметры шага в цикле, можно вывести множество разнообразных фигур.
Задачи.
1. Выведите несколько кривых с разными параметрами.
2. Нарисуйте флаги разных стран.
3. Нарисуйте крылья бабочки с имитацией ее полета.
4. Создайте картинку вращающегося пропеллера.
|