# -*- pf -*- # : x slurp drop ; x load-image load-blit # load-blit-sdl : blit >i420 sdl-blit ; load-scaf # load-rtc ` bitgrid/1/256/256 new variable! grid : randomgrid grid @> type bitgrid:random grid ! ; randomgrid variable current-rule # ` game-of-life scaf-find variable! current-rule : ca-tick grid @> current-rule @ scaf-execute dup grid ! bitgrid:image blit ; : ca ['] ca-tick [is] tick ; : rule read scaf-find current-rule ! ; 20. renderperiod ! # temp functions : :ca ::scaf current-rule ! randomgrid ; # some scaf code scaf-begin : read2 center read left read ; : read3 center read left read right right read ; # ( -- c l r ) : stuff read3 xor or ; : yop center right read ; : rule-110 left read dup >r # R(left) right read dup >r # R(center left) right read or or # l | c | r r> r> and not and ; : rule-110-2d up rule-110 ; : ding 0c! up> c+ left> left c+ down> down c+ right> right c+ 2 @ 1 @ or 0 @ and ; scaf-end ` game-of-life scaf-find current-rule ! : x read scaf-find current-rule ! ; ca "try something like:" . cr tab "rule rule-110" . cr tab "rule game-of-life" . cr interactive # DEMO: