version 1.2, 1995/11/27 18:37:07
|
version 1.6, 2003/03/09 15:16:52
|
Line 1
|
Line 1
|
\ sokoban - a maze game in FORTH |
\ sokoban - a maze game in FORTH |
|
|
|
\ Copyright (C) 1995,1997,1998,2003 Free Software Foundation, Inc. |
|
|
|
\ This file is part of Gforth. |
|
|
|
\ Gforth is free software; you can redistribute it and/or |
|
\ modify it under the terms of the GNU General Public License |
|
\ as published by the Free Software Foundation; either version 2 |
|
\ of the License, or (at your option) any later version. |
|
|
|
\ This program is distributed in the hope that it will be useful, |
|
\ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
\ GNU General Public License for more details. |
|
|
|
\ You should have received a copy of the GNU General Public License |
|
\ along with this program; if not, write to the Free Software |
|
\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
|
\ Contest from Rick VanNorman in comp.lang.forth |
\ Contest from Rick VanNorman in comp.lang.forth |
|
|
\ SOKOBAN |
\ SOKOBAN |
Line 28 Create maze 1 cells allot /maze 25 * al
|
Line 46 Create maze 1 cells allot /maze 25 * al
|
Variable mazes 0 mazes ! \ root pointer |
Variable mazes 0 mazes ! \ root pointer |
Variable soko 0 soko ! \ player position |
Variable soko 0 soko ! \ player position |
Variable >maze 0 >maze ! \ current compiled maze |
Variable >maze 0 >maze ! \ current compiled maze |
>maze off |
|
|
|
\ score information |
\ score information |
|
|
Line 119 Variable score 0 score ! \ total nu
|
Line 136 Variable score 0 score ! \ total nu
|
S" &." S" .&" r@ play-rule IF r> soko +! EXIT THEN |
S" &." S" .&" r@ play-rule IF r> soko +! EXIT THEN |
S" &* " S" .&$" r@ play-rule |
S" &* " S" .&$" r@ play-rule |
IF r> soko +! 1 rocks +! -1 score +! EXIT THEN |
IF r> soko +! 1 rocks +! -1 score +! EXIT THEN |
|
S" &$." S" .@*" r@ play-rule |
|
IF r> soko +! 1 rocks +! -1 score +! EXIT THEN |
-1 moves +! r> drop ; |
-1 moves +! r> drop ; |
|
|
1 move: soko-right |
1 move: soko-right |