xsok - generic Sokoban game for X11, Version 1.02
is a single player strategic game, a superset of the well known
Sokoban game. This manpage describes only the user interface of xsok
If you want to create own levels, you should consult the xsok
for more information.
The target of Sokoban
is to push all the objects into the score area of
each level using the mouse or the arrow keys. For the other level subsets,
there are different kinds of objects, and special effect squares.
can be played using only the mouse, or only the keyboard. Keyboard
and mouse bindings are defined through a textfile. This manual page describes
the default bindings.
All standard X toolkit parameters may be given, such as -display
etc. Additional options are
- -rules level subset
- This option specifies the initial level subset for
xsok. Valid built-in rule names are Sokoban,
Cyberbox, and Xsok, but you may implement new level subsets
without recompiling the game. Level subsets share common characteristics
of the board. In Sokoban, for example, all boxes have the same
weight. In Xsok, the first level is a demo level, where you can
experiment with the new objects.
- -level startlevel
- Set the starting level.
- -username username
- In a save-game file, your name, as found in the
/etc/passwd file, and the hostname of your computer, will be stored
in the file. The default format is realname
(email@example.com), for example Michael Bischoff
(firstname.lastname@example.org). You can override this default string
with the argument to the username option and provide a different e-mail
address, for example
xsok -username "Michael Bischoff (email@example.com)".
If you break the scores for one level, your solution will be saved
- -xsokdir xsokdir
- This option sets the root of the xsok data file
tree. The default is /usr/share/games/xsok.
- -xpmdir xpmdir
- This gives the directory from where to load the graphic
- -savedir savedir
- This option sets the directory for save game files and the
xsok highscore files. The default is /var/games/xsok.
- -messageFile messagefile
- This option sets the name of an alternative message file
for xsok. The pathname is relative to xsokdir. The default
is messages, and does not exist, which means to use the internal
- -keyboardFile keyboardfile
- This option sets the name of the file defining the keyboard
bindings. The pathname is relative to xsokdir. The default is
keys. The bindings in the default file are described below.
All command line options may be abbreviated, or set by the X11 resource
manager. The resource name for option -xyz is Tableau.xyz
and its class name Tableau.Xyz.
The arrow keys will move the man. The default binding is similar to the binding
. Some commands accept a numerical prefix (i.e. typing some
digits before the command key), which usually is used as an operation count.
- Display the author of a level (if known).
- Drops the bookmark.
- Goto bookmark.
- Displays the level comment (if any).
- Saves the current position.
- Reloads a saved game.
- Restart this level. With numerical prefix n, jumps
to move number n.
- Proceed to the next level. With numerical prefix n,
jumps to level n.
- Reread the highscore table.
- Return to the previous level.
- Proceeds to the next unsolved level.
- Quits the game.
- Shows the version of xsok.
- Shows the current score.
- Shows the best score for this level.
- Drops the bookmark at the current position.
- Undoes the last elementary move. Accepts numerical
- Redoes last move (undoes an undo). Accepts numerical
- Starts recording a macro (sequence of moves)
- End a macro.
- Replays a macro.
With the default button assignment, button 1 is bound to the function
. If pressed on a clear square, the man will move to that
location via the optimal path if such a path exists. If pressed on an object
that is adjacent to the player, the object will be pushed.
Button 2 is bound to MouseDrag
. This command requires that you press the
mouse button on a location where a box resides, drag the mouse, and release
the button on an empty square. The man will then move the box from the first
square onto the second with the minimal number of pushes, if it is possible at
all. Please note that the man will not move any other object and will only use
squares without effects.
Button 3 is bound to MouseUndo
. This function undoes one of the previous
commands, which would possibly require a lot of calls to the atomic undo
has simple support for different languages. All messages which
appear in the X11 window may be overloaded by files, as well as the key
bindings. The typical support consists of an application-defaults file, a
message file, and a keyboard file. Possibly translated online-help files are
also there. To select a different language, call xsok
after setting the
environment variable LANG
to the desired value. Currently, no
translated version is available.
(Directories may differ on your system.)
is one of Sokoban
Inspiration for xsok
came from xsokoban
, a previous implementation
of the Sokoban
game by Joseph L. Traub. From this game, the wall
graphics were taken, and the mouse button assignment. xsokoban
files can be used without change, but by default, all level files of a level
subset are combined into a single file. Of course, credits also go to the
unknown author of the curses based game.
levels (and a MSDOS game of the same name) are written by
The undo function is too slow. Highscore file handling uses no file locking.
zappers are implemented as one-way passages, which causes worse
scores and easier levels.
Please mail bug reports to firstname.lastname@example.org
. Fixes are especially
Copyright (c) 1994 by Michael Bischoff ( email@example.com
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation.
was developed under Linux, the free UNIX for the IBM-PC and
is distributed by terms of the GNU General public
license (GNU Copyleft).