206b
<< <> >>
: .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 + ;
VIJG
EBLA
D*FO
RTH
: 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 ;
  
einde
 >>