Fuzev2: button_read_dbop() doesn't exist
[kugel-rb.git] / manual / plugins / sokoban.tex
blob15d7eaf15d526544d1d7eb0fb07a31655e879f0c
1 \subsection{Sokoban}
2 \screenshot{plugins/images/ss-sokoban}{Sokoban}{fig:sokoban}
4 The object of the game is to push boxes into their correct position in a
5 crowded warehouse with a minimal number of pushes and moves. The boxes
6 can only be pushed, never pulled, and only one can be pushed at a time.
8 Sokoban may be used as a viewer for viewing saved solutions and playing
9 external level sets with the \fname{.sok} extension. Level sets should be in
10 the standard Sokoban text format or RLE (Run Length Encoded). For more
11 information about the level format, see
12 \url{http://sokobano.de/wiki/index.php?title=Level_format}
14 \begin{table}
15 \begin{btnmap}{}{}
16 \multicolumn{2}{c}{\textbf{In game}} \\
17 \hline
18 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD%
19 ,IAUDIO_X5_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_E200_PAD%
20 ,SANSA_FUZE_PAD,SANSA_C200_PAD,PBELL_VIBE500_PAD}
21 {\ButtonUp, \ButtonDown, }%
22 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu, \ButtonPlay, }%
23 \opt{IRIVER_H10_PAD}{\ButtonScrollUp, \ButtonScrollDown, }%
24 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD%
25 ,IAUDIO_X5_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_E200_PAD%
26 ,SANSA_FUZE_PAD,SANSA_C200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IRIVER_H10_PAD,PBELL_VIBE500_PAD}
27 {\ButtonLeft, \ButtonRight}
28 \opt{COWON_D2_PAD}
29 {\TouchTopMiddle, \TouchBottomMiddle, \TouchMidLeft, \TouchMidRight}
30 \opt{HAVEREMOTEKEYMAP}{& }
31 & Move the ``sokoban'' up, down, left, or right\\
32 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
33 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
34 \opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
35 \opt{SANSA_FUZE_PAD}{Long \ButtonHome}
36 \opt{GIGABEAT_S_PAD,COWON_D2_PAD}{\ButtonMenu}
37 \opt{PBELL_VIBE500_PAD}{\ButtonRec}
38 \opt{HAVEREMOTEKEYMAP}{&
39 \opt{IRIVER_RC_H100_PAD}{\ButtonRCStop}
41 & Menu \\
42 \nopt{IAUDIO_X5_PAD}{
43 \opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFOne}
44 \opt{ONDIO_PAD}{\ButtonMenu+\ButtonLeft}
45 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonDown}
46 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonLeft}
47 \opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollDown}
48 \opt{GIGABEAT_PAD,SANSA_C200_PAD}{\ButtonVolDown}
49 \opt{MROBE10_PAD}{\ButtonDisplay}
50 \opt{SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonSelect+\ButtonDown}
51 \opt{GIGABEAT_S_PAD}{\ButtonPrev}
52 \opt{COWON_D2_PAD}{\ButtonMinus}
53 \opt{PBELL_VIBE500_PAD}{\ButtonOK+\ButtonLeft}
54 \opt{HAVEREMOTEKEYMAP}{& }
55 & Back to previous level \\
57 \nopt{IPOD_4G_PAD,IPOD_3G_PAD}{
58 \opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFTwo}
59 \opt{ONDIO_PAD}{\ButtonMenu+\ButtonUp}
60 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
61 \opt{IAUDIO_X5_PAD}{\ButtonRec}
62 \opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonRight}
63 \opt{GIGABEAT_PAD,MROBE100_PAD}{\ButtonMenu}
64 \opt{SANSA_E200_PAD,SANSA_FUZE_PAD,SANSA_C200_PAD}{\ButtonSelect+\ButtonRight}
65 \opt{GIGABEAT_S_PAD}{\ButtonPlay}
66 \opt{COWON_D2_PAD}{\TouchTopRight}
67 \opt{PBELL_VIBE500_PAD}{\ButtonOK+\ButtonCancel}
68 \opt{HAVEREMOTEKEYMAP}{& }
69 & Restart level \\
71 \nopt{IAUDIO_X5_PAD}{
72 \opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonFThree}
73 \opt{ONDIO_PAD}{\ButtonMenu+\ButtonRight}
74 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonUp}
75 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonRight}
76 \opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollUp}
77 \opt{GIGABEAT_PAD,SANSA_C200_PAD}{\ButtonVolUp}
78 \opt{GIGABEAT_S_PAD}{\ButtonNext}
79 \opt{MROBE100_PAD}{\ButtonPlay}
80 \opt{SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonSelect+\ButtonUp}
81 \opt{COWON_D2_PAD}{\ButtonPlus}
82 \opt{PBELL_VIBE500_PAD}{\ButtonOK+\ButtonRight}
83 \opt{HAVEREMOTEKEYMAP}{& }
84 & Go to next level \\
86 \opt{RECORDER_PAD,ARCHOS_AV300_PAD}{\ButtonOn}
87 \opt{ONDIO_PAD}{\ButtonMenu}
88 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec}
89 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD,SANSA_C200_PAD}{\ButtonSelect}
90 \opt{IRIVER_H10_PAD}{\ButtonRew}
91 \opt{GIGABEAT_S_PAD}{\ButtonVolUp}
92 \opt{COWON_D2_PAD}{\TouchTopRight}
93 \opt{PBELL_VIBE500_PAD}{\ButtonCancel}
94 \opt{HAVEREMOTEKEYMAP}{& }
95 & Undo last movement \\
97 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,IAUDIO_X5_PAD}{\ButtonPlay}
98 \opt{ONDIO_PAD}{\ButtonMenu+\ButtonDown}
99 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
100 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonPlay}
101 \opt{IRIVER_H10_PAD}{\ButtonFF}
102 \opt{GIGABEAT_PAD}{\ButtonA}
103 \opt{GIGABEAT_S_PAD}{\ButtonVolDown}
104 \opt{MROBE100_PAD}{\ButtonDisplay}
105 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonRec}
106 \opt{SANSA_FUZE_PAD}{\ButtonSelect+\ButtonLeft}
107 \opt{COWON_D2_PAD}{\TouchBottomLeft}
108 \opt{PBELL_VIBE500_PAD}{\ButtonOK}
109 \opt{HAVEREMOTEKEYMAP}{& }
110 & Redo previously undone move \\
111 \hline
112 \multicolumn{2}{c}{\textbf{Solution playback}} \\
113 \hline
114 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,IAUDIO_X5_PAD,IRIVER_H10_PAD}{\ButtonPlay}
115 \opt{ONDIO_PAD}{\ButtonMenu}
116 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
117 \opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD%
118 ,SANSA_E200_PAD,SANSA_FUZE_PAD,SANSA_C200_PAD}{\ButtonSelect}
119 \opt{COWON_D2_PAD}{\TouchCenter}
120 \opt{HAVEREMOTEKEYMAP}{& }
121 & Pause/resume \\
122 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD%
123 ,IAUDIO_X5_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_E200_PAD%
124 ,SANSA_FUZE_PAD,SANSA_C200_PAD}
125 {\ButtonUp/\ButtonDown}
126 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu/\ButtonPlay}
127 \opt{IRIVER_H10_PAD}{\ButtonScrollUp/\ButtonScrollDown}
128 \opt{COWON_D2_PAD}{\TouchTopMiddle/\TouchBottomMiddle}
129 \opt{HAVEREMOTEKEYMAP}{& }
130 & Increase/decrease playback speed \\
131 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,IAUDIO_X5_PAD,IRIVER_H10_PAD,ONDIO_PAD%
132 ,IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD%
133 ,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD,SANSA_C200_PAD}
134 {\ButtonLeft/\ButtonRight}
135 \opt{COWON_D2_PAD}{\TouchMidLeft/\TouchMidRight}
136 \opt{HAVEREMOTEKEYMAP}{& }
137 & Go backward/forward (while paused) \\
138 \opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
139 \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
140 \opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
141 \opt{SANSA_FUZE_PAD}{Long \ButtonHome}
142 \opt{GIGABEAT_S_PAD,COWON_D2_PAD}{\ButtonMenu}
143 \opt{HAVEREMOTEKEYMAP}{& }
144 & Quit \\
145 \end{btnmap}
146 \end{table}
148 Some places where can you can find level sets:
149 \begin{itemize}
150 \item \url{http://www.sourcecode.se/sokoban/levels.php}
151 \item \url{http://sokobano.de/en/levels.php}
152 \end{itemize}
153 Note that some level sets may contain levels that are too large for this
154 version of Sokoban and are unplayable as a result.