rockbox/manual/plugins/sokoban.tex
Alex Parker 8d194f08d7 Add a generic \opt{HAVEREMOTEKEYMAP}{& } to button maps to allow all
manuals with HAVEREMOTEKEYMAP defined to build, regardless of whether 
tables have been edited for the specific remote keymap.  The actual 
button can be added inside this opt.

Change many IRIVER_RC_H100_PAD opts to the generic HAVEREMOTEKEYMAP


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21997 a1c6a512-1295-4272-9138-f99709370657
2009-07-22 18:08:51 +00:00

125 lines
5.3 KiB
TeX

\subsection{Sokoban}
\screenshot{plugins/images/ss-sokoban}{Sokoban}{fig:sokoban}
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.
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}
\begin{table}
\begin{btnmap}{}{}
\multicolumn{2}{c}{\textbf{In game}} \\
\hline
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD%
,IAUDIO_X5_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}
{\ButtonUp, \ButtonDown, }%
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu, \ButtonPlay, }%
\opt{IRIVER_H10_PAD}{\ButtonScrollUp, \ButtonScrollDown, }%
\ButtonLeft, \ButtonRight
\opt{HAVEREMOTEKEYMAP}{& }
& Move the ``sokoban'' up, down, left, or right\\
\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,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
\opt{GIGABEAT_S_PAD}{\ButtonMenu}
\opt{HAVEREMOTEKEYMAP}{& }
& Menu \\
\nopt{IAUDIO_X5_PAD}{
\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}
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollDown}
\opt{GIGABEAT_PAD,SANSA_C200_PAD}{\ButtonVolDown}
\opt{MROBE10_PAD}{\ButtonDisplay}
\opt{SANSA_E200_PAD}{\ButtonSelect+\ButtonDown}
\opt{GIGABEAT_S_PAD}{\ButtonPrev}
\opt{HAVEREMOTEKEYMAP}{& }
& Back to previous level \\
}
\nopt{IPOD_4G_PAD,IPOD_3G_PAD}{
\opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFTwo}
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonUp}
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
\opt{IAUDIO_X5_PAD}{\ButtonRec}
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonRight}
\opt{GIGABEAT_PAD,MROBE100_PAD}{\ButtonMenu}
\opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonSelect+\ButtonRight}
\opt{GIGABEAT_S_PAD}{\ButtonPlay}
\opt{HAVEREMOTEKEYMAP}{& }
& Restart level \\
}
\nopt{IAUDIO_X5_PAD}{
\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}
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollUp}
\opt{GIGABEAT_PAD,SANSA_C200_PAD}{\ButtonVolUp}
\opt{GIGABEAT_S_PAD}{\ButtonNext}
\opt{MROBE100_PAD}{\ButtonPlay}
\opt{SANSA_E200_PAD}{\ButtonSelect+\ButtonUp}
\opt{HAVEREMOTEKEYMAP}{& }
& Go to next level \\
}
\opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonOn}
\opt{ONDIO_PAD}{\ButtonMenu}
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec}
\opt{IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonSelect}
\opt{IRIVER_H10_PAD}{\ButtonRew}
\opt{GIGABEAT_S_PAD}{\ButtonVolUp}
\opt{HAVEREMOTEKEYMAP}{& }
& Undo last movement \\
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,IAUDIO_X5_PAD}{\ButtonPlay}
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonDown}
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonPlay}
\opt{IRIVER_H10_PAD}{\ButtonFF}
\opt{GIGABEAT_PAD}{\ButtonA}
\opt{GIGABEAT_S_PAD}{\ButtonVolDown}
\opt{MROBE100_PAD}{\ButtonDisplay}
\opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonRec}
\opt{HAVEREMOTEKEYMAP}{& }
& Redo previously undone move \\
\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,GIGABEAT_S_PAD,MROBE100_PAD%
,SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonSelect}
\opt{HAVEREMOTEKEYMAP}{& }
& Pause/resume \\
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD%
,IAUDIO_X5_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}
{\ButtonUp/\ButtonDown}
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu/\ButtonPlay}
\opt{IRIVER_H10_PAD}{\ButtonScrollUp/\ButtonScrollDown}
\opt{HAVEREMOTEKEYMAP}{& }
& Increase/decrease playback speed \\
\ButtonLeft/\ButtonRight
\opt{HAVEREMOTEKEYMAP}{& }
& 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,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
\opt{GIGABEAT_S_PAD}{\ButtonMenu}
\opt{HAVEREMOTEKEYMAP}{& }
& Quit \\
\end{btnmap}
\end{table}
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}
Note that some level sets may contain levels that are too large for this
version of Sokoban and are unplayable as a result.