From: gilles@disys.dis.incom.de (Gilles Kohl) Newsgroups: comp.sys.handhelds Subject: MOVE: a Sokoban clone for HP48SX Date: 21 Dec 90 Organization: Delta Information Systems [Note: This is one of the most addictive, maddening, clever games I've ever played. Don't even load it unless you have spare time to kill! A version of this game, called "Box Jockey", is the top selling game for the Sharp Wizard. It satisfies the three essentials for game excellence: (1) the rules are simple, (2) winning is challenging, and (3) winning depends 100% upon skill and/or persistance (no random chance is involved). I also like a fourth quality: play at your own pace! Since the game has 50 levels (!), each of which is a separate file on the disk, I put them all into a separate directory called MOVELEVL. As written, the program copies levels as needed, since most people don't have huge amounts of memory available. But if you have a RAM card, and your MEM is at least 43K, you can copy all 50 levels into your machine right away by changing to the MOVELEVL directory on your PC, typing "KERMIT SEND *" on the PC (you must have KERMIT.EXE in your command path), and pressing these keys on your HP 48: [MOVE] [LEVL] [blue-shift] [PRG] (that's the SERVER key). All the levels (L1 through L50) will be copied from the LEVELS directory (on the PC) to the LEVL directory (on the 48). Then press [UP] and you're ready to play. If you don't have enough MEM for that, just follow the instructions below for loading levels as needed. Be sure that your PC is in the MOVELEVL directory. This program makes an excellent idle time killer, so be sure to bring a spare set of batteries! -jkh-] Summary: -------- This posting describes (and contains) MOVE, a SOKOBAN clone for the HP48SX. The aim of the game is to solve puzzles of increasing complexity. Description: ------------ [In short: Use the arrow keys to push the squares onto the dots. When all the dots are covered by the squares, you win, and graduate to the next level. You can't PULL blocks, only PUSH them, and this requires a great deal of strategic thinking. The higher the level, the greater the strategies. -jkh-] In MOVE, you're in charge of garbage collection inside your HP48. The 'garbage collector' is shown by a cross-shaped symbol. Your task is to collect lost objects and move them onto free storage locations. The characters in MOVE are: (all shapes 4x4 size, '.' == off, '#' == on) .#.. ###. your 'collector' or mover. .#.. Control using [left], [right], [up] and [down] arrows .... (appears a little differently on storage locations, see below) ###. #.#. a moveable object. Push them to their storage locations. ###. you may only push objects (no pulling them) and only one .... object at a time. .... .#.. an empty storage location. Push moveable objects upon them. .... .... ###. ###. successfully filled-up storage location. ###. (you may still move the object away again, if necessary) .... #.#. .#.# an unmoveable object. No way to move it - just stands in #.#. your way. .#.# Your mover may move onto storage locations - this is what it looks like if on one of them: .#.. #.#. the 'mover' above an empty storage location. .#.. (there is no special meaning to this, except to indicate .... that you're above a storage location) The aim of the game is filling up all storage locations by moving all (moveable) objects to them. This successfully completes a garbage collection task, and you're promptly assigned the next one. (Unless you've solved them all). I'll refer to 'garbage collection tasks' as 'levels' in the following. Keys ---- Move around using the arrow keys. As one may easily commit an unrecoverable mistake (by pushing an object into a corner, for instance), there is a 'save status' feature. Hitting [STO] will store the current situation. [EVAL] will return you to this point (or to the initial situation by default, had no [STO] been previously done). You may use the ['] key (the [HOME] key) to restart a level from scratch. (This resets your saved situation, too). Saving is quite fast. The 'mover' flashes shortly to indicate that the operation has been carried out. "Remember, Al says: Save early, save often" Hitting the backspace key [<-] (the [CLR] key) leaves MOVE. Hitting [STO] prior to quitting in this way ensures that a subsequent {PLAY} will take you where you left. Finally, you may turn your HP48 off during a MOVE game by pressing the [+/-] key. MOVE will then resume at the press of the [ON] key. Customizing the keyboard ------------------------ You can easily change the keyboard assignements. {Keys} will yield a list of all MOVE keys (standard row/column notation), in the order: Up Down Left Right Reset_level Save_level Restore_level Quit OFF [Edit] this list, change to your needs and store back using {Keys} Levels ------ There are a total of 50 levels, each one taking up about 700 bytes, and thus downloading them all at once to the HP48 is not recommended (unless you're a lucky owner of a memory expansion card). MOVE comes packaged with the first 3 levels and takes up about 7K. The complete collection of all 50 levels is encluded in the [MOVELEVL directory on this disk. -jkh-]. When you solve a level, it gets purged - thus freeing memory. The next level is then looked for and shown if found. If it is not found, you're told so, and MOVE exits. The required level number is left in the stack. Pressing {LdLvl} will request it from the host provided that: - your cable connection is set up - your PC is running KERMIT SERVER - your PC is in the [MOVELEVL directory] Note that you may request several levels at once by giving LdLvl two parameters: start and end level number. Example: Suppose you successfully completed level 3. MOVE exits with a message telling you to use LdLvl. The number 4 is left in the stack. Hitting [7] {LdLvl} will now request levels four to seven from your host. Three or four levels (especially the higher ones) are probably enough distracting material for a day. But: your mileage may vary ... The levels steadily increase in difficulty and should really be played in sequence. You may however go directly to a certain level by using {GtoLvl} - where is the desired level number. --- Despite some weird-looking binaries, MOVE is written entirely in user language. Hope you'll have fun with it.