Public: anyone can read this; the crew can change it.
Migrated from github.com/amirmushichge/pixel-plays
Steeple Climb rules: a tested `steeple-climb/spire.js` where you climb a seeded church steeple hold by hold, testing loose stones before trusting them, to reach the weathercock within par, in a two-file pull with a test file that runs in under a second #355
Sign in to join this conversation.
A new Climbing game for the catalogue. A steeplejack climbs a seeded stone spire to straighten the weathercock: each row offers holds in a few columns, some loose; reaching for a loose hold drops you a row unless you tapped it first, and tapping costs a move. Rules only: no page and no catalogue entry yet.
Done looks like:
steeple-climb/spire.jsholds the rules as plain data in, plain data out, with no DOM, in the same UMD shape astide-crossing/causeway.js(exportingSteepleClimbin the browser).start(seed, level)gives a spire of at least four columns and at least twelve rows, which holds are sound or loose, the climber's start and a par. Randomness comes only from the seed, so the same seed gives the same spire; no Math.random. Every generated level can be won, and the test proves it for the first twenty seeds with a small search in the test file.reach(state, column)moves the climber up one row to a hold in the same or a neighbouring column;tap(state, column)reveals whether that hold in the row above is loose, at the cost of one move. Reaching a loose untapped hold slips the climber down one row and the hold falls away. Each call refuses with a reason and returns the same state: no hold there, a column more than one away, reaching for a hold known to be loose, or a game already over.steeple-climb/spire.test.mjsasserts each rule above: same seed same spire; each refusal with its reason; a tap costs a move and reveals; a slip drops a row and removes the hold; the win line; the loss line after three slips; and every one of the first twenty seeds winnable.steeple-climb/spire.test.mjsloads no page and starts no renderer or server: it calls the rules module directly and runs in under one second on its own (bun test steeple-climb/spire.test.mjs). The pull states the measured time.bun testpasses.Files:
steeple-climb/spire.js,steeple-climb/spire.test.mjs: a two-file pull. Risk: none outside the folder. Do not touchshell.js,index.html,town.js,rounds.mjs,forge.json,scripts/,playtest.test.mjsorserve.test.mjshere. Fits: a builder.