Простой, но наглядный пример: в консоли «бежит» настоящая синусоида. Каждая строка экрана — точка кривой, вычисленная через sin. Волна плавно движется сверху вниз. Отличный шаблон для уроков информатики: видно связь математики и программирования.
Что умеет:
Что умеет:
- Рисует настоящую синусоиду (не полоски!), по одной точке на строку.
- Волна бежит за счёт изменения фазы.
- + / - — скорость, Esc — выход.
- Функции space$() в yabasic нет — отступ собирается циклом вручную (это официально, по мануалу).
- sleep, pause, wait — синонимы, любой из них работает одинаково.
- inkey$ без автоповтора: жать +/- нужно повторно.
- Размер окна задаётся переменными width и height — подстройте под свой терминал.
- Горизонтальная волна (бежит слева направо) — другой способ отрисовки.
- Наложение двух волн с разными периодами (интерференция).
- Заполнение под кривой другим символом.
- Графический режим (open window + color) — цветная линия.
- Смена символа по ходу волны (*, #, @).
Код: Выделить всё
// Настоящая бегущая синусоида в текстовом режиме
// Esc — выход, + / - — скорость
width = 80
height = 24
center = 40
amp = 30
phase = 0
speed = 0.04
while true
clear screen
for row = 0 to height - 1
// Для каждой строки вычисляем x по синусу
x = center + int(amp * sin(2 * pi * row / height + phase))
if x < 0 then
x = 0
endif
if x > width - 1 then
x = width - 1
endif
// Собираем отступ из пробелов вручную (space$() в yabasic нет)
pad$ = ""
for i = 1 to x
pad$ = pad$ + " "
next i
print pad$ + "*"
next row
phase = phase + 0.3
sleep speed
k$ = inkey$(0.001)
if k$ = "esc" or k$ = chr$(27) then
end
elseif k$ = "+" then
speed = speed * 0.8
elseif k$ = "-" then
speed = speed / 0.8
endif
wend
end