about summary refs log blame commit diff stats
path: root/linux/300.txt
blob: 62413330f47f98322def9f64430bb54850b15fa3 (plain) (tree)
e2b55208 ^













<
Layers in the 3xx series use all the available syntax sugar for SubX programs.
Functions here can be called from Mu programs if they meet certain criteria:

  - There's a signature for them in 400.mu
  - Inouts on the stack, outputs in registers
  - Valid Mu types everywhere (Mu's type system isn't expressive enough for
    everything SubX does in rare situations.)
  - No way to for an `addr` to escape a function. No `(... addr ... addr ...)`
    inouts, and no `(... addr ...)` outputs.

While functions _can_ be called, not all SubX functions meeting these criteria
_should_ be called. In particular, avoid exporting functions that could be
misused. A classic example is trying to add a `size-of` operator. If you're
doing that you're likely going to rely on programmers to use it correctly. Mu
tries to be idiot-proof. Even if SubX requires greater care, using SubX
primitives from Mu should not.
ow-x: hidden; /* a stupid hack to say "no no no" to horizontal scrolling */ display: block; } </style> </head> <body> <h1>Puzzle Dungeon</h1> <p><a href="index.html">Play the game.</a></p> <p>You play as a little rover that was sent to a far off planet. Once there you discovered an endless dungeon. Can you navigate it?</p> <p>Issue commands to move the rover, commands you can use include:</p> <ul> <li>up</li> <li>down</li> <li>left</li> <li>right</li> <li>get</li> <li>use</li> <li>scan</li> </ul> <p>The directions are how you move the rover. <code>down 3</code> will move the rover 3 spaces towards the bottom of the level.</p> <p>You interact with collectable objects using <code>get</code> and <code>use</code>. Once on top of an item use <code>get battery</code> to pick up a battery and add it to your inventory. Once it is in your inventory you can <code>use</code> it.</p> <p>Collectable items:</p> <ul> <li>battery, b</li> <li>shield, s</li> <li>potion, p</li> </ul> <p>Note that shields are used automatically when you take damage.</p> <p>Scanning is useful for revealing traps, though be careful because it uses a lot of power!</p> <p>Every level has a par score -- you have to complete that level at or under the par score -- every time you hit the submit button your par is increased, bringing you closer to the level's par.</p> <p>Moving the rover takes power, make sure to monitor your power levels and use batteries to keep moving.</p> <p>Potions are useful if you take damage.</p> </body> </html>