2006-02-11 01:29:51 +00:00
|
|
|
\subsection{Sokoban}
|
2006-04-02 17:29:44 +00:00
|
|
|
\screenshot{plugins/images/ss-sokoban}{Sokoban}{fig:sokoban}
|
2006-02-11 01:29:51 +00:00
|
|
|
|
|
|
|
The object of the game is to push boxes into their correct position in a
|
|
|
|
crowded warehouse with a minimal number of pushes and moves. The boxes
|
|
|
|
can only be pushed, never pulled, and only one can be pushed at a time.
|
|
|
|
|
2007-06-28 20:45:00 +00:00
|
|
|
Sokoban may be used as a viewer for viewing saved solutions and playing
|
|
|
|
external level sets with the \fname{.sok} extension. Level sets should be in
|
|
|
|
the standard Sokoban text format or RLE (Run Length Encoded). For more
|
|
|
|
information about the level format, see
|
|
|
|
\url{http://sokobano.de/wiki/index.php?title=Level_format}
|
|
|
|
|
2006-04-03 22:45:01 +00:00
|
|
|
\begin{table}
|
|
|
|
\begin{btnmap}{}{}
|
2007-06-29 19:52:13 +00:00
|
|
|
\multicolumn{2}{c}{\textbf{In game}} \\
|
|
|
|
\hline
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,SANSA_E200_PAD}
|
2007-06-29 19:52:13 +00:00
|
|
|
{\ButtonUp, \ButtonDown, }%
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu, \ButtonPlay, }%
|
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonScrollUp, \ButtonScrollDown, }%
|
2006-06-04 16:32:50 +00:00
|
|
|
\ButtonLeft, \ButtonRight
|
2007-06-29 19:52:13 +00:00
|
|
|
& Move the ``sokoban'' up, down, left, or right\\
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
|
|
|
|
\opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,GIGABEAT_PAD,SANSA_E200_PAD}{\ButtonPower}
|
|
|
|
& Menu \\
|
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonOn}
|
|
|
|
\opt{ONDIO_PAD}{\ButtonMenu}
|
2006-06-04 16:32:50 +00:00
|
|
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,SANSA_E200_PAD}{\ButtonSelect}
|
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonRew}
|
|
|
|
& Undo last movement \\
|
2007-06-29 19:52:13 +00:00
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,IAUDIO_X5_PAD}{\ButtonPlay}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonDown}
|
|
|
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
|
2006-08-23 17:10:08 +00:00
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonPlay}
|
2006-10-17 14:43:39 +00:00
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonFF}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{GIGABEAT_PAD}{\ButtonA}
|
|
|
|
\opt{SANSA_E200_PAD}{\ButtonRec}
|
|
|
|
& Redo previously undone move \\
|
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFOne}
|
|
|
|
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonLeft}
|
|
|
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonDown}
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonLeft}
|
2007-06-29 19:52:13 +00:00
|
|
|
\opt{IAUDIO_X5_PAD}{n/a}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollDown}
|
|
|
|
\opt{GIGABEAT_PAD}{\ButtonVolDown}
|
|
|
|
\opt{SANSA_E200_PAD}{\ButtonSelect+\ButtonDown}
|
|
|
|
& Back to previous level \\
|
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFTwo}
|
2006-06-04 16:32:50 +00:00
|
|
|
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonUp}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
|
2007-06-29 19:52:13 +00:00
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{n/a}
|
|
|
|
\opt{IAUDIO_X5_PAD}{\ButtonRec}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonRight}
|
|
|
|
\opt{GIGABEAT_PAD}{\ButtonMenu}
|
|
|
|
\opt{SANSA_E200_PAD}{\ButtonSelect+\ButtonRight}
|
|
|
|
& Restart level \\
|
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFThree}
|
|
|
|
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonRight}
|
|
|
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonUp}
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonRight}
|
2007-06-29 19:52:13 +00:00
|
|
|
\opt{IAUDIO_X5_PAD}{n/a}
|
2006-10-17 14:43:39 +00:00
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollUp}
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{GIGABEAT_PAD}{\ButtonVolUp}
|
|
|
|
\opt{SANSA_E200_PAD}{\ButtonSelect+\ButtonUp}
|
2006-06-04 16:32:50 +00:00
|
|
|
& Go to next level \\
|
2007-06-29 19:52:13 +00:00
|
|
|
\hline
|
|
|
|
\multicolumn{2}{c}{\textbf{Solution playback}} \\
|
|
|
|
\hline
|
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,IAUDIO_X5_PAD,IRIVER_H10_PAD}{\ButtonPlay}
|
|
|
|
\opt{ONDIO_PAD}{\ButtonMenu}
|
|
|
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,SANSA_E200_PAD}{\ButtonSelect}
|
|
|
|
& Pause/resume \\
|
2007-06-28 20:45:00 +00:00
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,SANSA_E200_PAD}
|
2007-06-29 19:52:13 +00:00
|
|
|
{\ButtonUp/\ButtonDown}
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu/\ButtonPlay}
|
|
|
|
\opt{IRIVER_H10_PAD}{\ButtonScrollUp/\ButtonScrollDown}
|
|
|
|
& Increase/decrease playback speed \\
|
|
|
|
\ButtonLeft/\ButtonRight
|
|
|
|
& Go backward/forward (while paused) \\
|
|
|
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
|
|
|
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
|
|
|
|
\opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,GIGABEAT_PAD,SANSA_E200_PAD}{\ButtonPower}
|
|
|
|
& Quit \\
|
2006-04-03 22:45:01 +00:00
|
|
|
\end{btnmap}
|
2006-02-28 16:33:04 +00:00
|
|
|
\end{table}
|
2007-06-28 20:45:00 +00:00
|
|
|
|
|
|
|
Some places where can you can find level sets:
|
|
|
|
\begin{itemize}
|
|
|
|
\item \url{http://www.sourcecode.se/sokoban/levels.php}
|
|
|
|
\item \url{http://sokobano.de/en/levels.php}
|
|
|
|
\end{itemize}
|
2007-06-29 19:52:13 +00:00
|
|
|
Note that some level sets may contain levels that are too large for this
|
|
|
|
version of Sokoban and are unplayable as a result.
|