|
Rebol universe - Source CodeFlight thru the Rebol code universe.... |
|
REBOL [ title: "Rebol universe by Cyphre in 2004" author: cyphre@seznam.cz ] rot: 0 stars: copy [] screen: 400x400 center: screen / 2 rng: 15 strange: fwd: false objects: 2500 wrds: copy [] loop objects [ x: (random rng) - (rng / 2) if x = 0 [x: (random rng) - (rng / 2)] append stars reduce [x random 360 (random 255) + 1] append wrds form first random first system/words ] sort/skip/compare stars 3 3 stars-orig: copy stars circle-grad: func [ size col-a col-b /local result c-inc col cl siz ][ siz: size/x / 2 result: copy [] c-inc: reduce [col-a/1 - col-b/1 / siz col-a/2 - col-b/2 / siz col-a/3 - col-b/3 / siz] cl: reduce [col-a/1 col-a/2 col-a/3] repeat n siz [ col: to-tuple reduce [to-integer cl/1 to-integer cl/2 to-integer cl/3] insert tail result compose [pen (col) fill-pen (col) circle (size / 2) (siz - n)] cl: reduce [cl/1 - c-inc/1 cl/2 - c-inc/2 cl/3 - c-inc/3] ] return result ] view layout [ origin 0 img: image screen with [ image: to-image make face [ edge: none size: screen color: black effect: compose/deep [draw [(circle-grad screen black sky * 1.2)]] ] rate: 0 effect: [draw [] draw []] font: make font [ size: 11 ] feel: make feel [ engage: func [f a e /local tmp col gx gy idx][ if e/type = 'time [ idx: 0 f/effect/2: copy [] f/effect/4: copy [] either fwd [ rot: rot + 4 ][ rot: rot - 4 ] f/effect/2: compose [pen sky line-pattern 3 5 line] foreach [x y z] stars [ idx: idx + 3 idx-x: idx - 2 idx-y: idx - 1 idx-w: idx / 3 if z < 10 [ gx: x * 256 / z + center/x gy: y * 256 / z + center/y tmp: min 255 to-integer 300 * 7 / z col: to-tuple reduce [tmp tmp tmp] append f/effect/2 (as-pair gx gy) append f/effect/4 compose [pen (col) fill-pen (col) circle (as-pair gx gy) (to-integer 10 / z) font (make font [size: to-integer 50 / z]) text (as-pair gx gy) (wrds/:idx-w)] ] either fwd [ z: z - 0.1 if z <= 1 [ z: 256 ] ][ z: z + 0.1 if z > 256 [ z: 1 ] ] either strange [ poke stars idx-x stars-orig/:idx-x + y * sine rot + stars-orig/:idx-y poke stars idx-y stars-orig/:idx-x + x * cosine rot + stars-orig/:idx-y ][ poke stars idx-x stars-orig/:idx-x * sine rot + stars-orig/:idx-y poke stars idx-y stars-orig/:idx-x * cosine rot + stars-orig/:idx-y ] poke stars idx z ] if (rot // 250) = 0 [ fwd: first random [#[true] #[false]] strange: first random [#[true] #[false]] ] show f ] ] ] ] at as-pair center/x - (logo.gif/size/x / 2) center/y - (logo.gif/size/y / 2) image logo.gif with [feel: none] ] |