: .BRETT ( -- )
0 5 AT-XY
0 BRETT 4 0
DO CR CR 33 SPACES
4 0 DO COUNT EMIT 3 SPACES LOOP
LOOP DROP 7 SPACES ;
\ Der Spieler waehlt den zu verschiebenden Buchstaben.
\ Darum muessen alle Zeichen verschieden sein.
0 VALUE TASTE
: >CODE ( ch -- c ) DUP $20 AND - ; \ Upper? ( **)
: SPIELER ( -- ) KEY >CODE TO TASTE ;
\ Pos = Position bezueglich HIER. Brettrand beachten.
: WEST? ( -- pos ) HIER 3 AND 0<> -1 AND ; ( **)
: OST? ( -- pos ) HIER 1+ 3 AND 0<> 1 AND ; ( **)
: NORD? ( -- pos ) HIER 3 > -4 AND ; ( **)
: SUED? ( -- pos ) HIER 12 < 4 AND ; ( **)
: BUCHSTABE? ( pos -- pos ) \ Der richtige Buchstabe?
DUP HIER + BRETT C@ >CODE
TASTE = AND ; ( **)
: DORT ( -- nr ) \ Position d. zu verschiebenden Buchst.
NORD? BUCHSTABE?
WEST? BUCHSTABE? OR
OST? BUCHSTABE? OR
SUED? BUCHSTABE? OR HIER + ;
: SCHIEB ( nr -- )
DUP BRETT HIER BRETT
OVER C@ OVER C@
-ROT
SWAP C! SWAP C!
TO HIER ;
: SPIEL ( -- )
PAGE ENDSTAND .BRETT 1997 ms
32 0 DO RANDOM $F AND SCHIEB .BRETT LOOP
BEGIN SPIELER DORT SCHIEB .BRETT
TASTE $1B = \ [Escape]?
UNTIL ;