Skip to content

Instantly share code, notes, and snippets.

@chz16
Last active June 1, 2019 05:53
Show Gist options
  • Save chz16/27dd0bffc23df5438d5ae2343453b261 to your computer and use it in GitHub Desktop.
Save chz16/27dd0bffc23df5438d5ae2343453b261 to your computer and use it in GitHub Desktop.
Single Map Symbol Microban code
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Single Map Symbol Microban
author David Skinner
homepage www.sneezingtiger.com/sokoban/levels/microbanText.html
run_rules_on_level_start
(
My favourite set of sokoban levels - here're the first ten of the Microban set.
I tried contacting this guy, but he seems to have vanished from the net. The levels are in lots of places online, so I'm just chancing my arm by including them. BUT BE WARNED.
)
========
OBJECTS
========
Background
LIGHTGREEN GREEN
11111
01111
11101
11111
10111
Target
DarkBlue
.....
.000.
.0.0.
.000.
.....
Wall
BROWN DARKBROWN
00010
11111
01000
11111
00010
Player
Black Orange White Blue
.000.
.111.
22222
.333.
.3.3.
Crate
Orange Yellow
00000
0...0
0...0
0...0
00000
Generated
Transparent
UpperLeft
Transparent
WidthTwo
Transparent
WidthThree
Transparent
WidthFour
Transparent
WidthFive
Transparent
WidthSix
Transparent
WidthSeven
Transparent
WidthEight
Transparent
WidthNine
Transparent
WidthTen
Transparent
WidthEleven
Transparent
WidthTwelve
Transparent
HeightTwo
Transparent
HeightThree
Transparent
HeightFour
Transparent
HeightFive
Transparent
HeightSix
Transparent
HeightSeven
Transparent
HeightEight
Transparent
HeightNine
Transparent
HeightTen
Transparent
HeightEleven
Transparent
HeightTwelve
Transparent
LevelOne
Transparent
LevelTwo
Transparent
LevelThree
Transparent
LevelFour
Transparent
LevelFive
Transparent
LevelSix
Transparent
LevelSeven
Transparent
LevelEight
Transparent
LevelNine
Transparent
LevelTen
Transparent
=======
LEGEND
=======
. = Background
LevelToken = LevelOne or LevelTwo or LevelThree or LevelFour or LevelFive or LevelSix or LevelSeven or LevelEight or LevelNine or LevelTen
=======
SOUNDS
=======
Crate MOVE 36772507
endlevel 83744503
startgame 92244503
================
COLLISIONLAYERS
================
Background
Target
Player, Wall, Crate
UpperLeft, WidthTwo, WidthThree, WidthFour, WidthFive, WidthSix, WidthSeven, WidthEight, WidthNine, WidthTen, WidthEleven, WidthTwelve, HeightTwo, HeightThree, HeightFour, HeightFive, HeightSix, HeightSeven, HeightEight, HeightNine, HeightTen, HeightEleven, HeightTwelve
LevelToken
Generated
======
RULES
======
(If we haven't generated the level yet, then first find the upper left corner)
(We do this by placing a single token somewhere on the playing field with random and then moving it left and up as far as it will go)
random [ ] -> [ UpperLeft ]
[ Generated ] [ UpperLeft ] -> [ Generated ] [ ]
RIGHT [ | UpperLeft ] -> [ UpperLeft | ]
DOWN [ | UpperLeft ] -> [ UpperLeft | ]
(From the upper left corner, we can now measure the dimensions of the level by sending manual counter objects out right and down until there isn't a free space any more)
RIGHT [ UpperLeft | ] -> [ UpperLeft | WidthTwo ]
RIGHT [ WidthTwo | ] -> [ | WidthThree ]
RIGHT [ WidthThree | ] -> [ | WidthFour ]
RIGHT [ WidthFour | ] -> [ | WidthFive ]
RIGHT [ WidthFive | ] -> [ | WidthSix ]
RIGHT [ WidthSix | ] -> [ | WidthSeven ]
RIGHT [ WidthSeven | ] -> [ | WidthEight ]
RIGHT [ WidthEight | ] -> [ | WidthNine ]
RIGHT [ WidthNine | ] -> [ | WidthTen ]
RIGHT [ WidthTen | ] -> [ | WidthEleven ]
RIGHT [ WidthEleven | ] -> [ | WidthTwelve ]
DOWN [ UpperLeft | ] -> [ UpperLeft | HeightTwo ]
DOWN [ HeightTwo | ] -> [ | HeightThree ]
DOWN [ HeightThree | ] -> [ | HeightFour ]
DOWN [ HeightFour | ] -> [ | HeightFive ]
DOWN [ HeightFive | ] -> [ | HeightSix ]
DOWN [ HeightSix | ] -> [ | HeightSeven ]
DOWN [ HeightSeven | ] -> [ | HeightEight ]
DOWN [ HeightEight | ] -> [ | HeightNine ]
DOWN [ HeightNine | ] -> [ | HeightTen ]
DOWN [ HeightTen | ] -> [ | HeightEleven ]
DOWN [ HeightEleven | ] -> [ | HeightTwelve ]
(Each level has unique dimensions, so we can use those measurements to figure out what level we're on)
(This did require padding a couple of levels to enforce uniqueness)
[ UpperLeft ] [ WidthSeven ] [ HeightSeven ] -> [ UpperLeft LevelOne ] [ ] [ ]
[ UpperLeft ] [ WidthSix ] [ HeightSeven ] -> [ UpperLeft LevelTwo ] [ ] [ ]
[ UpperLeft ] [ WidthNine ] [ HeightSix ] -> [ UpperLeft LevelThree ] [ ] [ ]
[ UpperLeft ] [ WidthEight ] [ HeightSix ] -> [ UpperLeft LevelFour ] [ ] [ ]
[ UpperLeft ] [ WidthEight ] [ HeightSeven ] -> [ UpperLeft LevelFive ] [ ] [ ]
[ UpperLeft ] [ WidthTwelve ] [ HeightSix ] -> [ UpperLeft LevelSix ] [ ] [ ]
[ UpperLeft ] [ WidthSeven ] [ HeightEight ] -> [ UpperLeft LevelSeven ] [ ] []
[ UpperLeft ] [ WidthEight ] [ HeightTwelve ] -> [ UpperLeft LevelEight ] [ ] [ ]
[ UpperLeft ] [ WidthSix ] [ HeightEight ] -> [ UpperLeft LevelNine ] [ ] [ ]
[ UpperLeft ] [ WidthEleven ] [ HeightEight ] -> [ UpperLeft LevelTen ] [ ] [ ]
(Now we make the levels)
(We make each level just by proceeding one row at a time, from top to bottom, and placing all the objects that should appear in that row)
(We do the row scan by using the level counter token, which starts in the upper left, as an anchor from which to build out the current row, and then moving it down by a single row [again by using random] before starting over again)
(Level 1
.####..
.#.O#..
.#..###
.#@P..#
.#..*.#
.#..###
.####..)
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | Wall | Wall | Wall | | ]
random DOWN [ LevelOne | ] -> [ | LevelOne ]
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | | Target | Wall | | ]
random DOWN [ LevelOne | ] -> [ | LevelOne ]
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | | | Wall | Wall | Wall ]
random DOWN [ LevelOne | ] -> [ | LevelOne ]
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | Crate Target | Player | | | Wall ]
random DOWN [ LevelOne | ] -> [ | LevelOne ]
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | | | Crate | | Wall ]
random DOWN [ LevelOne | ] -> [ | LevelOne ]
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | | | Wall | Wall | Wall ]
random DOWN [ LevelOne | ] -> [ | LevelOne ]
RIGHT [ LevelOne | | | | | | ] -> [ LevelOne | Wall | Wall | Wall | Wall | | ]
(Level 2
######
#....#
#.#P.#
#.*@.#
#.O@.#
#....#
######)
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelTwo | ] -> [ | LevelTwo ]
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | | | | | Wall ]
random DOWN [ LevelTwo | ] -> [ | LevelTwo ]
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | | Wall | Player | | Wall ]
random DOWN [ LevelTwo | ] -> [ | LevelTwo ]
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | | Crate | Crate Target | | Wall ]
random DOWN [ LevelTwo | ] -> [ | LevelTwo ]
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | | Target | Crate Target | | Wall ]
random DOWN [ LevelTwo | ] -> [ | LevelTwo ]
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | | | | | Wall ]
random DOWN [ LevelTwo | ] -> [ | LevelTwo ]
RIGHT [ LevelTwo | | | | | ] -> [ LevelTwo Wall | Wall | Wall | Wall | Wall | Wall ]
(Level 3
..####...
###..####
#.....*.#
#.#..#*.#
#.O.O#P.#
#########)
RIGHT [ LevelThree | | | | | | | | ] -> [ LevelThree | | Wall | Wall | Wall | Wall | | | ]
random DOWN [ LevelThree | ] -> [ | LevelThree ]
RIGHT [ LevelThree | | | | | | | | ] -> [ LevelThree Wall | Wall | Wall | | | Wall | Wall | Wall | Wall ]
random DOWN [ LevelThree | ] -> [ | LevelThree ]
RIGHT [ LevelThree | | | | | | | | ] -> [ LevelThree Wall | | | | | | Crate | | Wall ]
random DOWN [ LevelThree | ] -> [ | LevelThree ]
RIGHT [ LevelThree | | | | | | | | ] -> [ LevelThree Wall | | Wall | | | Wall | Crate | | Wall ]
random DOWN [ LevelThree | ] -> [ | LevelThree ]
RIGHT [ LevelThree | | | | | | | | ] -> [ LevelThree Wall | | Target | | Target | Wall | Player | | Wall ]
random DOWN [ LevelThree | ] -> [ | LevelThree ]
RIGHT [ LevelThree | | | | | | | | ] -> [ LevelThree Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
(Level 4
########
#......#
#.O@@*P#
#......#
#####..#
....####)
RIGHT [ LevelFour | | | | | | | ] -> [ LevelFour Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelFour | ] -> [ | LevelFour ]
RIGHT [ LevelFour | | | | | | | ] -> [ LevelFour Wall | | | | | | | Wall ]
random DOWN [ LevelFour | ] -> [ | LevelFour ]
RIGHT [ LevelFour | | | | | | | ] -> [ LevelFour Wall | | Target | Crate Target | Crate Target | Crate | Player | Wall ]
random DOWN [ LevelFour | ] -> [ | LevelFour ]
RIGHT [ LevelFour | | | | | | | ] -> [ LevelFour Wall | | | | | | | Wall ]
random DOWN [ LevelFour | ] -> [ | LevelFour ]
RIGHT [ LevelFour | | | | | | | ] -> [ LevelFour Wall | Wall | Wall | Wall | Wall | | | Wall ]
random DOWN [ LevelFour | ] -> [ | LevelFour ]
RIGHT [ LevelFour | | | | | | | ] -> [ LevelFour | | | | Wall | Wall | Wall | Wall ]
(Level 5
.#######
.#.....#
.#.O*O.#
##.*P*.#
#..O*O.#
#......#
########)
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive | Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelFive | ] -> [ | LevelFive ]
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive | Wall | | | | | | Wall ]
random DOWN [ LevelFive | ] -> [ | LevelFive ]
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive | Wall | | Target | Crate | Target | | Wall ]
random DOWN [ LevelFive | ] -> [ | LevelFive ]
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive Wall | Wall | | Crate | Player | Crate | | Wall ]
random DOWN [ LevelFive | ] -> [ | LevelFive ]
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive Wall | | | Target | Crate | Target | | Wall ]
random DOWN [ LevelFive | ] -> [ | LevelFive ]
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive Wall | | | | | | | Wall ]
random DOWN [ LevelFive | ] -> [ | LevelFive ]
RIGHT [ LevelFive | | | | | | | ] -> [ LevelFive Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
(Level 6
######.#####
#....###...#
#.**.....#P#
#.*.#OOO...#
#...########
#####.......)
RIGHT [ LevelSix | | | | | | | | | | | ] -> [ LevelSix Wall | Wall | Wall | Wall | Wall | Wall | | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelSix | ] -> [ | LevelSix ]
RIGHT [ LevelSix | | | | | | | | | | | ] -> [ LevelSix Wall | | | | | Wall | Wall | Wall | | | | Wall ]
random DOWN [ LevelSix | ] -> [ | LevelSix ]
RIGHT [ LevelSix | | | | | | | | | | | ] -> [ LevelSix Wall | | Crate | Crate | | | | | | Wall | Player | Wall ]
random DOWN [ LevelSix | ] -> [ | LevelSix ]
RIGHT [ LevelSix | | | | | | | | | | | ] -> [ LevelSix Wall | | Crate | | Wall | Target | Target | Target | | | | Wall ]
random DOWN [ LevelSix | ] -> [ | LevelSix ]
RIGHT [ LevelSix | | | | | | | | | | | ] -> [ LevelSix Wall | | | | Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelSix | ] -> [ | LevelSix ]
RIGHT [ LevelSix | | | | | | | | | | | ] -> [ LevelSix Wall | Wall | Wall | Wall | Wall | | | | | | | ]
(Level 7
#######
#.....#
#.O*O.#
#.*O*.#
#.O*O.#
#.*O*.#
#..P..#
#######)
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | | | | | | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | | Target | Crate | Target | | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | | Crate | Target | Crate | | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | | Target | Crate | Target | | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | | Crate | Target | Crate | | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | | | Player | | | Wall ]
random DOWN [ LevelSeven | ] -> [ | LevelSeven ]
RIGHT [ LevelSeven | | | | | | ] -> [ LevelSeven Wall | Wall | Wall | Wall | Wall | Wall | Wall ]
(Level 8
..######
..#.OOP#
..#.**.#
..##.###
...#.#..
...#.#..
####.#..
#....##.
#.#...#.
#...#.#.
###...#.
..#####.)
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | Wall | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | Wall | | Target | Target | Player | Wall ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | Wall | | Crate | Crate | | Wall ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | Wall | Wall | | Wall | Wall | Wall ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | | Wall | | Wall | | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | | Wall | | Wall | | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight Wall | Wall | Wall | Wall | | Wall | | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight Wall | | | | | Wall | Wall | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight Wall | | Wall | | | | Wall | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight Wall | | | | Wall | | Wall | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight Wall | Wall | Wall | | | | Wall | ]
random DOWN [ LevelEight | ] -> [ | LevelEight ]
RIGHT [ LevelEight | | | | | | | ] -> [ LevelEight | | Wall | Wall | Wall | Wall | Wall | ]
(Level 9
#####.
#O..##
#P**.#
##...#
.##..#
..##O#
...###
......)
RIGHT [ LevelNine | | | | | ] -> [ LevelNine Wall | Wall | Wall | Wall | Wall | ]
random DOWN [ LevelNine | ] -> [ | LevelNine ]
RIGHT [ LevelNine | | | | | ] -> [ LevelNine Wall | Target | | | Wall | Wall ]
random DOWN [ LevelNine | ] -> [ | LevelNine ]
RIGHT [ LevelNine | | | | | ] -> [ LevelNine Wall | Player | Crate | Crate | | Wall ]
random DOWN [ LevelNine | ] -> [ | LevelNine ]
RIGHT [ LevelNine | | | | | ] -> [ LevelNine Wall | Wall | | | | Wall ]
random DOWN [ LevelNine | ] -> [ | LevelNine ]
RIGHT [ LevelNine | | | | | ] -> [ LevelNine | Wall | Wall | | | Wall ]
random DOWN [ LevelNine | ] -> [ | LevelNine ]
RIGHT [ LevelNine | | | | | ] -> [ LevelNine | | Wall | Wall | Target | Wall ]
random DOWN [ LevelNine | ] -> [ | LevelNine ]
RIGHT [ LevelNine | | | | | ] -> [ LevelNine | | | Wall | Wall | Wall ]
(There's one more row in this puzzle, but it's blank for padding so we'll just not do anything)
(Level 10
......#####
......#O..#
......#O#.#
#######O#.#
#.P.*.*.*.#
#.#.#.#.###
#.......#..
#########..)
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen | | | | | | Wall | Wall | Wall | Wall | Wall ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen | | | | | | Wall | Target | | | Wall ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen | | | | | | Wall | Target | Wall | | Wall ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen Wall | Wall | Wall | Wall | Wall | Wall | Wall | Target | Wall | | Wall ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen Wall | | Player | | Crate | | Crate | | Crate | | Wall ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen Wall | | Wall | | Wall | | Wall | | Wall | Wall | Wall ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen Wall | | | | | | | | Wall | | ]
random DOWN [ LevelTen | ] -> [ | LevelTen ]
RIGHT [ LevelTen | | | | | | | | | | ] -> [ LevelTen Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall | Wall | | ]
(Now that we're done, clean up the tokens for the upper left corner and level number and place a token saying we've generated the level)
[ UpperLeft ] [ LevelToken ] -> [ Generated ] [ ]
(This is the only actual gameplay rule lmao)
[ > Player | Crate ] -> [ > Player | > Crate ]
==============
WINCONDITIONS
==============
All Target on Crate
=======
LEVELS
=======
message level 1 of 10
.......
.......
.......
.......
.......
.......
.......
message level 2 of 10
......
......
......
......
......
......
......
message level 3 of 10
.........
.........
.........
.........
.........
.........
message level 4 of 10
........
........
........
........
........
........
message level 5 of 10
........
........
........
........
........
........
........
message level 6 of 10
............
............
............
............
............
............
message level 7 of 10
.......
.......
.......
.......
.......
.......
.......
.......
message level 8 of 10
........
........
........
........
........
........
........
........
........
........
........
........
message level 9 of 10
......
......
......
......
......
......
......
......
message level 10 of 10
...........
...........
...........
...........
...........
...........
...........
...........
message congratulations!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment