紅 - タイルdeアート

0

ドリトルのGUIオブジェクト label! の色を timer! で変化させれば、ちょっとアートな作品ができるのではないかと思い作ってみました。

再読込をすると別のパターンに変わります。


http://bitarrow.eplang.jp/bitarrow/fs/pub/f4e9c680/Art_2.html

再帰処理バージョン。自動的(10秒毎)にパターンが変わります。


http://bitarrow.eplang.jp/bitarrow/fs/pub/f4e9c680/Art_2a.html

// art_2(紅)
screen! (black) paint.
map=[|v s1 e1 s2 e2| s2+(e2-s2)*((v-s1)/(e1-s1))].

w=screen!width?. h=screen!height?.

xn=random(8). yn=random(8).
ws=ceil(w/xn). hs=ceil(h/yn).
s=0.7.
tile=array! create. b=array! create. m=array! create. d=array! create.
i=0. j=0.
[i=i+1.
[j=j+1.
x=!(j)(1)(xn+1)(w/-2)(w/2) map. y=!(i)(1)(yn+1)(h/2)(h/-2) map.
b! (random(255)) add. m! (1) add.
tile! (label! create (ws*s)(hs*s) size (x+(ws*(1-s)/2))(y-(hs*(1-s)/2)) position
(white) fontcolor (12) fontsize) add.
]! (xn) repeat.
j=0.
]! (yn) repeat.

t1=timer! create (0.1) interval (60*60) duration [

[|i|
d! (i) (random(5)) set.
[(b! (i) get)>=256]! then [m! (i)(-1) set] execute.
[(b! (i) get)<=0]! then [m! (i) (+1) set] execute.
c=((b! (i) get)+(d! (i) get)*(m! (i) get)).
b! (i) (c) set.
//debug (tile! (i) get)! (c) set (color! (0)(0)(c) create) paint.
(tile! (i) get)! (color! (c)(0)(0) create) paint.
]! (xn*yn) repeat.

] execute.

Default