James Hendershott

Case study

Adventure Game

Text adventure game I wrote for CS 3620 Server-Side Web Architecture. OOP scene graph, inventory system, Tkinter GUI, and riddle mechanics. The original Python version is my code. The Django web rebuild is an incomplete AI-expanded version.

Adventure Game screenshot
PythonDjangoPostgreSQLInteractive Fiction

Overview

A text adventure game inspired by classics like Zork, built for CS 3620 Server-Side Web Architecture. Grade: A. I wrote the code myself. I used AI to research concepts and look things up, but the code is mine.

There are two repos:

  • 1980_Style_Adventure-Game — the original Python version. This is my code.
  • retro_adventure_game — an AI-expanded Django web version that's incomplete. I'm honest about that distinction.

What I Built (Original Python Version)

Course project using Python (standard library + Tkinter). No frameworks, no external dependencies beyond the standard library.

  • OOP scene graph: Rooms as objects with directional connections, descriptions, and item lists
  • Inventory system: Pick up, drop, use, and examine items
  • Tkinter GUI: Graphical interface for the text adventure
  • File-based outcomes logging: Game events written to file
  • Riddle mechanics: Puzzles with progressive hints
  • Command parser: Handles verb-noun patterns with synonym support
  • Save/load: Serialize game state to JSON
# Room definition example
rooms = {
    "entrance": {
        "description": "A dimly lit cave entrance. Passages lead north and east.",
        "exits": {"north": "hallway", "east": "storage"},
        "items": ["torch", "note"],
    }
}

Django Web Rebuild (Incomplete)

I started rebuilding this as a Django/PostgreSQL web app with session-based game state and a retro CRT visual style. That version uses AI-generated code more heavily and is not finished. The original Python version is the one I'm proud of.

What I Learned

  • Designing a text parser that feels natural without NLP libraries
  • Modeling game state as serializable data structures
  • OOP design patterns for game entities
  • Moving from a CLI prototype to thinking about web architecture