seppedl 679639df9f Wire game transitions end-to-end, add Guide lookup, add 79 tests
Transitions:
- Add I-HOUSEWRECK (tick 20) and I-VOGONS (tick 50) timed events to
  earth.py, queued at startup in main.py
- I-VOGONS demolishes Earth and moves player to Vogon Hold
- Fix airlock→Dark transition to call Dark room M-ENTER handler
- Fix dream-restore to support multiple callbacks (list instead of single)
- Add state.finish() call to RAMP for endgame victory

Guide system:
- Add 16-entry lookup database to GUIDE object (space, towel, vogons,
  poetry, beast, babel fish, earth, magrathea, marvin, etc.)
- "consult guide about X" now returns relevant entry text

Tests (79 passing):
- test_engine.py (14): containment, flags, articles, clock mechanics
- test_parser.py (20): directions, compound verbs, prepositions, synonyms
- test_earth.py (21): full opening sequence, puzzles, navigation
- test_vogon.py (4): room existence, Hold first-visit sequence
- test_dark.py (7): inventory clearing, dream dispatch, probabilities
- conftest.py: shared game fixture and send() helper

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 22:04:22 +02:00

The Hitchhiker's Guide to the Galaxy

A Python text adventure engine for the classic 1984 Infocom interactive fiction game, built from the original ZIL source code. The long-term goal is an accessible version for blind players via TTS/STT.

Requirements

  • Python 3.12+
  • uv

Install & Run

# Clone the repo
git clone https://gitea.smashconsult.be/seppedl/h2g2.git
cd h2g2

# Install dependencies and run
uv run h2g2

Or install it into an environment:

uv pip install -e .
h2g2

You can also run it directly as a module without installing:

uv run python -m h2g2.main

What's playable

The Earth opening sequence: wake up in your bedroom, find your gown and aspirin, make your way downstairs, head to the pub, and meet Ford Prefect.

Project structure

h2g2/
    engine/          # Core game engine (parser, object model, game loop)
    content/         # Game content (rooms, objects, puzzles)
    main.py          # Entry point
*.zil                # Original ZIL source code (Infocom, 1984)
docs/                # Original game manuals, maps, and story file (.z5)
S
Description
Python Infocom H2G2 interpreter
Readme 71 MiB
Languages
Python 100%