Apply FS #6702: More Sokoban Improvements.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13731 a1c6a512-1295-4272-9138-f99709370657
|
@ -42,7 +42,7 @@ plugins/*.pl
|
||||||
plugins/Makefile
|
plugins/Makefile
|
||||||
plugins/plugin.lds
|
plugins/plugin.lds
|
||||||
plugins/snake2.levels
|
plugins/snake2.levels
|
||||||
plugins/sokoban.levels
|
plugins/sokobanlevels.sok
|
||||||
plugins/viewers.config
|
plugins/viewers.config
|
||||||
plugins/SOURCES
|
plugins/SOURCES
|
||||||
plugins/SUBDIRS
|
plugins/SUBDIRS
|
||||||
|
|
|
@ -331,11 +331,13 @@ sokoban_tiles.14x14.bmp
|
||||||
#elif (LCD_HEIGHT >= 144) && (LCD_WIDTH >= 212) || \
|
#elif (LCD_HEIGHT >= 144) && (LCD_WIDTH >= 212) || \
|
||||||
(LCD_HEIGHT >= 169) && (LCD_WIDTH >= 180-4)
|
(LCD_HEIGHT >= 169) && (LCD_WIDTH >= 180-4)
|
||||||
sokoban_tiles.9x9.bmp
|
sokoban_tiles.9x9.bmp
|
||||||
#else
|
#elif (LCD_HEIGHT >= 96 && LCD_WIDTH >= 152) || \
|
||||||
/* LCD_HEIGHT >= 96~121 && LCD_WIDTH >= 152~120 */
|
(LCD_HEIGHT >= 121 && LCD_WIDTH >= 120)
|
||||||
sokoban_tiles.6x6.bmp
|
sokoban_tiles.6x6.bmp
|
||||||
#endif
|
#endif
|
||||||
#elif LCD_DEPTH >= 2
|
#elif LCD_DEPTH >= 2 && \
|
||||||
|
((LCD_HEIGHT >= 96 && LCD_WIDTH >= 152) || \
|
||||||
|
(LCD_HEIGHT >= 121 && LCD_WIDTH >= 120))
|
||||||
sokoban_tiles.6x6x2.bmp
|
sokoban_tiles.6x6x2.bmp
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
1277
apps/plugins/sokobanlevels.sok
Normal file
|
@ -16,6 +16,7 @@ m3u,viewers/iriverify,-
|
||||||
mid,viewers/midiplay,7
|
mid,viewers/midiplay,7
|
||||||
rmi,viewers/midiplay,7
|
rmi,viewers/midiplay,7
|
||||||
rsp,viewers/searchengine,8
|
rsp,viewers/searchengine,8
|
||||||
|
sok,rocks/sokoban,1
|
||||||
pgn,rocks/chessbox,1
|
pgn,rocks/chessbox,1
|
||||||
ss,rocks/sudoku,1
|
ss,rocks/sudoku,1
|
||||||
wav,viewers/wav2wv,-
|
wav,viewers/wav2wv,-
|
||||||
|
|
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 353 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 665 B |
Before Width: | Height: | Size: 481 B After Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 699 B |
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 615 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 709 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 875 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 888 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 972 B |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -5,44 +5,75 @@ 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
|
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.
|
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{table}
|
||||||
\begin{btnmap}{}{}
|
\begin{btnmap}{}{}
|
||||||
\opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD}
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,SANSA_E200_PAD}
|
||||||
{\ButtonUp, \ButtonDown,}
|
{\ButtonUp, \ButtonDown,}
|
||||||
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu, \ButtonPlay,}
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu, \ButtonPlay,}
|
||||||
\opt{IRIVER_H10_PAD}{\ButtonScrollUp, \ButtonScrollDown,}
|
\opt{IRIVER_H10_PAD}{\ButtonScrollUp, \ButtonScrollDown,}
|
||||||
\ButtonLeft, \ButtonRight
|
\ButtonLeft, \ButtonRight
|
||||||
& Move the ``sokoban'' up, down, left or right\\
|
& Move the ``sokoban'' up, down, left or right\\
|
||||||
\opt{RECORDER_PAD}{\ButtonFOne}
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
|
||||||
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonLeft}
|
|
||||||
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec}
|
|
||||||
\opt{IPOD_4G_PAD,IPOD_3G_PAD,SANSA_E200_PAD}{\ButtonSelect+\ButtonLeft}
|
|
||||||
\opt{IAUDIO_X5_PAD}{\ButtonPlay+\ButtonDown}
|
|
||||||
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollDown}
|
|
||||||
& Back to previous level \\
|
|
||||||
\opt{RECORDER_PAD}{\ButtonFTwo}
|
|
||||||
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonRight}
|
|
||||||
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonSelect}
|
|
||||||
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonPlay}
|
|
||||||
\opt{IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonRec}
|
|
||||||
\opt{IRIVER_H10_PAD}{\ButtonFF}
|
|
||||||
& Restart level \\
|
|
||||||
\opt{RECORDER_PAD}{\ButtonFThree}
|
|
||||||
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonUp}
|
|
||||||
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
|
|
||||||
\opt{IPOD_4G_PAD,IPOD_3G_PAD,SANSA_E200_PAD}{\ButtonSelect+\ButtonRight}
|
|
||||||
\opt{IAUDIO_X5_PAD}{\ButtonPlay+\ButtonUp}
|
|
||||||
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollUp}
|
|
||||||
& Go to next level \\
|
|
||||||
\opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
|
|
||||||
\opt{ONDIO_PAD}{\ButtonMenu}
|
|
||||||
\opt{IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD}{\ButtonSelect}
|
|
||||||
\opt{IRIVER_H10_PAD}{\ButtonRew}
|
|
||||||
\opt{SANSA_E200_PAD}{\ButtonUp}
|
|
||||||
& Undo last movement \\
|
|
||||||
\opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
|
|
||||||
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
|
||||||
\opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,SANSA_E200_PAD}{\ButtonPower}
|
\opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,GIGABEAT_PAD,SANSA_E200_PAD}{\ButtonPower}
|
||||||
& Exit sokoban \\
|
& Menu \\
|
||||||
|
\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,SANSA_E200_PAD}{\ButtonSelect}
|
||||||
|
\opt{IRIVER_H10_PAD}{\ButtonRew}
|
||||||
|
& Undo last movement \\
|
||||||
|
\opt{RECORDER_PAD,ARCHOS_AV300_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{IAUDIO_X5_PAD}{n/a}
|
||||||
|
\opt{IRIVER_H10_PAD}{\ButtonFF}
|
||||||
|
\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}
|
||||||
|
\opt{IAUDIO_X5_PAD}{\ButtonRec}
|
||||||
|
\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}
|
||||||
|
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonUp}
|
||||||
|
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
|
||||||
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD}{n/a}
|
||||||
|
\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}
|
||||||
|
\opt{IAUDIO_X5_PAD}{\ButtonPlay}
|
||||||
|
\opt{IRIVER_H10_PAD}{\ButtonPlay+\ButtonScrollUp}
|
||||||
|
\opt{GIGABEAT_PAD}{\ButtonVolUp}
|
||||||
|
\opt{SANSA_E200_PAD}{\ButtonSelect+\ButtonUp}
|
||||||
|
& Go to next level \\
|
||||||
|
\opt{RECORDER_PAD,ARCHOS_AV300_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,GIGABEAT_PAD,SANSA_E200_PAD}
|
||||||
|
{\ButtonUp/\ButtonDown,}
|
||||||
|
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu/\ButtonPlay,}
|
||||||
|
\opt{IRIVER_H10_PAD}{\ButtonScrollUp/\ButtonScrollDown,}
|
||||||
|
& Increase/decrease solution playback speed
|
||||||
\end{btnmap}
|
\end{btnmap}
|
||||||
\end{table}
|
\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}
|
||||||
|
|
|
@ -329,7 +329,7 @@ STOP
|
||||||
`cp $ROOT/apps/tagnavi.config .rockbox/`;
|
`cp $ROOT/apps/tagnavi.config .rockbox/`;
|
||||||
|
|
||||||
if($bitmap) {
|
if($bitmap) {
|
||||||
`cp $ROOT/apps/plugins/sokoban.levels .rockbox/rocks/`; # sokoban levels
|
`cp $ROOT/apps/plugins/sokobanlevels.sok .rockbox/rocks/`; # sokoban levels
|
||||||
`cp $ROOT/apps/plugins/snake2.levels .rockbox/rocks/`; # snake2 levels
|
`cp $ROOT/apps/plugins/snake2.levels .rockbox/rocks/`; # snake2 levels
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|