再帰を利用してランダムな折れ線を描くスクリプト。
コメントを外せば、磁石に吸いつく砂鉄のような模様ができます。
関連:
#module
#const RADIUS 10
#deffunc draw int sx, int sy, int ex, int ey, int count, local rx, local ry
if count > 0 {
theta = 3.14 * rnd(100) / 50
; theta = atan(mousey - sy, mousex - sx) + 0.01 * (15 - rnd(30))
rx = int(cos(theta) * RADIUS)
ry = int(sin(theta) * RADIUS)
draw sx, sy, (sx + ex)/2 + rx, (sy + ey)/2 + ry, count - 1
draw (sx + ex)/2 + rx, (sy + ey)/2 + ry, ex, ey, count - 1
} else {
hsvcolor 191 * sx / ginfo_winx, 255, 255
line sx, sy, ex, ey
}
return
#global
randomize
*main
redraw 0
color : boxf
repeat 6, 1
draw ginfo_winx, cnt*70, 0, cnt*70, 5
// ↑の5を1以上の整数に変えると線が変わる。重いけど10とか面白い。
loop
redraw 1
wait 4
goto *main
0 件のコメント:
コメントを投稿