# Sokoban

CP/M port of a Unix curses clone of sokoban
 
I found it as part of the ZCN repository: https://github.com/jamesots/zcn

The C source has been modified for VT100 compatibility, and some unused
variables have been removed :)

sokoban.com is the compiled binary.

To run it, the files sokoban.com and soklevls.dat are needed
The help file, sokoban.hlp, is not used in this version.
You find the contents below.

See the readme.* files for more information.

## Commands

| Key | Action              | Key  | Action         | Key | Action           |
| --- | ------------------- | ---- | -------------- | --- | ---------------- |
| h   | move/push left      | H    | run/push left  | ^H  | run left to obj  |
| l   | move/push right     | L    | run/push right | ^L  | run right to obj |
| j   | move/push down      | J    | run/push down  | ^J  | run down to obj  |
| k   | move/push up        | K    | run/push up    | ^K  | run up to obj    |
| u   | undo last move/push | U    | undo all                | |             |
| c/s | temporary save      | ^U/r | reset to temporary save | |             |
| ^R  | Refresh screen      | q    | quit                    | |             |

## The game

Characters on screen are:

| Symbol | Meaning                    | Symbol | Meanging                   |
| ------ | -------------------------- | ------ | -------------------------- |
| @@     | player                     | ++     | player on saving position  |
| ..     | saving position for packet | $$     | packets                    |
| **     | saved packet               | ##     | wall                       |

Your goal is to move all packets to the saving position by pushing them.

As you could see you can make a temporary save. This is useful if you think
that all the moves/pushes you have made are correct, but you don't know how
to go on. In this case you can temporary save (using the c command). If you
then get stucked you need not undo all (using U), you can reset to you
temporary save.

If you have restored a saved game, a temporary save is automatically made
at the start.

## Compiling

HiTech C has been used to compile it, it is placed in the directory HitechC.

To compile Sokoban, I used the command c -O sokoban.c in CP/M.

