: .BORD ( -- )
0 5 AT-XY
0 BORD
4 0 DO CR CR 33 SPACES
4 0 DO COUNT EMIT 3 SPACES
LOOP
LOOP DROP 7 SPACES ;
\ De speler kiest de te schuiven letter.
\ Daarom moeten alle tekens verschillend zijn.
0 VALUE TOETS
: >CODE ( ch -- c ) DUP 32 AND - ; \ Upper? ( **)
: SPELER ( -- ) key >code to toets ;
\ Pos = positie t.o.v. HIER. Let op de bordrand.
: WEST? ( -- pos ) HIER 3 AND 0<> -1 AND ; ( **)
: OOST? ( -- pos ) HIER 1+ 3 AND 0<> 1 AND ; ( **)
: NOORD? ( -- pos ) HIER 3 > -4 AND ; ( **)
: ZUID? ( -- pos ) HIER 12 < 4 AND ; ( **)
: LETTER? ( pos -- pos ) \ De goede letter?
DUP HIER + BORD C@ >CODE
TOETS = AND ; ( **)
: DAAR ( -- nr ) \ Positie vd te schuiven letter
NOORD? LETTER?
WEST? LETTER? OR
OOST? LETTER? OR
ZUID? LETTER? OR HIER + ;
: SCHUIF ( nr -- )
DUP BORD HIER BORD
OVER C@ OVER C@
-ROT
SWAP C! SWAP C!
TO HIER ;
: SPEEL ( -- )
PAGE EINDSTAND .BORD 1997 MS
32 0
DO RANDOM 15 AND SCHUIF .BORD
LOOP
BEGIN SPELER DAAR SCHUIF .BORD
TOETS 27 = \ [Escape]?
UNTIL ;