\ Tegels, leuke cijfers: 15 22 38 44 48 53 75 82 83 hex v: fresh 0 value RND 23 to rnd \ any number allowed as seed : CHOOSE ( u1 -- u2 ) \ u2 = 0 to u1-1 rnd dm 31421 * dm 6927 + dup to rnd FFFF and * 10 rshift ; need bitarray need count* 100 bitarray TEGEL : RIJ? ( t -- f ) \ Een van de pixels in een rijtje bezet? FF and dup tegel get* >r \ t b0 \ Tegel gebruikt dup 0F and >r \ t b0 r \ r@ 0= 10 and over + 1- tegel get* \ t b1 b0 r swap r> 0F = -10 and + 1+ tegel get* \ b1 b2 b0 r> or or ; \ b3 : BEZET? ( t -- b ) \ 'b' is 0 als de tegel omgeving vrij is dup rij? \ Tegel rij bezet over 10 - rij? or \ Tegels erboven bezet swap 10 + rij? or ; \ Tegels eronder bezet 10 value KLEUR ( Maximaal 64 tot nu toe bij 321 als input ) v: inside : P ( +n -- ) to rnd \ Als de Brody generator gebruikt wordt tegel *zero \ Tegel begint blauw kleur 0 ?do \ Aantal anders kleurde tegeltjes 100 choose \ Kies positie begin dup bezet? while \ Is positie bezet? drop 100 choose \ Kies nieuwe positie key? if drop leave then \ Noodknop repeat tegel *set \ Zet anders gekleurd tegeltje loop ; \ 44 = donker blauw, 46 = donker cyaan, 47 = grijs, 104 = paars blauw \ 106 = cyaan, 107 = helder wit, 0 = standaard kleur : COLOR ( +n -- ) hor >r dm 27 emit ch [ emit \ CSI base @ hex swap 0 .r base ! \ ASCII waarden van SGR parameters ch m emit r> to hor ; \ Sluit & corrigeer HOR 1 value NAAST \ Tegels naast elkaar 1 value ONDER \ Tegels onder elkaar 106 value BASIS \ Basis kleur tegels 107 value PUNT \ Patroon tegels 000 value VOEG \ Kleur voeg ook : LB 106 to basis ; : DB 44 to basis ; : MB 46 to basis ; : GR 42 to basis ; : GRIJS 47 to basis ; : ANTRA 100 to basis ; : +VOEG 47 to voeg ; : -VOEG 0 to voeg ; : .VOEG ( -- ) voeg ?dup if color 2 spaces then 0 color ; \ Tegels los van elkaar : .HOR ( -- ) voeg ?dup if cr color naast 22 * 2 + spaces then 0 color ; \ Horizontale voeg : .RIJTJE ( +n -- ) 10 bounds do \ Een rij bestaat uit 16 tegels i tegel get* \ Lees kleur, en druk tegeltje if punt else basis then color space space loop ; : .T ( -- ) \ Toon tegel wandje met voegen onder \ Aantal tegels onder elkaar begin .HOR 100 0 do \ Een tegel cr .voeg naast \ Nieuwe rij begin i .rijtje .voeg 1- ?dup 0= until \ Rij gedaan? 10 +loop \ Volgende rij 1- ?dup 0= until \ Rij tegels er onder? .HOR 0 color ; : .P ( hor ver -- ) to onder to naast .t ; : PP ( +n -- ) p ." Done " tegel count* . .t cr ; : PROBEER ( -- ) begin FFFF choose dup u. pp 1800 ms key? until ; decimal v: fresh \ End ;;;