boxcl

BOXcl: a single-script Sokoban clone in Tcl/Tk 8.6
git clone git://git.luxferre.top/boxcl.git
Log | Files | Refs

commit cb346bb21882af29a8e474296d41e1253cbbb0d6
Author: Luxferre <lux@ferre>
Date:   Tue,  8 Oct 2024 09:25:43 +0300

Initial upload

Diffstat:
Aboxcl.tcl | 584+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alevelsets/Easy_5_boxes.txt | 501+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alevelsets/MicroCosmos.txt | 430+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alevelsets/NaboCosmos.txt | 439+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alevelsets/Novoban.txt | 487+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alevelsets/Original.txt | 1402+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alevelsets/microban.txt | 1680+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 5523 insertions(+), 0 deletions(-)

diff --git a/boxcl.tcl b/boxcl.tcl @@ -0,0 +1,584 @@ +#!/usr/bin/env tclsh +# BOXcl: a simple and self-contained Sokoban clone that can load any custom levelset +# Depends upon Tcllib and Tk +# Compatible with *plaintext* levels downloaded from https://www.sourcecode.se/sokoban/levels.php +# Press h or F1 to get in-game help +# Controls: WASD or arrow keys to move, u to undo, r to restart, +# Ctrl+N / Ctrl+P to switch levels in the set, Ctrl+O to open a new set, Ctrl+Q to quit +# Created by Luxferre in 2024, released into public domain + +package require textutil +package require Tk + +# hardcoded tile sizes +set tilew 64 +set tileh 64 + +# check if the line contains only valid Sokoban format characters +proc islevelline {line} { + return [regexp {^[ #pPbB._*$+@-]+$} $line] +} + +# convert a level data line into the internal format +proc levelconvert {datalist} { + set convdata "" + foreach dataline $datalist { + set outlist "" + foreach chr [split $dataline ""] { + switch $chr { + {#} {lappend outlist 8} + p - + @ {lappend outlist 2} + P - + + {lappend outlist 3} + b - + $ {lappend outlist 4} + B - + * {lappend outlist 5} + . {lappend outlist 1} + " " - + "-" - + _ {lappend outlist 0} + default {} + } + } + lappend convdata $outlist + } + return $convdata +} + +# load and parse a levelset file +proc loadlevels {fname} { + set fp [open $fname r] + fconfigure $fp -encoding utf-8 -translation auto + set fdata [read $fp] + close $fp + set levelblocks [::textutil::splitx $fdata {\n\n}] + set levelsettitle "" + set levelsetauthor "" + set outlevels "" + foreach lblock $levelblocks { + set leveldata "" + set leveltitle "" + foreach line [split $lblock "\n"] { + set line [string trimright $line] + if {[islevelline $line]} { # the line contains valid level characters + lappend leveldata $line + } else { + if {[regexp {^Title:(.*)$} $line _ title]} { + set leveltitle [string trim $title] + } elseif {[regexp {^Author:(.*)$} $line _ author]} { + set levelsettitle $leveltitle + set leveltitle "" + set levelsetauthor [string trim $author] + } + } + } + if {$leveldata ne ""} { + set lobj "" + dict set lobj settitle $levelsettitle + dict set lobj author $levelsetauthor + dict set lobj title $leveltitle + dict set lobj data [levelconvert $leveldata] + lappend outlevels $lobj + } + } + return $outlevels +} + +# render the level state +proc renderfield {leveldata} { + global tilew tileh fieldw + global tile_0 tile_1 tile_2 tile_3 tile_4 tile_5 tile_8 + .c delete anytile + set rownum 0 + foreach line $leveldata { + set tiley [expr {$rownum * $tileh}] + for {set colnum 0} {$colnum < $fieldw} {incr colnum} { + set colval [lindex $line $colnum] + if {$colval eq ""} {set colval 0} + set curtile "tile_$colval" + set tilex [expr {$colnum * $tilew}] + .c create image $tilex $tiley -image $curtile -anchor nw -tag anytile + } + incr rownum + } +} + +# move logic +# dir: 0 up, 1 left, 2 down, 3 right +# return 1 if won +proc domove {dir} { + global leveldata fieldw fieldh pushcount + # detect horizontal and vertical direction factors + if {$dir % 2} { + set hd [expr {$dir - 2}] + set vd 0 + } else { + set vd [expr {$dir - 1}] + set hd 0 + } + # find the player position into cx and cy + for {set cy 0; set outbreak 0} {($outbreak < 1) && ($cy < $fieldh)} {incr cy} { + for {set cx 0} {($outbreak < 1) && ($cx < $fieldw)} {incr cx} { + if {[lindex $leveldata $cy $cx] & 2} { # found it + set outbreak 1 + incr cx -1 + incr cy -1 + } + } + } + # calculate the new target player position + set tx [expr {$cx + $hd}] + set ty [expr {$cy + $vd}] + # start by checking if it is within the field boundaries + if {($tx >= 0) && ($tx < $fieldw) && ($ty >= 0) && ($ty < $fieldh)} { + # get the target object value + set tov [lindex $leveldata $ty $tx] + if {$tov < 6} { # we're not pushing a wall + if {$tov & 4} { # we've hit a box + # get next-to-target positions + set ntx [expr {$tx + $hd}] + set nty [expr {$ty + $vd}] + # calculate the condition under which we can push + if {($ntx >= 0) && ($ntx < $fieldw) && ($nty >= 0) && ($nty < $fieldh)} { + set ntov [lindex $leveldata $nty $ntx] + if {$ntov < 4} { # now we can push + # remove the box from the target field + lset leveldata $ty $tx [expr {$tov & 11}] + # push the box further + lset leveldata $nty $ntx [expr {$ntov | 4}] + # increment the push counter + incr pushcount + } else {return 0} + } else { # otherwise don't perform the move + return 0 + } + } + # now, remove player from the current field + lset leveldata $cy $cx [expr {[lindex $leveldata $cy $cx] & 13}] + # add player to the target field + lset leveldata $ty $tx [expr {[lindex $leveldata $ty $tx] | 2}] + # check for victory by counting boxes not on goals + set bcount 0 + for {set cy 0} {$cy < $fieldh} {incr cy} { + for {set cx 0} {$cx < $fieldw} {incr cx} { + if {int([lindex $leveldata $cy $cx]) == 4} { # non-goal box + incr bcount + } + } + } + if {$bcount > 0} {return 0} else {return 1} + } + } + return 0 +} + +# perform a move and render it +proc rendermove {dir} { + global leveldata pushcount undobuffer + lappend undobuffer $leveldata + set res [domove $dir] + # remove the last undobuffer entry if the field is the same + if {[lindex $undobuffer end] eq $leveldata} { + set undobuffer [lreplace $undobuffer end end] + } + renderfield $leveldata + # check for victory flag + if {$res eq 1} { + tk_messageBox -title {Victory!} -type ok -message "Level complete!\nPushes: $pushcount" + nextlevel 1 + } +} + +# undo the last move and render the result +# Tcl 8.6 compatible (no lpop) +proc renderundo {} { + global leveldata undobuffer + if {[llength $undobuffer] > 0} { + set leveldata [lindex $undobuffer end] + set undobuffer [lreplace $undobuffer end end] + renderfield $leveldata + } +} + +# start a loaded level +proc startlevel {level} { + global tilew tileh fieldw fieldh leveldata pushcount + global undobuffer + set undobuffer "" + set leveltitle [dict get $level title] + set leveldata [dict get $level data] + set settitle [dict get $level settitle] + set pushcount 0 + # determine field width and field height (in tiles) + set fieldh [llength $leveldata] + set fieldw 0 + foreach l $leveldata { + set lw [llength $l] + if {$lw > $fieldw} {set fieldw $lw} + } + # align level data + set idx 0 + foreach l $leveldata { + set lw [llength $l] + if {$lw < $fieldw} { + set diff [expr {$fieldw - $lw}] + for {set i 0} {$i < $diff} {incr i} { + lset leveldata $idx end+1 0 + } + } + incr idx + } + + .c configure -width [expr {$fieldw * $tilew}] -height [expr {$fieldh * $tileh}] + wm title . "BOXcl - $settitle - $leveltitle" + renderfield $leveldata +} + +# move to the next level in the set +proc nextlevel {natural} { + global sublevel levels levelcount + incr sublevel + if {$sublevel == $levelcount} { + if {$natural eq 1} { + tk_messageBox -title {All clear!} -type ok -message "Congratulations!\nYou have beaten the last level in the set!" + exit 0 + } else { + set sublevel 0 + startlevel [lindex $levels $sublevel] + } + } else { + startlevel [lindex $levels $sublevel] + } +} + +# move to the previous level in the set +proc prevlevel {} { + global sublevel levels levelcount + incr sublevel -1 + if {$sublevel == -1} { + set sublevel [expr {$levelcount - 1}] + } + startlevel [lindex $levels $sublevel] +} + +# open a levelsetfile +proc openlevel {} { + set types { + {{Plain text levelset} {.txt} TEXT} + {{Sokoban YASC levelset} {.sok} TEXT} + } + return [tk_getOpenFile -filetypes $types -title {Choose a Sokoban levelset file}] +} + +# define the tiles + +set imgdata(wall) { +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAADQ0lEQVRYw8VX23bqIBDtD9mLra1a +q9Vj6wq5nIRkBcKa//+OQ4AQGIjV+nDmpXZDdsjMZjPc3d8YdzcTzB4eTbzIeFvJeHtxQiELF1n0 +U+b6mfvZ3Wy+lLH9k6ggDICTxIlUADQukBAOAH+Pu5V87sEQHMZRgNSbnpQAxEcKgE7++X63BHtn +VLAEBYSIXtNpZQjW7iC7iICqv3tD4C4g6To0O4UQgVb9+DYEX85gDpD70ylA4SM1gNCJWmsCl1xm +mHtZzGUVRIkYh0mbnuD1I7dRgwoaIIza4BoRtfy9f+wJPuGKEGzgapmA05MkeF5TKtRYlZvFk7xo +9VvybPgSvZbO/by0VQR9DkjPUARyK3DuUILTr4EgyYbSjgwCKVhWOFDEpyVIWqxX+cIiQNBLku1I +QAHLjWJBSOQsAdpDSRNZQYuQ3UjAIzlA00mHdyo5WgK5Z6HyBjlGSNMLMIuXUevNWUOmdAAN8UTe +S6OxkmyMkBZbxpkKPgrOIN05RIpSfcLifVxlqcZrp6KkjSOisJvJ241SLCh3JIqY9EQIypgnhojx +mAjBhZ5IpwnYjQQELvLEJjmTg9ATQ0SQCYK0i3liiBiJaU/cXOCJIcJL+Xt7vSf6YaQ8/EuxJ0Iz +emLBFFLnQ0KyvBZ2M1G0l4xL+ju8Z6j9U9YSSPfADljYVDuHFkKSw2goXeCJHL0uhjiWVgeeeLWp +/saVHU9soAxOgfBc4AjZWwKZdJEhUwbwkSrwzdxWQRueI3lSqaqXiNGvVTkcrnklzCFuo/Od0EE6 +i3CjxNfdYLP1MEs0hdZ9SesphNPK7IWXJeo+/H6kiiLGZCJ+wACXo4khk34g9XqjIyXdrabKbyRI +Y51xiLSTBDTodVgMMaJTBM9L1Ei5Z7Lq/2OIrqw21d3YRDJ77g4BU4iS5NH3RKtT7p3h3mOj4MVg +qn0OSjXX3UwUkAIN4npEwT1PRP4RbzR9TWam0Twqs6iClupnQzGOdJjwxB/7xNNaE2x+22geDEH/ +DU2k0SwDpEELeDcEq5O8HYaNJgsQ/2DZLo2tS4beFMugCmVgs84Sjpvlh+rW+6vv03wu77P4futf +edUdeLwWz9VT8ur732/v/wB3P44Wbg6kBQAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlw +dG8uaW1hZ2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg== +} + +set imgdata(boxongoal) { +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAACy0lEQVRo3sWZvW7bMBDHObWZmqKR +KAcGmjiI69RorEqWfYEQoFq7d+/SvY+QpXseoY+ixXsfoUMfIQ9wHSgpTnj8kklGt9Ew/z+Rx9Px +jrHh4Xlyl7RJm7Qcw1jSJu3Jr3c/Xl+y5w/Pw8kqUKo9+en3pz9Pg9npI8LD8bfh7cVQhue4wGVw +u8BJh8BzxhhjWcuR4yleRRAXdtWtRNIO759FlBcImdiKnKX3HDnOosovcYnnYg3umfB++f1LrLHA +mrAKgRgttCOlNP+i3wSx/xQjYIUNYTd4S4xWmhEg5xeuyMSxo5dp5QUAFLNPzQBLhIMBQDk3CVBa +ILgAALGqWoCa+AuMBpDn2mJtAmiMCLYAhTTPJ2xsAEwIdgBAHOzKFkCPYANAyTcuADoEMwAt7wig +RjABqOSdASg3AiOAbvOcASoyLugA9O47AqAhED4rAUwHeBQAhbAlAcwhbCRAYxWgV2TY8QRgRlCF +HW8ADW41COqw4xFA7WK6sOMVoCG/bvqw4xngOcKcSGbBkCEcCLCPoJcPBtBgZSUfEOAGcwv5oAC3 +Vhl0QIC1JD/HWbwVqCT5y25DoviAfO5ne/4Q/BTo5YPHASoY58rTEO1boPpSegbQpRv0l9IrADjn +A+ATACwyomvL0DQCACxzwjJMTijLXyuz4tJ/VkylG7p7Qen3XlCQ2Y7+ZlT6uxmpki33uyGMAVDn +emNux+AKIE+xPrA+AC4AYSokYAsQrka0sgHwWSWjTkQdt05YEq4cuVJaulVKQ9SKN2MBQlfLe4C/ +HLli8X0B0AhduV40LD5Ii7/BDea4IazANTGaG0ZWZMMi3bHkjiPH9y/Xsjk6E02rRVT5vmn16iNj +3Sa8RNsu3T1pXE7wIgrEvO8aPgw95JOhdZsFbNsKmwzN26F1yxhjb78kf6I2r/+9+Sp10I/O0t8i +KoS1dJf+ZMe96n+qpZFsvgDj+QAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlwdG8uaW1h +Z2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg== +} + +set imgdata(box) { +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAACvklEQVRo3sWZW07jMBSGs4PRPFaC +OFGFeBlRiqhGFaqAKpoEGoGRIp4isYRZQpfAEmYpWcIsgSWwhH8enKYdfHwLtonfXNX/F9vn5FyS +ZHjyWbplHetYlyHMYB3r0m36MmHJxyefhZOlUfLZgXz68v/Pp8HGyR7h/fhxeHsxleMMS6yCjwtM +e4R+F8Tmn+AqgrgYV/1OsG54/zyivEDIxa7PkvQ1Q4bzqPIrrHCGDBnS1/4A5Pev0KBEQ4wanJgt +tTOVtP5ydwji/ClGjg1aYjzhmZjdaGY4ub64iokwO3qbCi8AXLH6qRlgBf5pAK5cmwSoLBBcAGT5 +tR6gIf7CRwPIaz2gMQG0RgRbAHk3b9DaAJgQ7AA4YdgbWwA9gg0AJd+6AOgQzAC0vCOAGsEEoJJ3 +BmhRkgh6AN3hOQNsSL+gA9Bf3xEAlDH9UgKYDHgUAIXwSAKYXdhIgNbKQRek2/EEYEZQuR1vAC0e +NAhqt+MRQH3FdG7HK0BLft30bsczwEeEBeYGt+Md4BBBLx8MoEVtJR8Q4AmFhXxQgGcixFxbRole +AO4l+QXm8XagluQv+wOJcgdku58f3IfgVqCXD+4HKGdcKK0h2rdA9aX0DKALN+gvpVcA7hwPcJ8A +3CIiurVI7kcCcMuYsAoTE8ryt8qouPIfFVPhhi4vqPzmBRUZ7egzo8pfZqQKttxzQz4GQB3rjcmO +uSuAvMT9J+sD3AUgTIWE2wL4qhGVpGtqYlbJKIto4tYJKUOOXCmt3CqlIWrF9ViA0NXyHoC9ZcgU +m+8LgEboy/WiYfFTSjNq1ChQE6PEHTFbGGbWqoZFus2Q4cfXtWwmTDStllHld02rCfv6tt2+cTnF +RRSIxU7+fegh71u3ecC2rRjToXk7tG6TJEmOrtnfqM3rt6NrqYM+Yekf4RVCd87T39+/7VT/AZaV +3OsTnXjsAAAALXRFWHRTb2Z0d2FyZQBieS5ibG9vZGR5LmNyeXB0by5pbWFnZS5QTkcyNEVuY29k +ZXKoBn/uAAAAAElFTkSuQmCC +} + +set imgdata(player) { +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1 +OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv +IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS +ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD +cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0 +YW5jZUlEPSJ4bXAuaWlkOjJCQzQyNTY5RTI1NTExRTZCNUJFOEM2QkJDQzA1OUQ1IiB4bXBNTTpE +b2N1bWVudElEPSJ4bXAuZGlkOjJCQzcyN0ZCRTI1NTExRTZCNUJFOEM2QkJDQzA1OUQ1Ij4gPHht +cE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkJDNDI1NjdFMjU1MTFF +NkI1QkU4QzZCQkNDMDU5RDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkJDNDI1NjhFMjU1 +MTFFNkI1QkU4QzZCQkNDMDU5RDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94 +OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6SouJPAAAGb0lEQVR42u1ba08cVRjmH/gT/GrV +eMnCXgoK4SKwu7VooGBdKTbQLWJDEFtrbcVG+SJorY02tqRUrbYlqYSEYiLWfkESDZe2Rog2FNGm +GtFSjPiBtHmdZzpnPDtzdvfsMmfY4k7yJJudc973eZ9z5p1zmZNDRDn/Z+RkBcgKkBUgK0DSQpJX +NOx9sHlDoHB72N/B4fxK0BwKHGC2okHfRtiX5aNcgG2lnruaQ/4t20P+Xp1sOEBuQBdH8wnf4LAq +AqA1NBKzPLGGukeprqmEKl7dYKLgYA35D9emDd5WdUsZReqLYsXQOICLqwJAeT7o8O6gHuhDJyJ0 +z8BWpbi/b4spDHybYmicXBGgJbj+buYUgYOQ6qATiQEhGB9wUy6A/uxpzqraKlYtcCvAxXgcetUL +YCQ7N7q7LMCFJUflAmiOFhqfzM+Y4BnYY+CGALqjdEjmnW2h3RM9NHxtnL6Zn44B/sO9NSsAgru6 +NE/Jrqkbc1R1vmNtCYCAFpeXSPaCUKmKkLECFH+xM6Xg+Z6AR+aOF+CzuRFK90LdO16AdFqfXaib +8QKsG2qkdZ83xeC+r5qV4N7haKwvzfeqCfDAWFtGIStAVgCXBcj78rmMCR5c3BMgFJiEo00vBjNG +AHC5vSYQmHRjNtghWqb6Y/wjop8GXMOHr2+zL5eFAgf4JTLHBWBrAVb0de9wNXgAggvXC0P+WSUC +sOC7Wmto8INdNHx8r+6wM7qRlqZOx5D7eeQIvd1WqwO/0w2St/PD8CHb/cH3d+ocwAWcwI1fGHFM +ALYGuO/ZSrpw9i2aPndIxyv1FcIAQZi1CH6nK4CMHTQA4wNu4MjWCB0U4Hbig9LMGWBteQZrt0xX +ABk74MBzYj0TnJ0TwCDAOwJWQtwpAQArL7P8agmAbsnq4LeozG9jx2nu6yM6rn17jG7O9KdlB/WU +C8A2QKyPwPLlM3GT1ws1RTpEOeLGpU9spCFIPDvwLUqC+iMwLX4EwNk5AYx3vzUJwnmqr65zvXtt +wTPgXqpvDV4APgmCs6OvQZYId20uNXsCWlKW6IWBLrNrftrVYgserzF2H2Vl7f71/Umz5cGNHxE6 +KoC+ERoO9PNJCe9hGZLovqlugI6eekPKNhsLcOhno0HHR4IwrD8ORm+QfcdjvJCqAHj2UxFAz1OW +rXNlm6NGb4ibma1giUyFAKa4bm6O8t8CyCQtJD+0FD+yiweUQVmZyRV8811f+eao/gVIOLAAh5uf +L6fSnghF3ovQTZdngvr7X/P50skWnQO4GCIsgKPK2eAsC56fj3/cWUt/tj0lxDsD7bT14v60gLrx +7MInz4GJoGw2GA37WuGgqbqAHh7ZYVuUeLN7E/0aLrBhMlJMAUH5ZEAd1BXZhC9reXACN3AEV+en +w8Zzjy7HO2atVTHxMrX3PEOXqwuFIlQNRqWDR1lR8LANH/DF/PL1wI3fJnd2IGQkG9b6rZc6afGK +fSh8fewYzUefELbcSGMZRU80CHsE/sM9lBHVhU3YtvoDB3BhvYBfG1QiAAs+WYISBbESJEu0TAR1 +AhiDH6h8dSb5HMBpAZL5AyezB6gYCrNh8P6+dqnXVLxAfgnm04/lfvquzBsD/Id76QoAgBsbE6hI +gh2y4//lkaPCIBDkeEleQqCMqC5sSg+LNa7KXoOH99QnJfJ37z5bADMVgaTBM6CstT5sJvMLbspe +g5hoyIz/b02dpt/rg7ZuPyEZPICy1scBNm9NJc495gqSMSlyVAD+A8lE4/TrexpsrXex1CsdPAPq +WO3Atsw+AZsTKNsYwYRFtCL8z6lOG+krlf91/VENZ7SEd7TcJwTujXIioK7VHnyIVobZRIv/WNJx +AYxesMBEwMrN5NBBmh56lxa7W4XJa+oxnx7Ma/m5VOn1JJ0NogzKog7qimzCF3zCNzhws8wFfkao +ZDqM2Rb/lbjH40kJT5f5zESl5xUNLMHiXqr2Yr4a52aCriyIrEQAfvWGJdiVCCA6N6D0vAB7FB4v +9EqTLVmfS01Bv+3LbmOdQf//EV+utL3qYq/wG2F3BODODNRrCQxCFAVyKeCNJenN9VB5QZ5Jlm1j +W+3xO891pT69DuxZg4Z9+IJP016cYzTKj8zoZ3iMniALNkgRXfG+PUiAhURniFw7NMXODcUTA10U +gSc632Ozxw5NiQPvFy2CKhMge24wK0BWgKwAaxX/AvBZf/1O5gkeAAAAAElFTkSuQmCC +} + +set imgdata(floor) { +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1 +OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv +IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS +ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD +cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0 +YW5jZUlEPSJ4bXAuaWlkOjJCRThGOUE2RTI1NTExRTZCNUJFOEM2QkJDQzA1OUQ1IiB4bXBNTTpE +b2N1bWVudElEPSJ4bXAuZGlkOjJCRThGOUE3RTI1NTExRTZCNUJFOEM2QkJDQzA1OUQ1Ij4gPHht +cE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkJFOEY5QTRFMjU1MTFF +NkI1QkU4QzZCQkNDMDU5RDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkJFOEY5QTVFMjU1 +MTFFNkI1QkU4QzZCQkNDMDU5RDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94 +OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4wOW0fAAAE4UlEQVRo3rVa2XbbQAjlp2MnttOm +y2NtWfKapenpnxZ5YoJnYYBRz6F9yLEkLgOXbeDu1ybI6nD6+f43lW8vv+/WXfjNfLN9PJynkoft +jr6+6PfKp5a7Iz2FAvhvttmillntg3x/fScMq/1pKgCz6zsRienBxbBnANadrP3nObg+VjTkcAgv +RBgOo8w3/QcAjfZB0McmPAT0xvC2+25wPE6HAErtg9xvh0kiAT2efMB3pOEA0fo2AGMwfJitb3ce +ciHHS1CBxXBAlWwAUIgEHvpdu/a+VwUdnp7fPAAoEkzcF2mPxsPPfzk9B59EQZ2UL1ntjoG+8PGm +E7CGIIVd+DAJIkEmVHIR/obIF8F7AMyu7MEw9Pqo/Xp+LeWZEYN4Dqg9sSe9DfBhvfaLnAdfeKkX +7EcZN7J9fA6XgC750kX72HYIG+Zd36i9nI/wfORShQThleKBe04kEEJKfvWPtz9IFIL2nE8IBid7 +dDyTjTg9LK9Ri//j35EJgmD4fQAIoAXtU7+3ivKcOcWhuugzcr2ExoKIldLwIu1HBx0OAp3LEmjb +yhDVRAHcwx6PZ7T3jVMSZyV0yT1E6V0mglZmG4gZat0hv1J+kQ3AC3qNCMHGnef2kUquhGqkyzky +ImYfBjx5h+1jAFkM1US7Kpx7iBk8oiCcwiMMLdrHAFIMFLVyYZjJCcm5ERsGn8QkilJiZ32VBXK9 +UXXBqMELlUUpK3MMkptZakSQHUNTrHMA1W8LOdXXoEG19JXfuGRQNf5WrGq8Uw/QtK0lIiLbVwtJ +JQalCbQAKFVlCzVKAlbtS77k6y1B2f5xLfHvc1ZfuIcUEQX7ZgWgp5fwDW62Fu2zNpoYQErwpiSt +HTCyVOBwRVCOINtHCRq2wMJkGgBVtvYdt8ZY1kkH+Eo03zxQWRSaPBMcrj/hiLdUmesxQKL9oKmK +p3WhbGuhDGhwN1mTUFClpFVwNFRtHzXXjXnH1FQIY6IYQMnveTmN74oOeiomnYtTDxkDpPM6mdHQ +Wvx7jvLLwRlCWwIlvpd5hvytsZpIjxTbtKfnN5SxzWe65a25P4G7LqcSAH/swxD1k9gr86EODa5v +QuJ64PjFAB70U06h3nYsbCLGK01c+JK3OBtt6SrIiiYMqe0rC9IyBmivEYgDNGUMnm0UtdXRsowh +BuDwZv3KcZVMJTTayxigvUTLjFVyzJ2m+eq0tLRsLwLwlWhZIufMjapnyHrdmZZDpQEwWLdd+tGi +e9CrWVQXY8Baos29u4/qxqkkChpVY1DunfIt0WVJapWwC6wAUGJYep3HtLPJXtaoA6iOddu1d8Qx +/+hssx3BrDsQlqel7W+15TdhiOofzQrn8Ximv4OwYsi2FLL2mEloDaqMELRlFQPXMFpGQrRkLqjV +hwVtOqurZnENTc27XsDAdUtXqZD9nVXkAlbTspTu7XG/zy6CQbMqrNhPvChh2Gcmt/d4fJbyBsgs +W6dzdfJWjjzGywqH02j420grcW4TAGvpYd2NmwGYXMh3bc6Noe5CpiBu6eU1MZ0VKYitFNS416hy +6811m+FAmSdPo9a6oH0WhPhNe2KuIU/DI4CF8eLMVIP1Uk4sWYe3o7yXgLTKxWOi0VJ6gWc13Uw3 +LUmWtUt/n49cbtWMxVzEwVFK5/fW/+v1e+W1htT3/gHO9EIyge+NWAAAAABJRU5ErkJggg== +} + +set imgdata(goal) { +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1 +OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv +IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS +ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD +cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0 +YW5jZUlEPSJ4bXAuaWlkOjJCRkVFQTNFRTI1NTExRTZCNUJFOEM2QkJDQzA1OUQ1IiB4bXBNTTpE +b2N1bWVudElEPSJ4bXAuZGlkOjJCRkVFQTNGRTI1NTExRTZCNUJFOEM2QkJDQzA1OUQ1Ij4gPHht +cE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkJGRUVBM0NFMjU1MTFF +NkI1QkU4QzZCQkNDMDU5RDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkJGRUVBM0RFMjU1 +MTFFNkI1QkU4QzZCQkNDMDU5RDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94 +OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6L30xAAAAFYUlEQVRo3s1a224jNwzVtxbFAkWL +olsgmcRxNnHcXBatPbbja2zHm2Tb7+yZ0ObKunA4mrF3ASYvHkk8FEUeUjIn//RJ2pPZX88vvnSe +1ie9nL7J+oPLybwpOR888uqt4Vg56uJxyqMgBn+n/QG0DGpPcrN8Zgzt8awpAKe7OYGk0sDWaGwB +6OWy9t/2IWmxqCFHE5oQMBKMkvWHWwAa7UngYw1uAryRZjvLRwnDeRNMTN27L2/3r19JPn/9Tyma +tfWz3X15hdxuCh/+NF34GwjrBwDcvbzp1zgoAEe6qw1PcpYPW6MJtDUx7a/mT3/cPfx6fQP56SRT +isb19bPR6lADymwxrDcciK4XKxfA7eaVvsMY/TJ6ALTvaTNDpa1lZ08Uvj7NFi6A+5fC3XE+0taQ +AfCxS54cM0C9znIbD88GIxfAw9u/+OKXy6vGASBP0apX82Xy5FCsONkvb5wEMJvBAWcAtEf2GHwE +h+MPWrvg7QiishBbOePSpgcFDk05AcvZme7j/WdbH9Lw29K93GT5UABgrxHTXs5HCBcyVWEBPPrS +xgCRABCVoHgkAED8Oh8+Ctqz4DOGwW5DbEWTK9lGNjXyASAYQJABtwDYT4IAoP3pLmsmi73PmmRP +W4psjf8+AMYGY5n245Sjkg8AJ4S1Lxx0NHGYjF4obMsStJQAAGIIB2EIHOIdYfQZi+0hSu+StXd4 +cgUAhAGRJBiFaO1SQq8RPmyy8+wPGasAEIZYGNXQ2joYLqfz8MfvR1kLgGmWPaCU67Yj+05nBltE +klnO7WCQta8LgE+tIBzp93KCt28Xu2hBPokkColFZzmMVgAAF6xU4L0f92hWtjFIbrZfH9cCgPUq +ASitzTnixcR32loASks+jn12lijFkEUyY7DrUReAEIjY9kGnT8AQNEEDAIJEjZNAVe1jvhRz1wYA +OFrCTpnFL5KbFE4IjnXNKgCQwwutYZutjvY+p9IEDF9MpQDvumx1zwnwESsVJLiiUbYgg+SsqR4j +OySISTMASqN12nZrjKXv8koASilaWj9QSQoreaZJcP0GW7wxZq7HYDztRxpW3KwLBUsL5YE2yUVW +IyGohNIqYrQptT0X1xre0khGs5cuNZOR/d6m05jL2eimImkmdj1kDIaqYQ0vZ2vZ6ykZaJ106djR +BRCL93KcYX+rySb8LUWZdr1YQYoy39ItbM3xzNjjfTKnoQDYkDQMTj2JWrm72rgN00hjCysS+HQA +dtSCG1S+5NqPeLGOS+dpXd4bTQZgW7ESBt/2QsPrsABsFqChMdh659TK2h8DgO0M8tFve12JUu2P +AsBvq4Qit5/mS7ulRwIQDOR25IbqgWDdy+3Loe8GoF1W9yQ0eo8KIEu9+yi9cToGAOW9U7gker8k +/Z4ALlKdp9KdzaEA1Ndef46DAE77A+xhcc1qX576AIIkp7Tkr4TB4T8aAJfTOf9q7CuGYHfaoeOy +9mCpdAcKUZ4Q2FLG4AOwfzX2JXOstVi8bRmOoZPfq9sLLKHt0oSpLB8KGFQACAP9/HN2zgN+63SV +Nb7AqDUlS+zd3p8Pf7MyUEwCULxWeX+c9Xv3tvHHHnbhkjw5FIN6UDIKgF47IcUc5LnNsO5zGyhG +r1WiAG5Wm4M+eCIMNR88OT5mnNvm68WSvsPB+tBqNwuAMFSdE2pAme0zwH3zu4eYtrizXP+Yj/5u +N4EYZRztmQzfrJ5/HADd9YYiuP9kygivLKKdptq9IMRc/T2xw1zsNFwAaFV8ONNUYz2WE2PWsctR +u5YwPsvFNnFryX/A026up+tTErmLuMdievmWzDlFqpPS7XfrB31+L/cPBd/7HwDmw8MEUb41AAAA +AElFTkSuQmCC +} + +# load the tiles + +# load the player tile separately +image create photo tile_player -data $imgdata(player) +# floor is coded as 0 +image create photo tile_0 -data $imgdata(floor) +# goal is coded as 1 +image create photo tile_1 -data $imgdata(goal) +# player on the floor is coded as 2 +image create photo tile_2 +tile_2 copy tile_0 +tile_2 copy tile_player +# player on the goal is coded as 3 +image create photo tile_3 +tile_3 copy tile_1 +tile_3 copy tile_player +# box is coded as 4 +image create photo tile_box -data $imgdata(box) +image create photo tile_4 +tile_4 copy tile_0 +tile_4 copy tile_box +# box on goal is coded as 5 +image create photo tile_goalbox -data $imgdata(boxongoal) +image create photo tile_5 +tile_5 copy tile_1 +tile_5 copy tile_goalbox +# wall is coded as 8 +image create photo tile_8 -data $imgdata(wall) + +# create the UI and canvas + +canvas .c +grid .c -column 0 -row 0 +grid rowconfigure . 0 -weight 1 +grid columnconfigure . 0 -weight 1 + +wm title . "BOXcl" + +# define the help message + +set helpmsg {Welcome to BOXcl! + +Controls: + +Move: WASD or arrow keys +Undo: u +Restart: r +Open a levelset: Ctrl+O +Next level in the set: Ctrl+N +Previous level in the set: Ctrl+P +Quit: Ctrl+Q +This help: h or F1 + +You can also pass the levelset as the command line parameter to the boxcl.tcl script. + +Created by Luxferre in 2024 +Released into public domain +} + +# entry point + +set levelsetfile "" +if {$argc > 0} { # get the level set file name + set levelsetfile [lindex $argv 0] +} else { # open the file dialog + set levelsetfile [openlevel] +} +set sublevel 0 +if {$argc > 1} { # get the optional level number + set sublevel [expr {int([lindex $argv 1]) - 1}] + if {$sublevel < 0} { + puts "Invalid level number!" + exit 1 + } +} +if {$levelsetfile eq ""} { + tk_messageBox -type ok -title "Missing levelset" -icon error -message "Please open a levelset file to start the game!" + exit 1 +} + +set levels [loadlevels $levelsetfile] +set levelcount [llength $levels] +startlevel [lindex $levels $sublevel] + +# bind keys to move logic + +bind . <Key> { + switch "%K" { + r {startlevel [lindex $levels $sublevel]} + u - + BackSpace {renderundo} + w - + Up {rendermove 0} + a - + Left {rendermove 1} + s - + Down {rendermove 2} + d - + Right {rendermove 3} + h - + F1 { + tk_messageBox -type ok -icon question -title "BOXcl help" -message $helpmsg + } + } +} + + +bind . <Control-n> {nextlevel 0} +bind . <Control-p> {prevlevel} +bind . <Control-o> { + set levelsetfile [openlevel] + if {$levelsetfile ne ""} { + set sublevel 0 + set levels [loadlevels $levelsetfile] + set levelcount [llength $levels] + startlevel [lindex $levels $sublevel] + } +} +bind . <Control-q> {exit} diff --git a/levelsets/Easy_5_boxes.txt b/levelsets/Easy_5_boxes.txt @@ -0,0 +1,501 @@ +Title: Easy 5 Boxes +Description: Puzzles made only with 5 boxes, with situations that we find in the daily life + of the sokoban. My intention is only to contribute. +Author: Jorge Gloria +Email: jhogloria@hotmail.com + + #### +### # # +#.###$ # +# $ $ # +# ..$ .# +# #+$ # +#### ## + #### +Title: #01 + +####### +# # # +# # .## +# $$ # +##$* * # +# @# ## +# .. # +####### +Title: #02 + +####### +# . ## +# .$$* # +## $@# +# * #### +# # +#.## # +######## +Title: #03 + +######## +#. # # +# #$ # +#.$@*#.# +# #$$ # +# # ## +# .## +###### +Title: #04 + + #### +## #### +#. . $@# +#$.#$### +# $ $ # +# .. # +# ### +###### +Title: #05 + + ###### + ## # + # $ # # +## * # # +# ..$.# +# . $$ # +#### @## + #### +Title: #06 + +##### +# . # +#$*@### +# $$ # +#..$ # +# . # +####### +Title: #07 + +####### +# .. # +# #$$ # +# $ .# +# . *$# +# # @# +####### +Title: #08 + + ##### +## @ ## +#.$*$ # +# $.# +##$. # + # . # + ###### +Title: #09 + +####### +#. # +# $$ # +#...$## +# $* # +##@ ## + #### +Title: #10 + +####### +# $ .# +#+*$# # +## # +# $* # +# .## +###### +Title: #11 + +####### +# .$ .# +# $## +# $ # +#$#$# # +#. @..# +####### +Title: #12 + +####### +# . .# +# $$ # +###$ # +# *$# +# .@. # +####### +Title: #13 + +###### +# ### +# .#$ # +# $ # +##.#$ ## +## #@## +# .$$# +# # +#.. # +###### +Title: #14 + + #### + # #### +##$... # +# # $### +# $## $. # +# @# +## $.#### + ###### +Title: #15 + +########## +#. . # +# $#$#$# # +## . # # +### $ . ## +#@$. ## +######## +Title: #16 + + ##### + # # +####$# ### +# $ # +#..*# * # +#. @$ ### +# # ## +####### +Title: #17 + +###### +#.#. ### +#.# # +# . # # +# #$ # +## $## + ##$ # +##@$$## +#. # +###### +Title: #18 + + ##### + # # + ##### $ # +## $ # +# *$ $ ## +#..@## # +#..###### +#### +Title: #19 + +####### +# #@ #### +# $$$ # +# .$ # +# ### *## +#### # ..# + ##. # + #### +Title: #20 + +##### +# ###### +# ...*@$ # +# $$. $# # +### # + #### ## + #### +Title: #21 + + ##### +### # +# # +# $$### +## . # + #$. ## + # .$ # + # *# # + ##. @# + ##### +Title: #22 + + ##### +###### # +# $ $ # +# ..*# ## +# #*. $ # +# #@ # +########## +Title: #23 + +##### +# # +#.# # +#. ### +#.# $ # +#.*$ # +# $ # +###@$## + # # + #### +Title: #24 + + ### +#####@# +# # $#### +# $ # +# ### $ # +# # $ ### +#. .$ # +#...# # +######## +Title: #25 + + #### + # #### + # $ # +## #$ # +# $ #@.# +# $ *.# +# ##..# +######## +Title: #26 + +######## +# # # +# $ # +# ##$ # +# .*. ## +# $@* # +####. # + #### +Title: #27 + + #### + # @##### +##$$ # +# $*.. # +# #$. # +# ## . # +######### +Title: #28 + + ##### + # . # + ##$*@# + # ..$## +## #. # +# $$ # +# ## +####### +Title: #29 + + ##### +### # +# $ # +# @$ ## +# $$#### +## . $ # + # ....# + ####### +Title: #30 + +######## +# # # +#$ $$ ## +# $ # +#..#$# @# +#... #### +###### +Title: #31 + +##### +# @### +# $ # +# $$ # +### $ # +#...$## +##. # + #. ## + #### +Title: #32 + + ####### + # $ + # +## .*. ## +# $#*$ # +# # +## ##### + #### +Title: #33 + +#### +# ### +# ## +# $$$@# +## #$# + # .*.# + # .#.# + # ### + #### +Title: #34 + +#### +# ## +# ##### +# $ $ # +## **+.# + # . $ # + ######## +Title: #35 + +######### +# @# # +#.**.. # +# ## ## +# $$$ # +### # + ###### +Title: #36 + +######### +#. * $ # +#...# # +#$$ ## +# # $ # +# # @## +####### +Title: #37 + + #### + # # +### ## +#@$ $ # +# $ # +##.## # +#..* # +# . $ # +####### +Title: #38 + + ######## + #. # # + #.# # # +## . $ # +# $$ $*# +# . ## @# +######### +Title: #39 + + #### + # @# +######$$# +# $ # +# ..$$ .# +#..## # +######### +Title: #40 + +##### +#@ # +# $$## +## . ## +# ** # +# $ # +### ..# + # # + ##### +Title: #41 + + #### + # ### + # $@# + # *..# +##$.#.# +# $ $ # +# ## +# ### +#### +Title: #42 + +######## +# * # +# #$# # +#+$ ### +##$. . # + # * # + ######## +Title: #43 + + #### + ##@ ## +### *$.## +# $ $. # +# .# # +# * # +######### +Title: #44 + +####### +#. $.# +# $ # +# # # +#$ $#$# +#+. .# +####### +Title: #45 + + #### + # # +###### .# +#.#@ #$.# +# $$$..# +# $ # +# # ### +####### +Title: #46 + + ##### +## # +# .$.# +# .### +###$ $ ## +# $$. # +# # .@# +######### +Title: #47 + +####### +#. ### +## ##$ .# +# $ # +# ##$ # +###### .# +# $*# +# ##@.# +######### +Title: #48 + +######### +# ## # +# $ # +# #### # +# $## . # +#.$ ... # +# $$## ## +### @# + ####### +Title: #49 + + #### + #@ # + ####$*# +### $ # +# $ $ # +# ## # +#.# ... # +######### +Title: #50 + diff --git a/levelsets/MicroCosmos.txt b/levelsets/MicroCosmos.txt @@ -0,0 +1,430 @@ +Title: Micro Cosmos +Description: The 17 first levels were published on Visual Sokoban in 1999. During the year + 2000, some web sites accepted to publish the 20 first levels. Finally, I stopped + at 40 levels. This set contains 5 levels "3boxes", 26 levels "4boxes", 6 levels + "5boxes" and 3 levels "6boxes". +Author: Aymeric du Peloux +Email: aymeric.du-peloux@gadz.org +Website: http://membres.lycos.fr/nabokos + +#### #### +# ### # +# $ * $ # +# + # +### .$### + # . # + ##### +Title: MICROCOSMOS 01 + +################# +# # # # # # +#.$ # #.$ # +# #.$ .$ # # +# @# # # # # +################# +Title: MICROCOSMOS 02 + + #### +#### # +# $ ## +# #$# # +# $ # +#.### # +#.#### # +#. @ # +######## +Title: MICROCOSMOS 03 + + #### +####### .# +# $ $ $$ # +# @ ...# +### #### + ##### +Title: MICROCOSMOS 04 + + #### + ##### # + # $ $ # + #.# #. # + # $@$ ## +##.# #.## +# * * # +# # # +######### +Title: MICROCOSMOS 05 + + ##### + # # + # # ## +## * ## +# $*$ # +# * # # +## . +# + ####### +Title: MICROCOSMOS 06 + + ##### + # # + # #$## +## @ # +# .#$ # +# . ## +# .#$# +## # + ##### +Title: MICROCOSMOS 07 + + #### +### ### +# . # +# $ $ # +##.#+#.# + # $ $ # + ### ## + #### +Title: MICROCOSMOS 08 + + #### +##### # +# $ $# +# .#. # +## ### ## + # .#. # + #$ @ $ # + # ##### + #### +Title: MICROCOSMOS 09 + + ##### +## # +# #.## +# $$. # +## @ # + # #. # + # $ ## + # ### + # # + # # + # # + #### +Title: MICROCOSMOS 10 + + ##### + #+ ### + ##*# $ # + # * # +## * # ## +# * # +# #### +##### +Title: MICROCOSMOS 11 + +###### +# ## +# * # +# $*$ # +## * ## + # * # + # . # + ##+## + ### +Title: MICROCOSMOS 12 + + ##### +## ### +# ...* # +# #@$# # +# $ # +### #$## + # # + ##### +Title: MICROCOSMOS 13 + + ##### + # # + #.#$## + # # + #.#$ # + # ## + #.#$# +## # +# .#$# +# @ # +# ### +#### +Title: MICROCOSMOS 14 + + #### +### # +# ## +# # ### +## . . .# +##$##.#$## +# $ @ $ # +# ## # +########## +Title: MICROCOSMOS 15 + + #### + # ##### + # $ # + #$# # # +## + ## +# #.#$# +# $. # +### . ## + ##### +Title: MICROCOSMOS 16 + +#### #### +# ### # +# $ $ # +# $#.## # +## . ## + # .@.#$ # + ## # # + # #### + ##### +Title: MICROCOSMOS 17 + + ####### + ## # # + # * * # +## # # +# *#+ ## +# $# +##### # + #### +Title: MICROCOSMOS 18 + + ####### + # # # + #$ + $# + # .#. # +##$.#.$## +# $ . $ # +# # # +######### +Title: MICROCOSMOS 19 + + ##### +##### ## +# #$# # +# $.@# # +## ##.. # +# #. ### +# $ $ # +# ##### +#### +Title: MICROCOSMOS 20 + + ##### + # ### +###*# $ # +# $ @ # # +# # .. # +# . #$### +##$. # + # ### + #### +Title: MICROCOSMOS 21 + + #### + ##### # + # $ # +## #.##$# +# # @. # +# .$ # ## +## ##.# # + # $ # + # ###### + #### +Title: MICROCOSMOS 22 + +##### +# ### +#.#$ # +# @$* # +# $ # +##.#.## + # # + ##### +Title: MICROCOSMOS 23 + + ##### + ##### # + # $ . # # + # # $$ # +## ## # ## +# $.$. # +# ## ## +# .@.## +####### +Title: MICROCOSMOS 24 + + #### + #### # + #.. # +### $@# ## +# $ #.. # +# $ $ # +#### #### + #### +Title: MICROCOSMOS 25 + + ######## + # # # + # $. # + ###$## # + # $.## ## +## .* # +# #$# # +# .@ ##### +## # + ##### +Title: MICROCOSMOS 26 + + ##### + # ### +## #$ @# +# . $ # +#...#$## +# # $ # +# # # +## ### + ##### +Title: MICROCOSMOS 27 + + #### + ## # + ## . # +#### $ # +# $ $.@## +# . ## +####### +Title: MICROCOSMOS 28 + + #### + ### # +## @$ # +# .$ # +# .* ## +# .$ # +## ## + #### +Title: MICROCOSMOS 29 + +###### +# .# +# . @# +# # ### +# # $ ## +# *. ## +#### $$ ## + ## # + ## # + ##### +Title: MICROCOSMOS 30 + + ##### +### # +# *# ## +# # * # +# * # # +## #+ # + # $## + ### # + #### +Title: MICROCOSMOS 31 + + ##### + # # +###*# ## +# * # +# # # # +# * + # +## #$## + ## # + ##### +Title: MICROCOSMOS 32 + + #### +###.@### +# # +# *..# # +## #$$ # + # ## + ##$# # + # # + ##### +Title: MICROCOSMOS 33 + + ######### + # ## # +## * # # +# .$#*@ # +# * ## +######### +Title: MICROCOSMOS 34 + +######## +# * # +# +*** # +## $ # + ## ## + ## # + #### +Title: MICROCOSMOS 35 + + #### + # # +##.@# +# .$##### +# $$ $ # +# .. # +#### ### + #### +Title: MICROCOSMOS 36 + + #### +###### # +# $ $ # +# # .# ## +# . #.@ # +##$# * # + # ##### + ##### +Title: MICROCOSMOS 37 + + ##### + ## ### + # # + #*#*#* # + # #@$ ## +## # #.# +# # +# # # +######## +Title: MICROCOSMOS 38 + + ##### +### ## +# $$.. # +# .@# # +## # # + # $* ## + ### # + #### +Title: MICROCOSMOS 39 + + ##### +### ## +# $# # +# .@.$## +##.# # # + # $ # + ## #### + #### +Title: MICROCOSMOS 40 + diff --git a/levelsets/NaboCosmos.txt b/levelsets/NaboCosmos.txt @@ -0,0 +1,439 @@ +Title: Nabo Cosmos +Description: This set was published progressively on the site of Paul Voyer, Gerald Holler + and Frantisek Pokorny. I wanted this set more difficult than Microcosmos, but + still with small levels. And why Nabokosmos ? Read backwards "Som(e)sokoban";-) + This set contains 2 levels "3boxes", 8 levels "4boxes", 21 levels "5boxes", 7 + levels "6boxes" and 2 levels "7boxes". +Author: Aymeric du Peloux +Email: aymeric.du-peloux@gadz.org +Website: http://membres.lycos.fr/nabokos + + ##### + # ## +## * .## +# $$* # +# * . # +## @ ### + ##### +Title: NABOKOSMOS 01 + + #### +### ### +# *$ # +# # # # +# ** # +### #@# + # ** # + # # # + # *. # + # ### + #### +Title: NABOKOSMOS 02 + +###### +# # +# ##$### +# . * # +## * +# + # $ # + # #*### + # # + ##### +Title: NABOKOSMOS 03 + +######### +# .@.$. # +# # $ # +# ##$#### +# $ ## +### . ## + ### # + ## # + ##### +Title: NABOKOSMOS 04 + + #### + ### # + # # +### # # +# *$ **## +# # +# # +# # # +## ### + ###### +Title: NABOKOSMOS 05 + + ###### +### # +# *##.# +# #. .# +# $ $ # +##$#$#@# + # .# + ####### +Title: NABOKOSMOS 06 + + #### + # ### + # *$ # + # # # +## ** # +# #@# +# ** # +# # # +## *. # + # ### + #### +Title: NABOKOSMOS 07 + + #### +### # +# .* ## +# # # +#@** # +# # # +# $* ## +### # + #### +Title: NABOKOSMOS 08 + + #### +### #### +# $ # +# . *# # +###.@#$## +# . *# # +# $ # +###### # + #### +Title: NABOKOSMOS 09 + + #### + # ###### + # # +## # #.$ # +# * ## ## +# ** # @# +### * # + #### # + #### +Title: NABOKOSMOS 10 + + ##### +#### # +# # +# ##.## +## #@ # + #..$ # +## #$### +# $ # +# # # +# ### +##### +Title: NABOKOSMOS 11 + + ##### +### # +# # ## +# **+ # +## * $*## + # # # # + # # + ### ### + #### +Title: NABOKOSMOS 12 + +#### #### +# #### # +# # +# #### # +##@##. $## +# #.$* # +# ## +# # ## +####### +Title: NABOKOSMOS 13 + + ####### +## # ## +# .$*$. # +# # # +## * ## + #@ * # + ####### +Title: NABOKOSMOS 14 + + ####### +## # ## +# **$. # +# # # +## * ## + # * @# + ####### +Title: NABOKOSMOS 15 + + #### + # # + #. ## + #$@ # +## * # +# * # +# * # +## * # + # ## + #### +Title: NABOKOSMOS 16 + + ###### + # @ ## +## # # +# .*.*.# +# $ $ # +#####$ # + # # + #### +Title: NABOKOSMOS 17 + + ####### +## @ ## +# ### # +# # . # # +# #$. $ # +# $ ### +###$. # + # . # + ##### +Title: NABOKOSMOS 18 + + ##### + #+ .### + # # + ## $ # + ###$#### +## $ # +# . * # +# # # +######## +Title: NABOKOSMOS 19 + + ##### + # # +##*# ##### +# * $ * # +# . @ # +### #*### + ## # + ##### +Title: NABOKOSMOS 20 + + ##### + ## # +## #.## +# @ $ # +# * * ### +##*#*# # + # # + ## ##### + #### +Title: NABOKOSMOS 21 + +##### +# ##### +# # $ ## +#.$.$..@ # +#### #$ # + # ### + ##### +Title: NABOKOSMOS 22 + + #### + ### @## +## * ## +# ##* # +# * # +## #$# # + # . # + # ##### + #### +Title: NABOKOSMOS 23 + +##### +# #### +# $ # +## ##* ## +# #.. # +# $$ # +# #@.### +####### +Title: NABOKOSMOS 24 + +##### #### +# # # # +# $###@ # +## $ $ # + # ....$ # + ## # ## + ####### +Title: NABOKOSMOS 25 + + ##### +##### # +# # +# ..# ## +##$# * # + # +#* # + #$ $ ## + # #### + #### +Title: NABOKOSMOS 26 + + ####### + # # ### + #$ $ # + # .#** # +## #@ # ## +# ..#. # +# $ $ # +###### # + #### +Title: NABOKOSMOS 27 + + #### + # ##### + # # + # * * # +##$# # ## +# . *#* # +# # +####@ ### + #### +Title: NABOKOSMOS 28 + + #### + # @## +## . ### +# $$$. # +#..$.# # +# $ $ # +## . ## + ###### +Title: NABOKOSMOS 29 + + ####### + # # + # .$. # +##$. $## +# * # +# $.$## +##@. # + ##### +Title: NABOKOSMOS 30 + + ##### + # ## +##* ..## +# # # +# * # +# * # ## +## $$# + ### @# + #### +Title: NABOKOSMOS 31 + + ####### + ## # # +## $$ # +# #.# # +# .+. ## +# #.#$## +## $ $ # + #### # + ##### +Title: NABOKOSMOS 32 + +##### +# ### +# # +## #. ### +#@***$* # +# # +# # ### +####### +Title: NABOKOSMOS 33 + + #### + ## ### +## .. # +# * # +# $$ ### +## *.# + # $ # + # * # + # @## + #### +Title: NABOKOSMOS 34 + + ##### + ### # +## #@## +# . *$. # +# # $ # +# #$#$### +# .. # +####### +Title: NABOKOSMOS 35 + + #### +#### # +# . * # +#@# * # +# * ## +##$** # + # # + ### ## + #### +Title: NABOKOSMOS 36 + + #### + # #### + # * ## +## # $.## +# #$.# # +# $ $@ # +# #..# # +########## +Title: NABOKOSMOS 37 + + ##### + # # +### . ## +# *$* ## +# # * * # +# * @# +### #### + #### +Title: NABOKOSMOS 38 + + #### + # # + #* # +### ### +# .* # +# #$ # # +# @** # +## ### + # ## + #### +Title: NABOKOSMOS 39 + + ##### + ### # +## # +# *** ## +# *@ # +# .*$## +## # + ## # + #### +Title: NABOKOSMOS 40 + diff --git a/levelsets/Novoban.txt b/levelsets/Novoban.txt @@ -0,0 +1,487 @@ +Title: Novoban +Description: This collection of 50 levels is intended for beginners. The difficulty of the + levels is increasing. The collection ends with some medium levels. I submitted + these problems to my 10 and 14 year old nephews who completed all in one day + (which is not bad at all for complete beginners). However, if you are an expert, + solving the whole collection in less than 45 minutes is quite a challenge. +Author: François Marques +Email: sokoban@online.fr +Website: http://sokoban.online.fr + +#### +# ### +# $@# +# *. # +## # + ##### +Title: Be ban 10 + +#### +# # +# ### +# $ # +##*#.# +# @ # +# # +# ### +#### +Title: Be ban 9 + +#### +# # +# # +# @### +# $$ # +#. .# +###### +Title: Be ban 7 + +##### +# # +#.#$## +# @ # +#. $ # +### # + #### +Title: Be ban 1 + + #### +### # +#.$$.# +# # # +# @ # +### # + #### +Title: Be ban 5 + + #### +### # +# # +# .### +### #@.# + # $$ # + # $ # + #. ### + #### +Title: Try ban 5 + + ##### +##...## +# $$$.# +# $+$ # +#.$$$ # +##.. # + ###### +Title: Surrounded + + ###### +## # +# $## ## +# # +## .@.# + #$# ### + # # + ##### +Title: Be ban 3 + + #### +## #### +# # +# ..#$ # +### $ # + ###@ # + #### +Title: The gun + + ##### + # # +##### # ## +# # $ # +# $ # # +# .. # # +###@ ##### + # # + #### +Title: Be ban 2 + + ##### + # ### +###@$. # +# *# # +# $. ## +##### # + #### +Title: Try ban 11 + +#### +# #### +# . # +# @$$ # +## ### + #. # + # # + #### +Title: Be ban 14 + + ##### +## .# +# $#.# +# ## +## # # + #$ @ # + # ## + ##### +Title: Be Ban 04 + + ##### + # # +#### # +#.* ## +# $# # +#@ # # +####### +Title: The dog + +#### +#.@# +# ### +# $ # +# $. # +# ### +#### +Title: Be ban 6 + + #### + # # + # # +#### #### +# # $@ # +# $$.# +### ### # + ## .##### + # # + #. # + ##### +Title: Try ban 7 + + # + ### + ## @ ## + # . * . # +# $.$*$.$ # +# ## ## # +# # +########### +Title: The house + + ####### + # .# + # ###.# +## # # +# # $ # +# @ $## +# # # +####### +Title: Be ban 11 + + #### +### #### +# #@.# +# $$.# +# ## $.# +##### # + ##### +Title: Try ban 6 + + ##### + # @ ### + # # # +##$.*# # +# $.* # +# # ### +# # +###### +Title: For ban 21 + + ## + # # + #$@# + #.$## +##.$ ## +# .# ## +# # +##### # + ##### +Title: The finger + +#### +# ### +# @ # +#. #$## +##.$ # +# $.# # +# # # +# ## +### # + #### +Title: Try ban 1 + + ####### +## # ### +# $ # $ # +# .@. # +##$ # $### + # . . # + ####### +Title: For ban 9 + +#### +# ##### +# .*. # +# $ $ @# +# #### +##### +Title: Try ban 17 + +####### +#. . .# +# # # +## $ # + # $$## + # @# + ##### +Title: Try ban 19 + + #### + # ## +## ## +# @$$ # +# # # # +#.. # +####### +Title: Be ban 8 + + #### + # .# +### ## +# $$ # +# # +##$# ## + #.@.# + ##### +Title: Try ban 20 + + ##### + # # +###$# ## +# $@$ # +# # # +#... ### +###### +Title: Try ban 21 + +###### +# # +# .$##### +##*+$ # + # .$# # + ## ##### + #### +Title: For ban 4 + + ####### +## . # +# $*$# # +# #@ # +# . ### +###### +Title: Try ban 22 + + ####### +##....@## +# $ #$ # +# $ $ # +# ## # +######### +Title: For ban 8 + + #### +#### @# +# $$ # +# . $ # +##.. ## + ##### +Title: Try ban 10 + +######## +# .@. # +# $ $ # +##*#*### +# # +# # +# #### +#### +Title: For ban 35 + +####### +# . # +# $..# +###$*### +# $@ # +# # +######## +Title: For ban 18 + + #### +### # +# ## +# # ..# +# $$$@# +### # # + # .# + ##### +Title: Try ban 14 + + ##### +### # +# $$$@# +#... ## +# # +###### +Title: Try ban 16 + + ##### + ## # + # @ # +## $ ## +# $* # +# #. # +# .## +##### +Title: Try ban 18 + + #### + # # +###$ ## +# $ # +#@#*. ## +# *. # +### # + ###### +Title: For ban 26 + + ##### + ###@ # + #. $ .# + # $ ## + ### ### +## $ # +# # +#. ### +##### +Title: Try ban 8 + +#### +# ## +#@. # +#..$## +# $$ # +# # +###### +Title: Try ban 15 + + #### + # ### +### . # +#@$$$ # +# #. # +###. ## + ##### +Title: Try ban 23 + + #### + # # + # #### + # ..* # +## $$@ # +# #### +# # +##### +Title: Try ban 28 + +##### +# ### +# .$ ### +## .# $ # + # .# $@# + ##. $ # + # #### + #### +Title: For ban 10 + +#### +# ##### +# @ ## +# .*.$* # +## #$ # + ## ### + ##### +Title: The plane + + #### +##### # +# ..$## +# $@# $ # +##$.. # + # ## # + ######## +Title: For ban 6 + + ##### + # # + # #$## +##..@ # +# *.$ # +# # $## +# # +###### +Title: For ban 17 + +### +#.##### +#... # +# # # ### +# $$ @# +### $$ # + ### # + ##### +Title: For ban 27 + + ######## + # ## .# +## $ # +# $#$ .# +# #@ ## +#. ## # +######## +Title: Try ban 4 + + ##### + # # +## ### +# $$$$ # +# .... # +## @ ### + ##### +Title: For ban 37 + +######## +#.. @..# +# $$$ # +#### #### +# # +# $ # +# ###### +#### +Title: For ban 5 + diff --git a/levelsets/Original.txt b/levelsets/Original.txt @@ -0,0 +1,1402 @@ +Title: Original & Extra +Description: The 50 original levels from Sokoban plus the 40 from Extra. +Author: Thinking Rabbit + + ##### + # # + #$ # + ### $## + # $ $ # +### # ## # ###### +# # ## ##### ..# +# $ $ ..# +##### ### #@## ..# + # ######### + ####### +Title: 1 + +############ +#.. # ### +#.. # $ $ # +#.. #$#### # +#.. @ ## # +#.. # # $ ## +###### ##$ $ # + # $ $ $ $ # + # # # + ############ +Title: 2 + + ######## + # @# + # $#$ ## + # $ $# + ##$ $ # +######### $ # ### +#.... ## $ $ # +##... $ $ # +#.... ########## +######## +Title: 3 + + ######## + # ....# +############ ....# +# # $ $ ....# +# $$$#$ $ # ....# +# $ $ # ....# +# $$ #$ $ $######## +# $ # # +## ######### +# # ## +# $ ## +# $$#$$ @# +# # ## +########### +Title: 4 + + ##### + # ##### + # #$## # + # $ # +######### ### # +#.... ## $ $### +#.... $ $$ ## +#.... ##$ $ @# +######### $ ## + # $ $ # + ### ## # + # # + ###### +Title: 5 + +###### ### +#.. # ##@## +#.. ### # +#.. $$ # +#.. # # $ # +#..### # $ # +#### $ #$ # + # $# $ # + # $ $ # + # ## # + ######### +Title: 6 + + ##### + ####### ## +## # @## $$ # +# $ # +# $ ### # +### #####$### +# $ ### ..# +# $ $ $ ...# +# ###...# +# $$ # #...# +# ### ##### +#### +Title: 7 + + #### + # ########### + # $ $ $ # + # $# $ # $ # + # $ $ # # +### $# # #### # +#@#$ $ $ ## # +# $ #$# # # +# $ $ $ $ # +##### ######### + # # + # # + #......# + #......# + #......# + ######## +Title: 8 + + ####### + # ...# + ##### ...# + # . .# + # ## ...# + ## ## ...# + ### ######## + # $$$ ## + ##### $ $ ##### +## #$ $ # # +#@ $ $ $ $ # +###### $$ $ ##### + # # + ######## +Title: 9 + + ### ############# +##@#### # # +# $$ $$ $ $ ...# +# $$$# $ #...# +# $ # $$ $$ #...# +### # $ #...# +# # $ $ $ #...# +# ###### ###...# +## # # $ $ #...# +# ## # $$ $ $##..# +# ..# # $ #.# +# ..# # $$$ $$$ #.# +##### # # #.# + # ######### #.# + # #.# + ############### +Title: 10 + + #### + #### # # + ### @###$ # + ## $ # + ## $ $$## ## + # #$## # + # # $ $$ # ### + # $ # # $ ##### +#### # $$ # # +#### ## $ # +#. ### ######## +#.. ..# #### +#...#.# +#.....# +####### +Title: 11 + +################ +# # +# # ###### # +# # $ $ $ $# # +# # $@$ ## ## +# # $ $ $###...# +# # $ $ ##...# +# ###$$$ $ ##...# +# # ## ##...# +##### ## ##...# + ##### ### + # # + ####### +Title: 12 + + ######### + ## ## ###### +### # # ### +# $ #$ # # ... # +# # $#@$## # #.#. # +# # #$ # . . # +# $ $ # # #.#. # +# ## ##$ $ . . # +# $ # # #$#.#. # +## $ $ $ $... # + #$ ###### ## # + # # ########## + #### +Title: 13 + + ####### + ####### # + # # $@$ # + #$$ # ######### + # ###......## # + # $......## # # + # ###...... # +## #### ### #$## +# #$ # $ # # +# $ $$$ # $## # +# $ $ ###$$ # # +##### $ # # + ### ### # # + # # # + ######## # + #### +Title: 14 + + ######## + # # # + # $ # + ### #$ #### + # $ ##$ # + # # @ $ # $# + # # $ #### + ## ####$## # + # $#.....# # # + # $..**. $# ### +## #.....# # +# ### ####### +# $$ # # +# # # +###### # + ##### +Title: 15 + +##### +# ## +# # #### +# $ #### # +# $$ $ $# +###@ #$ ## + # ## $ $ ## + # $ ## ## .# + # #$##$ #.# + ### $..##.# + # #.*...# + # $$ #.....# + # ######### + # # + #### +Title: 16 + + ########## + #.. # # + #.. # + #.. # #### + ####### # ## + # # + # # ## # # +#### ## #### ## +# $ ##### # # +# # $ $ # $ # +# @$ $ # ## +#### ## ####### + # # + ###### +Title: 17 + + ########### + # . # # + # #. @ # + ##### ##..# #### +## # ..### ### +# $ #... $ # $ # +# .. ## ## ## # +####$##$# $ # # # + ## # #$ $$ # # + # $ # # # $## # + # # + # ########### # + #### #### +Title: 18 + + ###### + # @#### +##### $ # +# ## #### +# $ # ## # +# $ # ##### # +## $ $ # # +## $ $ ### # # +## # $ # # # +## # #$# # # +## ### # # ###### +# $ #### # #....# +# $ $ ..#.# +####$ $# $ ....# +# # ## ....# +################### +Title: 19 + + ########## +##### #### +# # $ #@ # +# #######$#### ### +# # ## # #$ ..# +# # $ # # #.# +# # $ # #$ ..# +# # ### ## #.# +# ### # # #$ ..# +# # # #### #.# +# #$ $ $ #$ ..# +# $ # $ $ # #.# +#### $### #$ ..# + # $$ ###....# + # ## ###### + ######## +Title: 20 + +######### +# # +# #### +## #### # # +## #@## # +# $$$ $ $$# +# # ## $ # +# # ## $ #### +#### $$$ $# # + # ## ....# + # # # #.. .# + # # # ##...# + ##### $ #...# + ## ##### + ##### +Title: 21 + +###### #### +# ####### ##### +# $# # $ # # +# $ $ $ # $ $ # +##$ $ # @# $ # +# $ ########### ## +# # #.......# $# +# ## # ......# # +# # $........$ # +# # $ #.... ..# # +# $ $####$#### $# +# $ ### $ $ ## +# $ $ $ $ # +## ###### $ ##### # +# # # +################### +Title: 22 + + ####### + # # #### +##### $#$ # ## +#.. # # # # +#.. # $#$ # $#### +#. # #$ # # +#.. $# # $ # +#..@# #$ #$ # # +#.. # $# $# # +#.. # #$$#$ # ## +#.. # $# # $#$ # +#.. # # # # # +##. #### ##### # + #### #### ##### +Title: 23 + +############### +#.......... .#### +#..........$$.# # +###########$ # ## +# $ $ $ # +## #### # $ # # +# # ## # ## +# $# # ## ### ## +# $ #$### ### ## +### $ # # ### ## +### $ ## # # ## + # $ # $ $ $ # + # $ $#$$$ # # + # # $ ##### + # @## # # # + ############## +Title: 24 + +#### +# ############## +# # ..#......# +# # # ##### ...# +##$# ........# +# ##$###### #### +# $ # ######@ # +##$ # $ ###### # +# $ #$$$## # +# # #$#$### +# #### #$$$$$ # +# # $ # # +# # ## ### +# ######$###### $ # +# # # # +########## ##### +Title: 25 + + ####### + # # ##### +## # #...### +# $# #... # +# $ #$$ ... # +# $# #... .# +# # $######## +##$ $ $ # +## # $$ # # + ###### ##$$@# + # ## + ######## +Title: 26 + + ################# + #... # # ## +##..... $## # #$ # +#......# $ # # +#......# # # # # +######### $ $ $ # + # #$##$ ##$## + ## $ # $ # + # ## ### # ##$ # + # $ $$ $ $ # + # $ $##$ ###### + ####### @ ## + ###### +Title: 27 + + ##### + ##### # + ## $ $ #### +##### $ $ $ ##.# +# $$ ##..# +# ###### ###.. # +## # # #... # +# $ # #... # +#@ #$ ## ####...# +#### $ $$ ##..# + ## $ $ $...# + # $$ $ # .# + # $ $ #### + ###### # + ##### +Title: 28 + +##### +# ## +# $ ######### +## # # ###### +## # $#$#@ # # +# # $ # $ # +# ### ######### ## +# ## ..*..... # ## +## ## *.*..*.* # ## +# $########## ##$ # +# $ $ $ $ # +# # # # # # +################### +Title: 29 + + ########### + # # # +##### # $ $ # +# ##### $## # ## +# $ ## # ## $ # +# $ @$$ # ##$$$ # +## ### # ## # +## # ### #####$# +## # $ #....# +# ### ## $ #....## +# $ $ # #..$. # +# ## $ # ##.... # +##### ######...## + ##### ##### +Title: 30 + + #### + # ######### + ## ## # # + # $# $@$ #### + #$ $ # $ $# ## +## $## #$ $ # +# # # # $$$ # +# $ $ $## #### +# $ $ #$# # # +## ### ###$ # + # #.... # + ####......#### + #....#### + #...## + #...# + ##### +Title: 31 + + #### + ##### # + ## $# +## $ ## ### +#@$ $ # $ # +#### ## $# + #....#$ $ # + #....# $# + #.... $$ ## + #... # $ # + ######$ $ # + # ### + #$ ### + # # + #### +Title: 32 + +############ +## ## # +## $ $ # +#### ## $$ # +# $ # # +# $$$ # #### +# # # $ ## +# # # $ # +# $# $# # +# ..# #### +####.. $ #@# +#.....# $# # +##....# $ # +###..## # +############ +Title: 33 + + ######### + #.... ## + #.#.# $ ## +##....# # @## +# ....# # ## +# #$ ##$ # +## ### $ # + #$ $ $ $# # + # # $ $ ## # + # ### ## # + # ## ## ## + # $ # $ # + ###$ $ ### + # ##### + #### +Title: 34 + +############ ###### +# # # ###....# +# $$# @ .....# +# # ### # ....# +## ## ### # ....# + # $ $ # # #### + # $ $## # # +#### # #### # ## # +# # #$ ## # # +# $ $ # ## # ## +# # $ $ # # # +# $ ## ## # ##### +# $$ $$ # +## ## ### $ # + # # # # + ###### ###### +Title: 35 + + ##### +##### ###### # +# #### $ $ $ # +# $ ## ## ## ## +# $ $ $ $ # +### $ ## ## ## + # ##### #####$$ # + ##$##### @## # + # $ ###$### $ ## + # $ # ### ### + # $$ $ # $$ # + # # ## # + #######.. .### + #.........# + #.........# + ########### +Title: 36 + +########### +#...... ######### +#...... # ## # +#..### $ $ # +#... $ $ # ## # +#...#$##### # # +### # #$ #$ # + # $$ $ $ $## # + # $ #$#$ ##$ # + ### ## # ## # + # $ $ ## ###### + # $ $ # + ## # # # + #####@##### + ### +Title: 37 + + #### +####### @# +# $ # +# $## $# +##$#...# # + # $... # + # #. .# ## + # # #$ # + #$ $ # + # ####### + #### +Title: 38 + + ###### + #############....# +## ## ##....# +# $$## $ @##....# +# $$ $# ....# +# $ ## $$ # # ...# +# $ ## $ # ....# +## ##### ### ##.### +## $ $ ## . # +# $### # ##### ### +# $ # # +# $ #$ $ $### # +# $$$# $ # #### +# # $$ # +###### ### + ##### +Title: 39 + + ############ + # ## + # # #$$ $ # + #$ #$# ## @# + ## ## # $ # ## + # $ #$ # # + # # $ # # + ## $ $ ## # + # # ## $ # + # ## $$# # +######$$ # # +#....# ######## +#.#... ## +#.... # +#.... # +######### +Title: 40 + + ##### + ## ## + ## # + ## $$ # + ## $$ $ # + # $ $ # +#### # $$ ##### +# ######## ## # +#. $$$@# +#.# ####### ## ## +#.# #######. #$ $## +#........... # # +############## $ # + ## ## + #### +Title: 41 + + ######## + #### ###### + # ## $ $ @# + # ## ##$#$ $ $## +### ......# $$ ## +# ......# # # +# # ......#$ $ # +# #$...... $$# $ # +# ### ###$ $ ## +### $ $ $ $ # + # $ $ $ $ # + ###### ###### + ##### +Title: 42 + + ####### + ##### # #### + # # $ # + #### #$$ ## ## # +## # # ## ### +# ### $#$ $ $ # +#... # ## # # +#...# @ # ### ## +#...# ### $ $ # +######## ## # # + ######### +Title: 43 + + ##### + # # + # # ####### + # $@###### + # $ ##$ ### # + # #### $ $ # + # ##### # #$ #### +## #### ##$ # +# $# $ # ## ## # +# # #...# # +###### ### ... # + #### # #...# # + # ### # # + # # + ######### +Title: 44 + +##### #### +#...# # #### +#...### $ # +#....## $ $### +##....## $ # +###... ## $ $ # +# ## # $ # +# ## # ### #### +# $ # #$ $ # +# $ @ $ $ # +# # $ $$ $ ### +# ###### ### +# ## #### +### +Title: 45 + +########## +# #### +# ###### # ## +# # $ $ $ $ # +# #$ # +###$ $$# ### + # ## # $## + ##$# $ @# + # $ $ ### + # # $ # + # ## # # + ## ##### # + # # + #.......### + #.......# + ######### +Title: 46 + + #### + ######### ## +## $ $ ##### +# ## ## ##...# +# #$$ $ $$#$##...# +# # @ # ...# +# $# ###$$ ...# +# $ $$ $ ##....# +###$ ####### + # ####### + #### +Title: 47 + + ######### + #*.*#*.*# + #.*.*.*.# + #*.*.*.*# + #.*.*.*.# + #*.*.*.*# + ### ### + # # +###### ###### +# # +# $ $ $ $ $ # +## $ $ $ $ ## + #$ $ $ $ $# + # $@$ # + # ##### # + #### #### +Title: 48 + + #### + # ## + # ## + # $$ ## + ###$ $ ## + #### $ # +### # ##### # +# # #....$ # +# # $ ....# # +# $ # #.*..# # +### #### ### # + #### @$ ##$## + ### $ # + # ## # + ######### +Title: 49 + + ############ + ##.. # # + ##..* $ $ # + ##..*.# # # $## + #..*.# # # $ # +####...# # # # +# ## # # +# @$ $ ### # ## +# $ $ # # # +###$$ # # # # # + # $ # # ##### + # $# ##### # + #$ # # # # + # ### ## # + # # # ## + #### ###### +Title: 50 + + ######### + # # + # $ $$ $# +### # $ # +#.# $$ ## +#.### $ # +#.#. $ ## #### +#... $## $ # +#...$ $ # +#..###$### #@# +#..# # ### +#### ####### +Title: 51 + + ######## + #......# + #### #......# + # #########...# + # $ $ #...# + # # # # # # # +##### # # #@# # # +# # ### ### ## ## +# $ # $ $ $ # # +# $$$ $ # # +# # ###$###$## # +### # $ # # + ## $ # $ $ $ ### + # # ### ### ## + # $ # + # ########### + #### +Title: 52 + +#################### +# ### +# $# $ ## $ ## +# $### # $$ ## +#.### $ $ ## ## +#...# # # #$ # +#..##$$#### $ # # +#...# $ ## ### +#...$ ### # # # +##.. $# ## ##@ # +###.# # +#################### +Title: 53 + +#################### +# # # # #@# +# $ $ $ # # +## ###..## ### # +# #....#$# $### # +# $ #....# $ $ $ # +# #....# # # $ $ # +# ##..## #$# # +##$## ## # #$## +# $ $ # # # +# # # # # +#################### +Title: 54 + +#################### +# @## # ## +# ## $ $ ## +# ###....# # # ### +# #....# # # $ # +### #...# # # +## ##.# $ $ # +## $ $ ### # # ### +## $ # # $ # +#### $ $# # # # $ # +#### # # ## +#################### +Title: 55 + +#################### +# # ## # @### +## $ # $### # +##$# $ ##$# $ $ # +# $# $ ### +# ## $ ### #....# +# # $# # # # #....## +# $ $ # #....### +##$ ### $ #....#### +# # $ ###### +# # # ###### +#################### +Title: 56 + +#################### +#@ ### # # # +# # # # $ $ # +##### # $ $#$# # +#.#..# ##$ $ # +#..... $ # ## +#..... ###$##$### +#.#..# $ # # +##### # #$ $ # +##### # $ $ $ # +##### # # # # # +#################### +Title: 57 + +#################### +##... ## # # # +#.... $ ## # +#....# # #$###$ # +#...# # # # +##.# #$ # $## # +# # # $ $ ### $ # +# $ $ # # ## # +## # ## #$$# $# # # +# # $ $ # ## +# # # # @# +#################### +Title: 58 + +#################### +# # #@# ## ##### +# # # $ $ ##### +# # ###### $ ### +# # #....# $$ # +##$##$##....# # +# #....##$##$## +# $$ #....# # +# $ $ # # ### # +##### $ $ $ # +##### # # # ## +#################### +Title: 59 + +#################### +# # # # +# $ ## ### ## +##### ## $ $ # +##..## # # $ # # # +#.... $ ##$# ## +#.... $##### #$## +##..# # # # $ # +###.# # $ $ # @# +## $ $ # # #### +## ########### +#################### +Title: 60 + +#################### +# ###..### # +# $$ ###..### $@ # +# # ##......# $ # +# #......# $ # +#### ###..######$ # +# $$$ #..# # # +# $# $ $ $$ #$ # +# # ## $ ## # # +# $ $ ## $ $ # +# # ## ## # # +#################### +Title: 61 + +#################### +# # # # # # # +# @# # ## $ $ ## +#### # # # $ # +# # ## #$ ## ## # +# $ $ $ # +#..###$$## $##$ ## # +#..#.# # $ $ # # +#....# $$ ##$ #### +#....# ##### # +#...### ## # +#################### +Title: 62 + +#################### +#....# # # # +#....# # $ $ # +#.... ## $# # $#$ # +#...# $ $# $ # +#..#### # $ $$ # +# #### #### ### +# # # # +# ## # $ # $ $ # +# ## $ ## $ $ # +# @# # # # +#################### +Title: 63 + +#################### +#....### # +#....##### # #$# ## +#....### #$ $ # +#....### $ #$$## +## #### $# #$ $ # +## #### $ $ # # +#@ ####$###$## $ # +## # # $ # +## ### # $ #### +######## # # # +#################### +Title: 64 + +#################### +# # @#...### +# # ##...## +# # # ##$## ## ....# +# $ # $$$ ....# +###$### $$ ### ##.# +# $ # # #### +# $ # ### # # # +## #$## $ $$ # +# $ ## # # # # +# # # # # +#################### +Title: 65 + +#################### +# # #...#@ # +# # ....# # +# $ # #....# # +# ##$#### ##....# # +# $ $ # #...# # +# $$ # # # $$ # +### $$$# $$ $ # +# $ # # # $# # +# $# # $ # +# # # # # # +#################### +Title: 66 + +#################### +#####@###.##...## # +#####$ ..#...# # +#### ......# $ # +### $ #.....## # ## +## $$# ##### $ $ # +## $# $ ## $$ # +## # # # $ $ # +## $$ ### #$## # +## $# $ $ $ ## +### # # ### +#################### +Title: 67 + +#################### +#@ # # # +## ### ## #### # ## +# # # $$ # +# # # # $ # $ ## ## +# $ # #$$ # # +# ### # ## ## +#..#.# $ # $ # # +#..#.# $ # ## $$ # +#....## $$ $ # # +#.....## # # +#################### +Title: 68 + +#################### +# # # # ## +# $# $ $ ##...$ $ # +# $ # ##....# $ # +# ## $ ##....# $ # +# $ #....## $ # +# $## #...# # +# $$$##$## ### ## +# # # # # # # +# $ # $ ## # +# # #@ # +#################### +Title: 69 + +#################### +# # # # # # # +# $ $ $ # +## # #$###$## ## # +# $ $ # $ # +# ###$##$# # $ # +# # $ $ ###### $# +# $ $$ $ #@#.#...# +# # # # #.#...# +# ########## #.....# +# #.....# +#################### +Title: 70 + +#################### +# # # ## ## +# $# $ # ## # +# $ $ #..# $ # +# $ $ #....# # ## +# $# #......### $ # +# # #....# #$ # +# $ ####..# # # +## $ ## # # $ $## +### $ $#@$ $# # +#### # # # +#################### +Title: 71 + +#################### +# ....# #### +# .... # +# # ########## # +# #$ # ###..# +# $ #$$### #..# +# $ ### $ $ #..# +# $ # $ $ # ##..# +# # $$ # $ ## ## +#@## $# $ $ ## +## ## # ### +#################### +Title: 72 + +#################### +# # #@ # # +# $$ #$$# # # ## # +# # $ $ #$$ # # +## # # # # # # # +# ## # # +# # $ # # # # +# $ #$ # # $ #..# +##$ # #### #...# +# $ #....# +# # # #.....# +#################### +Title: 73 + +#################### +# # ##### # +## $ # #### $ # +#### $$ #..# # # +# $ $ ##..#### ## +# $ ###.... $$ # +# #$# ....# # $ # +# # # $ ..###$# # +# # $ #..# ## # +# $# #### # $## +# # # @# ## +#################### +Title: 74 + +#################### +# # # # #@# +# $ $ # $ # # +##$# $### # $$# # +# # #.### #$ $ # +# #$#....# # ### # +# $ #.....## # # +##$ #.#....#$$ $ # +# ######..## # # # +# $ $ ### # +# # # # # +#################### +Title: 75 + +#################### +# # # # #@## # # +# $ # +# ##$# ##### $ # ## +## ##.....# # # +##$##$#.....###$#$ # +# # ##.....# # ## +# $ ##..## # # +# $ # $ $ $$$ # +## $ $# # # $ # +# ## # # # +#################### +Title: 76 + +###### ##### +# # # # +# $ #### $ # +# $ $ # +# ###@###$ # +########## ### +#.. ## # +#.. ##$ # +#.. ## $ # +#.. ## $ # +#.. $ $ # +### ######### + #### +Title: 77 + + ########### + # # + # $ $ # +###### # $ ##### # +# ##### $ ##$# +# $ $ # +# ## ## # +# ##@##### ## # +# #### # ## ## +#....# # $ # +#....# # # +###### ####### +Title: 78 + +############# +# # +# ### $$ # +# # $ $ # +# $####$###### +# $ ## ##### +# $$ $ ...# +### ## $$# ...# + # ## # ...# + # # ...# + ###@############# + ### +Title: 79 + + ################# +###@## ...# +# # ...# +# $ # ...# +# $$ # ...# +## $ ###$########## + # ### $ # +## $ $ # +# $ # $ # +# $ # # +# $ # # +# # # +########### +Title: 80 + + ##### + ########## # + # # # + # $ $ $$ # + # ##### ## $ # + #$$ #$## $ # + # ### # ##$ # +###### ### $ $ # +#.... ## # +#.... ###### +#.... # +###########@## + ### +Title: 81 + + ###### + #### # + # ## # + # $ # +### #### ######## +# $ $ ## ...# +# $$ $$ ...# +# $ $## ...# +##@## ## ## ...# + ### $ ######## + # $$ # + # # # + ######### +Title: 82 + +####### ######### +# # # ## # +# ### # # $ # +# # $ ### $ # +# $$ ##$ # +# #### ## # +#@############ ## +###.. #####$ # + #.. #### # + #.. $$ # + #.. #### $ # + #.. # # # + ######## ##### +Title: 83 + +####### +# ########## +# # # ## +# $ # $ $ # +# $ # $ ## # +# $$ ##$ $ # +## # ## ####### +## # ## ...# +# #$ ...# +# $$ ...# +# ##@# ...# +################ +Title: 84 + +############ +# # ## +# $ $ # ###### +#### ##### # + #.. # #### # + #.#### #### # + #.... # $ #### + # ...# # $$$# ## +###.#### ## $@$ # +# ##### $ # # +# #.# $ $###$ # +# #.######## # $ # +# #.. ## $ # +# # ####### $ # # # +# # # ## +##### ########## +Title: 85 + +################ +# #@ # # +# # # # # $ $$# +# #...# #$$$ # +# ...# # $ $$## +# ##.## # ## # +# #... $ # +# ## ### ####### +# # #### +###### +Title: 86 + + ##### + #### ## ##### + # $ ### # + # $@$ $ $ # + # #$######## ## + # # $ # # + # # $ $ # # # +## # $# # ##### +# ## # # +# $ # ### # +##### ## #....# +# $ ....# +# #....# +################ +Title: 87 + +############# +#........#### +#...#### # ##### +#...# ### $ # +#...$$ $ $ # +# .# $ $# $ ## +#...# #$# $ # +#.# # $ $ # +#. #$###$####$# +## # $ $ # + # # $@$ # # + # # #### $ $# + # # ### # + # # $$ # ##### + # # # + ######### +Title: 88 + + ################## + # $ ...#.## + # ####..... # + # ####### #..... # + # # $ $ ##....## + # # $ # # ###...# + # # $@$ $ ##### # +## # $ $ $$ $ # +# #$# $# # $## # +# ## ## ## $ # # +# # $# $ $ # # +# # ####### +# ########$## # +# # $ # +######## ##### + ### # + #### +Title: 89 + +#################### +#..# # # +#.$ $ #$$ $## $## +#.$# ### ## ## # +# # $ # $$ $ # +# ### # # #$ #### +# ## # $ #@ # # +# $ $ ##.## $ # +# # $# $# $ ### +# # # # ### # +# ######## # # +# # #.#.# +##$########$# ...# +# .* # ##.#.# +# .*...* $ .....# +#################### +Title: 90 + diff --git a/levelsets/microban.txt b/levelsets/microban.txt @@ -0,0 +1,1680 @@ +Title: Microban +Description: Microban (155 puzzles, revised April, 2000) This is a good set for beginners and + children. Most of the puzzles are small and illustrate a particular concept. + More experienced players should also find them interesting, since they are as + different from each other as I could make them given their size. Sokoholics + could perhaps time themselves on completing the whole set. This set also + contains puzzles which I thought were interesting but too easy to include in my + regular sets. +Author: David W Skinner +Email: sasquatch98930@yahoo.com +Website: http://users.bentonrea.com/~sasquatch/sokoban/ + +#### +# .# +# ### +#*@ # +# $ # +# ### +#### +Title: 1 + +###### +# # +# #@ # +# $* # +# .* # +# # +###### +Title: 2 + + #### +### #### +# $ # +# # #$ # +# . .#@ # +######### +Title: 3 + +######## +# # +# .**$@# +# # +##### # + #### +Title: 4 + + ####### + # # + # .$. # +## $@$ # +# .$. # +# # +######## +Title: 5 + +###### ##### +# ### # +# $$ #@# +# $ #... # +# ######## +##### +Title: 6 + +####### +# # +# .$. # +# $.$ # +# .$. # +# $.$ # +# @ # +####### +Title: 7 + + ###### + # ..@# + # $$ # + ## ### + # # + # # +#### # +# ## +# # # +# # # +### # + ##### +Title: 8 + +##### +#. ## +#@$$ # +## # + ## # + ##.# + ### +Title: 9 + + ##### + #. # + #.# # +#######.# # +# @ $ $ $ # +# # # # ### +# # +######### +Title: 10 + + ###### + # # + # ##@## +### # $ # +# ..# $ # +# # +# ###### +#### +Title: 11 + +##### +# ## +# $ # +## $ #### + ###@. # + # .# # + # # + ####### +Title: 12 + +#### +#. ## +#.@ # +#. $# +##$ ### + # $ # + # # + # ### + #### +Title: 13 + +####### +# # +# # # # +#. $*@# +# ### +##### +Title: 14 + + ### +######@## +# .* # +# # # +#####$# # + # # + ##### +Title: 15 + + #### + # #### + # ## +## ## # +#. .# @$## +# # $$ # +# .# # +########## +Title: 16 + +##### +# @ # +#...# +#$$$## +# # +# # +###### +Title: 17 + +####### +# # +#. . # +# ## ## +# $ # +###$ # + #@ # + # # + #### +Title: 18 + +######## +# .. # +# @$$ # +##### ## + # # + # # + # # + #### +Title: 19 + +####### +# ### +# @$$..# +#### ## # + # # + # #### + # # + #### +Title: 20 + +#### +# #### +# . . # +# $$#@# +## # + ###### +Title: 21 + +##### +# ### +#. . # +# # # +## # # + #@$$ # + # # + # ### + #### +Title: 22 + +####### +# * # +# # +## # ## + #$@.# + # # + ##### +Title: 23 + +# ##### + # # +###$$@# +# ### +# # +# . . # +####### +Title: 24 + + #### + # ### + # $$ # +##... # +# @$ # +# ### +##### +Title: 25 + + ##### + # @ # + # # +###$ # +# ...# +# $$ # +### # + #### +Title: 26 + +###### +# .# +# ## ## +# $$@# +# # # +#. ### +##### +Title: 27 + +##### +# # +# @ # +# $$### +##. . # + # # + ###### +Title: 28 + + ##### + # ## + # # + ###### # +## #. # +# $ $ @ ## +# ######.# +# # +########## +Title: 29 + +#### +# ### +# $$ # +#... # +# @$ # +# ## +##### +Title: 30 + + #### + ## # +##@$.## +# $$ # +# . . # +### # + ##### +Title: 31 + + #### +## ### +# # +#.**$@# +# ### +## # + #### +Title: 32 + +####### +#. # # +# $ # +#. $#@# +# $ # +#. # # +####### +Title: 33 + + #### +### #### +# # +#@$***. # +# # +######### +Title: 34 + + #### +## # +#. $# +#.$ # +#.$ # +#.$ # +#. $## +# @# +## # + ##### +Title: 35 + +#### +# ############ +# $ $ $ $ $ @ # +# ..... # +############### +Title: 36 + + ### +##### #.# +# ###.# +# $ #.# +# $ $ # +#####@# # + # # + ##### +Title: 37 + +########## +# # +# ##.### # +# # $$ . # +# . @$## # +##### # + ###### +Title: 38 + +##### +# #### +# # # .# +# $ ### +### #$. # +# #@ # +# # ###### +# # +##### +Title: 39 + + ##### + # # +## ## +# $$$ # +# .+. # +####### +Title: 40 + +####### +# # +#@$$$ ## +# #...# +## ## + ###### +Title: 41 + + #### + # # + #@ # +####$.# +# $.# +# # $.# +# ## +###### +Title: 42 + + #### + # @# + # # +###### .# +# $ .# +# $$# .# +# #### +### # + #### +Title: 43 + +##### +#@$.# +##### +Title: 44 + +###### +#... # +# $ # +# #$## +# $ # +# @ # +###### +Title: 45 + + ###### +## # +# ## # +# # $ # +# * .# +## #@## + # # + ##### +Title: 46 + + ####### +### # +# $ $ # +# ### ##### +# @ . . # +# ### # +##### ##### +Title: 47 + +###### +# @ # +# # ## +# .# ## +# .$$$ # +# .# # +#### # + ##### +Title: 48 + +###### +# @ # +# $# # +# $ # +# $ ## +### #### + # # # + #... # + # # + ####### +Title: 49 + + #### +### ##### +# $ @..# +# $ # # +### #### # + # # + ######## +Title: 50 + +#### +# ### +# ### +# $*@ # +### .# # + # # + ###### +Title: 51 + + #### +### @# +# $ # +# *.# +# *.# +# $ # +### # + #### +Title: 52 + + ##### +##. .## +# * * # +# # # +# $ $ # +## @ ## + ##### +Title: 53 + + ###### + # # + ##### . # +### ###. # +# $ $ . ## +# @$$ # . # +## ##### + ###### +Title: 54 + +######## +# @ # # +# # +#####$ # + # ### + ## #$ ..# + ## # ### + #### +Title: 55 + +##### +# ### +# $ # +##* . # + # @# + ###### +Title: 56 + + #### + # # + #@ # + # # +### #### +# * # +# $ # +#####. # + #### +Title: 57 + +#### +# #### +#.*$ # +# .$# # +## @ # + # ## + ##### +Title: 58 + +############ +# # +# ####### @## +# # # +# # $ # # +# $$ ##### # +### # # ...# + #### # # + ###### +Title: 59 + + ######### + # # +##@##### # +# # # # +# # $.# +# ##$##.# +##$## #.# +# $ #.# +# # ### +######## +Title: 60 + +######## +# # +# #### # +# #...@# +# ###$### +# # # +# $$ $ # +#### ## + #.### + ### +Title: 61 + + ########## +#### ## # +# $$$....$@# +# ### # +# #### #### +##### +Title: 62 + +##### #### +# ##### .# +# $ ######## +### #### .$ @ # + # # # #### # + #### #### ##### +Title: 63 + + ###### +## # +# $ # +# $$ # +### .##### + ##.# @ # + #. $ # + #. #### + #### +Title: 64 + + ###### + # # + # $ # + ####$ # +## $ $ # +#....# ## +# @ # +## # # + ######## +Title: 65 + + ### + #@# + ###$### +## . ## +# # # # +# # # # +# # # # +# # # # +# # # # +## $ $ ## + ##. .## + # # + # # + ##### +Title: 66 + +##### +# ## +# # # +#@$*.## +## . # + # $# # + ## # + ##### +Title: 67 + + #### + # ###### +## $ # +# .# $ # +# .#$##### +# .@ # +###### +Title: 68 + +#### #### +# #### # +# # # # +# # $## +# . .#$ # +#@ ## # $ # +# . # # +########### +Title: 69 + +##### +# @ #### +# # +# $ $$ # +##$## # +# #### +# .. # +##.. # + ### # + #### +Title: 70 + +########### +# # ### +# $@$ # . .# +# ## ### ## # +# # # # +# # # # # +# ######### # +# # +############# +Title: 71 + + #### + ## ##### + # $ @ # + # $# # +#### ##### +# # # +# $ # +# ..# # +# .#### +# ## +#### +Title: 72 + +#### +# ##### +# $$ $ # +# # +## ## ## +#...#@# +# ### ## +# # +# # # +######## +Title: 73 + + #### + # ####### + #$ @# .# +## #$$ .# +# $ ##..# +# # ##### +### # + ##### +Title: 74 + + ####### +## ....## +# ###### +# $ $ @# +### $ $ # + ### # + ###### +Title: 75 + + ##### +## # +# ##### +# #.# # +#@ #.# $ # +# #.# ## +# # # +## ##$$# + ## # + # #### + #### +Title: 76 + +########## +# @ .... # +# ####$## +## # $ $ # + # $ # + # ###### + ##### +Title: 77 + + ####### +## ## +# $ $ # +# $ $ $ # +## ### #### + #@ .....# + ## ### + ####### +Title: 78 + + ######### + # # # +## $#$# # +# .$.@ # +# .# # +########## +Title: 79 + +#### +# ####### +# . ## .# +# $# .# +## ## # .# + # # # + #### # # + # @$ ### + # $$ # + # # + ###### +Title: 80 + + ##### + # # + # . # +## * # +# *## +# @## +## $ # + # # + ##### +Title: 81 + +##### +# ### +# . ## +##*#$ # +# .# $ # +# @## ## +# # +####### +Title: 82 + +###### +# ## +# $ $ ## +## $$ # + # # # + # ## ## + # . .# + # @. .# + # #### + #### +Title: 83 + +######## +# ... # +# ### ## +# # $ # +## #@$ # + # # $ # + # ### ##### + # # + # ### # + ##### ##### +Title: 84 + + #### + ####### # + # $ # + # $ $ # + # ######## +## # . # +# # # # +# @ . ## +## # # # + # . # + ####### +Title: 85 + + #### + ### ## + ## $ # +## $ # # +# @#$$ # +# .. ### +# ..### +##### +Title: 86 + + #### +###### # +# # +# ... .# +##$###### +# $ # +# $### +## $ # + ## @ # + ###### +Title: 87 + + #### + # ### # + # # # + # # # # + # #$ #.# + # # # # # + # #$ #.# # + # # # # +####$ #.# # +# @ # # +# # ## # +######## +Title: 88 + +########## +# ## # +# $ $@# # +#### # $ # + #.# ## + # #.# $# + # #. # + # #. # + ###### +Title: 89 + + ######## + # @ # + # $ $ # +### ## ### +# $..$ # +# .. # +########## +Title: 90 + +########### +# .## # +# $$@..$$ # +# ##. # +########### +Title: 91 + + #### + # # ##### + # # # # + # ######.# # +#### $ . # +# $$# ###.# # +# # # # # +######### #@ ## + # # + #### +Title: 92 + + ######### +## # ## +# # # +# $ # $ # +# *.* # +####.@.#### +# *.* # +# $ # $ # +# # # +## # ## + ######### +Title: 93 + +######### +# @ # # +# $ $ # +##$### ## +# ... # +# # # +###### # + #### +Title: 94 + +######## +#@ # +# .$$. # +# $..$ # +# $..$ # +# .$$. # +# # +######## +Title: 95 + + ###### + # # + # # +##### # +# #.##### +# $@$ # +#####.# # + ## ## ## + # $.# + # ### + ##### +Title: 96 + + #### + # ######## +#### $ $.....# +# $ ###### +#@### ### +# $ # +# $ # # +## # # + # # + ###### +Title: 97 + +##### +# ## #### +# $ ### .# +# $ $ .# +## $#####.# #### +# $ # # .### # +# # # .# @ # +### # # # + #### ## ## + ####### +Title: 98 + + ##### + # # +####### ####### # # +# # # # # +# @ #### # #### +# # ....## #### # +# ##### ## $$ $ $ # +###### # # + # ########## + #### +Title: 99 + +####### +# @# # +#.$ # +#. # $## +#.$# # +#. # $ # +# # # +######## +Title: 100 + + ##### + # # + # # ####### + # * # # + ## ## # # + # #* # +### # # # ### +# *#$+ # +# # ## ## +# # * # +####### # # + # # + ##### +Title: 101 + +########### +#....# # +# # $$ # +# @ ## # +# ##$ # +###### $ # + # # + ###### +Title: 102 + + ##### + # . ## +### $ # +# . $#@# +# #$ . # +# $ ### +## . # + ##### +Title: 103 + + ##### +##### # +# $ # +# $#$#@# +### # # + # ... # + ### ## + # # + #### +Title: 104 + + #### #### +## ### ## +# # # # +# *. .* # +###$ $### + # @ # +###$ $### +# *. .* # +# # # # +## ### ## + #### #### +Title: 105 + + ######## + # # + #@ $ # +## ###$ # +# .....### +# $ $ $ # +###### # # + # # + ##### +Title: 106 + +######## +# # +# $*** # +# * * # +# * * # +# ***. # +# @# +######## +Title: 107 + +#### ##### +# ### # ## +# # #$ $ # +#..# ##### # # +# @ # $ $ # +#..# ## +## ######### + ##### +Title: 108 + + ####### +# # # +# # # # # + # @ $ # +### ### # +# ### # +# $ ##.# +## $ #.# + ## $ .# +# ## $#.# +## ## #.# +### # # +### ##### +Title: 109 + + #### + # # + # $#### +###. . # +# $ # $ # +# . .### +####$ # + # @# + #### +Title: 110 + +###### +# #### +# ...# +# ...# +###### # + # # # + # $$ ## + # @$ # + # $$ # + ## $# # + # # + ###### +Title: 111 + + ##### +## #### +# $$$ # +# # $ # +# $## ## +### #. # + # # # + ##### ### + # # ## + # @....# + # # + # # # + ######## +Title: 112 + + ##### + ## # +### # # +# . # +# ## ##### +# . . # ## +# # @ $ ### +#####. # $ # + #### $ # + ## $ ## + # ## + # # + #### +Title: 113 + +###### +# ### +# # $ # +# $ @ # +## ## ##### +# #......# +# $ $ $ $ # +## ###### + ##### +Title: 114 + + ##### +##### #### +# # # +# #..... # +## ## # ### + #$$@$$$ # + # ### + ####### +Title: 115 + + ##### + ### # +####.....# +# @$$$$$ # +# # ## +##### # + ##### +Title: 116 + + #### #### + # ### ## + # @ # +##..### # +# # # +#...#$ # # +# ## $$ $ # +# $ ### +#### ### + #### +Title: 117 + + ##### +## ## +# $ ## +# $ $ ## +###$# . ## + # # . # + ## ##. # + # @ . ## + # # # + ######## +Title: 118 + + ###### + # ## + ## ## # + # $$ # # + # @$ # # + # # # +#### # # +# ... ## +# ## +####### +Title: 119 + + #### +####### # +# $ ## +# $##### # +# @# # # +## ##.. # +# # ..#### +# $ ### +# $### +# # +#### +Title: 120 + + ###### + # . # +##$.# # +# * # +# ..### +##$ # ##### +## ## # # +# #### # # +# @ $ $ # +## # # + ########## +Title: 121 + +##### +# ### +# #$ # +# $ # +# $ $ # +# $# # +# @### +## ######## +# ...# +# # +########..# + #### +Title: 122 + +######## +# # +# $ $$ ######## +##### @##. . # + #$ # . # + # #. . ## + #$# ## # # + # # + # ### ## + # # #### + #### +Title: 123 + +############## +# # # +# $@$$ # . ..# +## ## ### ## # + # # # # + # # # # # + # ######### # + # # + ############# +Title: 124 + + ##### + # ## + # $ # +######## #@## +# . # $ $ # +# $# # +#...##### # +##### ##### +Title: 125 + + ########### +##....... # +# $$$$$$$@ # +# # # # ## +# # # # +# ####### +##### +Title: 126 + +## #### +#### #### + # $ $. # +## # .$ # +# ##.### +# $ . # +# @ # # +# ###### +#### +Title: 127 + + ######### +### # # +# * $ . . # +# $ ## ## +####*# # + # @ ### + # ### + ##### +Title: 128 + + ######### +### @ # # +# * $ *.. # +# $ # # +####*# ### + # ## + # ### + ##### +Title: 129 + +##### ##### +# ####.. # +# $$$ # +# $# .. # +### @# ## # + # ## # + ########## +Title: 130 + +##### +# # +# . # +#.@.### +##.# # +# $ # +# $ # +##$$ # + # ### + # # + #### +Title: 131 + +#### +# @### +#.* ##### +#..#$$ $ # +## # + # # ## # + # ##### + ##### +Title: 132 + + ####### + # . .### + # . . . # +### #### # +# @$ $ # +# $$ $ # +#### ### + ##### +Title: 133 + + #### +######### # +# ## $ # +# $ ## # +### #. .# ## + # #. .#$## + # # # # + # @ $ # + # ####### + #### +Title: 134 + +####### +# ##### +# $$#@##..# +# # # +# $ # # # +#### $ ..# + ######## +Title: 135 + + ####### + # # +## ###$## +#.$ @ # +# .. #$ # +#.## $ # +# #### +###### +Title: 136 + + #### + ## ### +#### # $ # +# #### $ $ # +# ..# #$ # +# # @ ### +## #..# ### + # ## # # + # # + ######## +Title: 137 + + #### +### # +# ### +# # . .# +# @ ...#### +# # # # ## +# # $$ # +##### $ $ # + ##$ # ## + # # + ###### +Title: 138 + + #### +## #### +# ...# +# ...# +# # ## +# #@ #### #### +##### $ ### # + # ##$ $ # + ### $$ # + # $ ## ### + # ###### + ###### +Title: 139 + +######## ##### +# # ### # +# ## $ # +#.# @ ## $ ## +#.# # $ ## +#.# $ ## +#. ## ##### +## # + ###### +Title: 140 + + ######## + # # . # + # .*.# + # # * # +####$##.## +# $ # +# $ ## $ # +# @# # +########## +Title: 141 + + #### + # # + # #### +###$.$ # +# .@. # +# $.$### +#### # + # # + #### +Title: 142 + +#### +# #### +# $ # +# .# # +# $# ## +# . # +#### # + # # + ### ### + # $ # +## #$# ## +# $ @ $ # +# ..#.. # +### ### + ##### +Title: 143 + + #### + ### ##### + # $$ # # + # $ . .$$## + # .. #. $ # +### #** . # +# . **# ### +# $ .# .. # +##$$.@. $ # + # # $$ # + ##### ### + #### +Title: 144 + + ##### + # @ # + ## ## +###.$$$.### +# $...$ # +# $.#.$ # +# $...$ # +###.$$$.### + ## ## + # # + ##### +Title: 145 + + ####### +## . ## +# .$$$. # +# $. .$ # +#.$ @ $.# +# $. .$ # +# .$$$. # +## . ## + ####### +Title: 146 + + ##### +######## # +#. . @#.# +# ### # +## $ # # + # $ ##### + # $# # + ## # # + # ## + ##### +Title: 147 + +########### +# . # # +# #. @ # +# #..# ####### +## ## $$ $ $ # + ## # + ############# +Title: 148 + + #### +## ### +#@$ # +### $ # + # ###### + # $....# + # # #### + ## # # + # $# # + # # + # ### + #### +Title: 149 + + #### + ##### # + # $####### +## ## ..# ...# +# $ $$#$ @ # +# ### # +####### # #### + #### +Title: 150 + + #### + # # + ### # +## $ # +# # # +# #$$ ###### +# # # .# +# $ @ .# +### ####..# + #### #### +Title: 151 + +###### #### +# # # +#.## #$## # +# # # # +#$ # ### # # +# # # # # +# # #### # # # +#. @ $ * . # +############### +Title: 152 + +############# +#.# @# # # +#.#$$ # $ # +#.# # $# # +#.# $# # $## +#.# # $# # +#.# $# # $# +#.. # $ # +#.. # # # +############ +Title: 153 + + ############################ + # # + # ######################## # + # # # # + # # #################### # # + # # # # # # + # # # ################ # # # + # # # # # # # # + # # # # ############ # # # # + # # # # # # # # # + # # # # # ############ # # # + # # # # # # # # + # # # # ################ # # + # # # # # # +##$# # #################### # +#. @ # # +############################# +Title: 154 + + ###### #### +#####*# ################# ## +# ### # +# ######## #### ## # +### #### # #### #### ## +#*# # .# # # # # # # +#*# # # # ## # ## ## # +### ### ### # ## # ## ## + # # #*# # # # # + # # ### ##### #### # # + ##### ##### ####### ###### + # # # #**# # +## # # #**# ####### ## # +# ######### # ##### ### +# # # $ #*# +# ######### ### @##### #*# +##### #### #### ###### +Title: 155 +