mirror of
https://github.com/tiennm99/sokoban.git
synced 2026-10-13 22:16:30 +00:00
feat(levels): ship the full 155-puzzle Microban set
Expand the level data from the first 100 Microban layouts to the complete
set, up through the two oversized finale mazes ("Take the long way home"
and "The Dungeon"). Responsive tile sizing already handles the large
grids — no rendering changes needed.
Update credit language in README, PDR, changelog, roadmap, codebase
summary, menu subtitle, and the data file header to reflect the full
set. Credit for David W. Skinner's layouts remains prominent; ownership
of the engine, UI, parser, and progression code stays explicit.
Verified all 155 layouts parse cleanly, have a player, matching box/goal
counts, and none start already solved.
This commit is contained in:
1 parent
97d43d0d57
commit
2ee7ac886a
7 files changed
+563
-9
No files matched your search
@@ -1,7 +1,8 @@
|
||||
/**
|
||||
* Puzzle layouts from the Microban level set by David W. Skinner
|
||||
* (April 2000, 155 puzzles, freely distributable with credit).
|
||||
* First 100 layouts shipped here — small, concept-focused puzzles.
|
||||
* The full 155-layout set is shipped here — from tiny beginner puzzles
|
||||
* up to the huge "Take the long way home" maze and "The Dungeon" finale.
|
||||
* Only the level designs are borrowed; the parser, renderer, and engine
|
||||
* are original code written for this project.
|
||||
* Source: http://users.bentonrea.com/~sasquatch/sokoban/
|
||||
@@ -825,5 +826,553 @@ export const MICROBAN_LEVELS = [
|
||||
#.$# #
|
||||
#. # $ #
|
||||
# # #
|
||||
########`
|
||||
########`,
|
||||
` #####
|
||||
# #
|
||||
# # #######
|
||||
# * # #
|
||||
## ## # #
|
||||
# #* #
|
||||
### # # # ###
|
||||
# *#$+ #
|
||||
# # ## ##
|
||||
# # * #
|
||||
####### # #
|
||||
# #
|
||||
#####`,
|
||||
`###########
|
||||
#....# #
|
||||
# # $$ #
|
||||
# @ ## #
|
||||
# ##$ #
|
||||
###### $ #
|
||||
# #
|
||||
######`,
|
||||
` #####
|
||||
# . ##
|
||||
### $ #
|
||||
# . $#@#
|
||||
# #$ . #
|
||||
# $ ###
|
||||
## . #
|
||||
#####`,
|
||||
` #####
|
||||
##### #
|
||||
# $ #
|
||||
# $#$#@#
|
||||
### # #
|
||||
# ... #
|
||||
### ##
|
||||
# #
|
||||
####`,
|
||||
` #### ####
|
||||
## ### ##
|
||||
# # # #
|
||||
# *. .* #
|
||||
###$ $###
|
||||
# @ #
|
||||
###$ $###
|
||||
# *. .* #
|
||||
# # # #
|
||||
## ### ##
|
||||
#### ####`,
|
||||
` ########
|
||||
# #
|
||||
#@ $ #
|
||||
## ###$ #
|
||||
# .....###
|
||||
# $ $ $ #
|
||||
###### # #
|
||||
# #
|
||||
#####`,
|
||||
`########
|
||||
# #
|
||||
# $*** #
|
||||
# * * #
|
||||
# * * #
|
||||
# ***. #
|
||||
# @#
|
||||
########`,
|
||||
`#### #####
|
||||
# ### # ##
|
||||
# # #$ $ #
|
||||
#..# ##### # #
|
||||
# @ # $ $ #
|
||||
#..# ##
|
||||
## #########
|
||||
#####`,
|
||||
` #######
|
||||
# # #
|
||||
# # # # #
|
||||
# @ $ #
|
||||
### ### #
|
||||
# ### #
|
||||
# $ ##.#
|
||||
## $ #.#
|
||||
## $ .#
|
||||
# ## $#.#
|
||||
## ## #.#
|
||||
### # #
|
||||
### #####`,
|
||||
` ####
|
||||
# #
|
||||
# $####
|
||||
###. . #
|
||||
# $ # $ #
|
||||
# . .###
|
||||
####$ #
|
||||
# @#
|
||||
####`,
|
||||
`######
|
||||
# ####
|
||||
# ...#
|
||||
# ...#
|
||||
###### #
|
||||
# # #
|
||||
# $$ ##
|
||||
# @$ #
|
||||
# $$ #
|
||||
## $# #
|
||||
# #
|
||||
######`,
|
||||
` #####
|
||||
## ####
|
||||
# $$$ #
|
||||
# # $ #
|
||||
# $## ##
|
||||
### #. #
|
||||
# # #
|
||||
##### ###
|
||||
# # ##
|
||||
# @....#
|
||||
# #
|
||||
# # #
|
||||
########`,
|
||||
` #####
|
||||
## #
|
||||
### # #
|
||||
# . #
|
||||
# ## #####
|
||||
# . . # ##
|
||||
# # @ $ ###
|
||||
#####. # $ #
|
||||
#### $ #
|
||||
## $ ##
|
||||
# ##
|
||||
# #
|
||||
####`,
|
||||
`######
|
||||
# ###
|
||||
# # $ #
|
||||
# $ @ #
|
||||
## ## #####
|
||||
# #......#
|
||||
# $ $ $ $ #
|
||||
## ######
|
||||
#####`,
|
||||
` #####
|
||||
##### ####
|
||||
# # #
|
||||
# #..... #
|
||||
## ## # ###
|
||||
#$$@$$$ #
|
||||
# ###
|
||||
#######`,
|
||||
` #####
|
||||
### #
|
||||
####.....#
|
||||
# @$$$$$ #
|
||||
# # ##
|
||||
##### #
|
||||
#####`,
|
||||
` #### ####
|
||||
# ### ##
|
||||
# @ #
|
||||
##..### #
|
||||
# # #
|
||||
#...#$ # #
|
||||
# ## $$ $ #
|
||||
# $ ###
|
||||
#### ###
|
||||
####`,
|
||||
` #####
|
||||
## ##
|
||||
# $ ##
|
||||
# $ $ ##
|
||||
###$# . ##
|
||||
# # . #
|
||||
## ##. #
|
||||
# @ . ##
|
||||
# # #
|
||||
########`,
|
||||
` ######
|
||||
# ##
|
||||
## ## #
|
||||
# $$ # #
|
||||
# @$ # #
|
||||
# # #
|
||||
#### # #
|
||||
# ... ##
|
||||
# ##
|
||||
#######`,
|
||||
` ####
|
||||
####### #
|
||||
# $ ##
|
||||
# $##### #
|
||||
# @# # #
|
||||
## ##.. #
|
||||
# # ..####
|
||||
# $ ###
|
||||
# $###
|
||||
# #
|
||||
####`,
|
||||
` ######
|
||||
# . #
|
||||
##$.# #
|
||||
# * #
|
||||
# ..###
|
||||
##$ # #####
|
||||
## ## # #
|
||||
# #### # #
|
||||
# @ $ $ #
|
||||
## # #
|
||||
##########`,
|
||||
`#####
|
||||
# ###
|
||||
# #$ #
|
||||
# $ #
|
||||
# $ $ #
|
||||
# $# #
|
||||
# @###
|
||||
## ########
|
||||
# ...#
|
||||
# #
|
||||
########..#
|
||||
####`,
|
||||
`########
|
||||
# #
|
||||
# $ $$ ########
|
||||
##### @##. . #
|
||||
#$ # . #
|
||||
# #. . ##
|
||||
#$# ## # #
|
||||
# #
|
||||
# ### ##
|
||||
# # ####
|
||||
####`,
|
||||
`##############
|
||||
# # #
|
||||
# $@$$ # . ..#
|
||||
## ## ### ## #
|
||||
# # # #
|
||||
# # # # #
|
||||
# ######### #
|
||||
# #
|
||||
#############`,
|
||||
` #####
|
||||
# ##
|
||||
# $ #
|
||||
######## #@##
|
||||
# . # $ $ #
|
||||
# $# #
|
||||
#...##### #
|
||||
##### #####`,
|
||||
` ###########
|
||||
##....... #
|
||||
# $$$$$$$@ #
|
||||
# # # # ##
|
||||
# # # #
|
||||
# #######
|
||||
#####`,
|
||||
`## ####
|
||||
#### ####
|
||||
# $ $. #
|
||||
## # .$ #
|
||||
# ##.###
|
||||
# $ . #
|
||||
# @ # #
|
||||
# ######
|
||||
####`,
|
||||
` #########
|
||||
### # #
|
||||
# * $ . . #
|
||||
# $ ## ##
|
||||
####*# #
|
||||
# @ ###
|
||||
# ###
|
||||
#####`,
|
||||
` #########
|
||||
### @ # #
|
||||
# * $ *.. #
|
||||
# $ # #
|
||||
####*# ###
|
||||
# ##
|
||||
# ###
|
||||
#####`,
|
||||
`##### #####
|
||||
# ####.. #
|
||||
# $$$ #
|
||||
# $# .. #
|
||||
### @# ## #
|
||||
# ## #
|
||||
##########`,
|
||||
`#####
|
||||
# #
|
||||
# . #
|
||||
#.@.###
|
||||
##.# #
|
||||
# $ #
|
||||
# $ #
|
||||
##$$ #
|
||||
# ###
|
||||
# #
|
||||
####`,
|
||||
`####
|
||||
# @###
|
||||
#.* #####
|
||||
#..#$$ $ #
|
||||
## #
|
||||
# # ## #
|
||||
# #####
|
||||
#####`,
|
||||
` #######
|
||||
# . .###
|
||||
# . . . #
|
||||
### #### #
|
||||
# @$ $ #
|
||||
# $$ $ #
|
||||
#### ###
|
||||
#####`,
|
||||
` ####
|
||||
######### #
|
||||
# ## $ #
|
||||
# $ ## #
|
||||
### #. .# ##
|
||||
# #. .#$##
|
||||
# # # #
|
||||
# @ $ #
|
||||
# #######
|
||||
####`,
|
||||
`#######
|
||||
# #####
|
||||
# $$#@##..#
|
||||
# # #
|
||||
# $ # # #
|
||||
#### $ ..#
|
||||
########`,
|
||||
` #######
|
||||
# #
|
||||
## ###$##
|
||||
#.$ @ #
|
||||
# .. #$ #
|
||||
#.## $ #
|
||||
# ####
|
||||
######`,
|
||||
` ####
|
||||
## ###
|
||||
#### # $ #
|
||||
# #### $ $ #
|
||||
# ..# #$ #
|
||||
# # @ ###
|
||||
## #..# ###
|
||||
# ## # #
|
||||
# #
|
||||
########`,
|
||||
` ####
|
||||
### #
|
||||
# ###
|
||||
# # . .#
|
||||
# @ ...####
|
||||
# # # # ##
|
||||
# # $$ #
|
||||
##### $ $ #
|
||||
##$ # ##
|
||||
# #
|
||||
######`,
|
||||
` ####
|
||||
## ####
|
||||
# ...#
|
||||
# ...#
|
||||
# # ##
|
||||
# #@ #### ####
|
||||
##### $ ### #
|
||||
# ##$ $ #
|
||||
### $$ #
|
||||
# $ ## ###
|
||||
# ######
|
||||
######`,
|
||||
`######## #####
|
||||
# # ### #
|
||||
# ## $ #
|
||||
#.# @ ## $ ##
|
||||
#.# # $ ##
|
||||
#.# $ ##
|
||||
#. ## #####
|
||||
## #
|
||||
######`,
|
||||
` ########
|
||||
# # . #
|
||||
# .*.#
|
||||
# # * #
|
||||
####$##.##
|
||||
# $ #
|
||||
# $ ## $ #
|
||||
# @# #
|
||||
##########`,
|
||||
` ####
|
||||
# #
|
||||
# ####
|
||||
###$.$ #
|
||||
# .@. #
|
||||
# $.$###
|
||||
#### #
|
||||
# #
|
||||
####`,
|
||||
`####
|
||||
# ####
|
||||
# $ #
|
||||
# .# #
|
||||
# $# ##
|
||||
# . #
|
||||
#### #
|
||||
# #
|
||||
### ###
|
||||
# $ #
|
||||
## #$# ##
|
||||
# $ @ $ #
|
||||
# ..#.. #
|
||||
### ###
|
||||
#####`,
|
||||
` ####
|
||||
### #####
|
||||
# $$ # #
|
||||
# $ . .$$##
|
||||
# .. #. $ #
|
||||
### #** . #
|
||||
# . **# ###
|
||||
# $ .# .. #
|
||||
##$$.@. $ #
|
||||
# # $$ #
|
||||
##### ###
|
||||
####`,
|
||||
` #####
|
||||
# @ #
|
||||
## ##
|
||||
###.$$$.###
|
||||
# $...$ #
|
||||
# $.#.$ #
|
||||
# $...$ #
|
||||
###.$$$.###
|
||||
## ##
|
||||
# #
|
||||
#####`,
|
||||
` #######
|
||||
## . ##
|
||||
# .$$$. #
|
||||
# $. .$ #
|
||||
#.$ @ $.#
|
||||
# $. .$ #
|
||||
# .$$$. #
|
||||
## . ##
|
||||
#######`,
|
||||
` #####
|
||||
######## #
|
||||
#. . @#.#
|
||||
# ### #
|
||||
## $ # #
|
||||
# $ #####
|
||||
# $# #
|
||||
## # #
|
||||
# ##
|
||||
#####`,
|
||||
`###########
|
||||
# . # #
|
||||
# #. @ #
|
||||
# #..# #######
|
||||
## ## $$ $ $ #
|
||||
## #
|
||||
#############`,
|
||||
` ####
|
||||
## ###
|
||||
#@$ #
|
||||
### $ #
|
||||
# ######
|
||||
# $....#
|
||||
# # ####
|
||||
## # #
|
||||
# $# #
|
||||
# #
|
||||
# ###
|
||||
####`,
|
||||
` ####
|
||||
##### #
|
||||
# $#######
|
||||
## ## ..# ...#
|
||||
# $ $$#$ @ #
|
||||
# ### #
|
||||
####### # ####
|
||||
####`,
|
||||
` ####
|
||||
# #
|
||||
### #
|
||||
## $ #
|
||||
# # #
|
||||
# #$$ ######
|
||||
# # # .#
|
||||
# $ @ .#
|
||||
### ####..#
|
||||
#### ####`,
|
||||
`###### ####
|
||||
# # #
|
||||
#.## #$## #
|
||||
# # # #
|
||||
#$ # ### # #
|
||||
# # # # #
|
||||
# # #### # # #
|
||||
#. @ $ * . #
|
||||
###############`,
|
||||
`#############
|
||||
#.# @# # #
|
||||
#.#$$ # $ #
|
||||
#.# # $# #
|
||||
#.# $# # $##
|
||||
#.# # $# #
|
||||
#.# $# # $#
|
||||
#.. # $ #
|
||||
#.. # # #
|
||||
############`,
|
||||
` ############################
|
||||
# #
|
||||
# ######################## #
|
||||
# # # #
|
||||
# # #################### # #
|
||||
# # # # # #
|
||||
# # # ################ # # #
|
||||
# # # # # # # #
|
||||
# # # # ############ # # # #
|
||||
# # # # # # # # #
|
||||
# # # # # ############ # # #
|
||||
# # # # # # # #
|
||||
# # # # ################ # #
|
||||
# # # # # #
|
||||
##$# # #################### #
|
||||
#. @ # #
|
||||
#############################`,
|
||||
` ###### ####
|
||||
#####*# ################# ##
|
||||
# ### #
|
||||
# ######## #### ## #
|
||||
### #### # #### #### ##
|
||||
#*# # .# # # # # # #
|
||||
#*# # # # ## # ## ## #
|
||||
### ### ### # ## # ## ##
|
||||
# # #*# # # # #
|
||||
# # ### ##### #### # #
|
||||
##### ##### ####### ######
|
||||
# # # #**# #
|
||||
## # # #**# ####### ## #
|
||||
# ######### # ##### ###
|
||||
# # # $ #*#
|
||||
# ######### ### @##### #*#
|
||||
##### #### #### ######`
|
||||
];
|
||||
@@ -19,7 +19,7 @@ export default class MenuScene extends Phaser.Scene {
|
||||
const cy = this.cameras.main.centerY;
|
||||
|
||||
this.add.text(cx, cy - 200, 'SOKOBAN', FONTS.title).setOrigin(0.5);
|
||||
this.add.text(cx, cy - 130, '100 puzzles to solve', FONTS.subtitle).setOrigin(0.5);
|
||||
this.add.text(cx, cy - 130, '155 puzzles to solve', FONTS.subtitle).setOrigin(0.5);
|
||||
|
||||
createButton(this, cx, cy - 20, 'PLAY', () => this.scene.start('LevelScene'), { width: 240, height: 64 });
|
||||
|
||||
|
||||
Reference in new issue
Block a user