DoorDasH

A competitive Java desktop board game set in the Monsters, Inc. universe, built on object-oriented class hierarchies and driven by CSV data.

Type

Java desktop game

Context

University project (team)

Focus

OOP design, data-driven build

DoorDasH title screen: Scare vs Laugh Touchdown, with Play as Scarer and Play as Laugher options
Title screen. Two monsters race across the Floor — one Scarer, one Laugher — powered by energy collected from children.

What it is

DoorDasH is a two-player board game set in the world of Monsters, Inc., where the city runs on energy collected from children. Two monsters race across a numbered board of a hundred cells, battling through doors, traps, and wild card effects, each using their own powers to outlast the other. One player takes the Scarer side, the other the Laugher side.

The design problem

The interesting part of the build wasn't the UI — it was modeling a game with many kinds of things that share behavior but differ in the details. There are several types of monster, several types of card, and several types of board cell, and each type needs its own rules while still being handled uniformly by the game loop. That's a classic object-oriented modeling problem, and it drove the whole structure of the code.

Architecture

The domain is built on three class hierarchies, each using abstraction so the game engine can treat every variant through a shared interface:

Using abstract bases here means the game loop never needs a giant switch statement over "what kind of thing is this" — each subclass knows how to behave, and the engine just calls the shared method.

Data-driven design

The game's content lives in CSV files rather than being hard-coded, so the board, monsters, and cards can change without touching the game logic. There are three CSV formats, each with a distinct row shape for its type; the cards file, for example, carries a rarity field that the others don't. Parsing each format into the right objects is what connects the data files to the class hierarchies above.

DoorDasH gameplay board: a 100-cell grid with doors, cards, socks, belts, and named monster cells, plus player stat panels
The playable board — a hundred cells of doors, cards, traps, and named monster spaces, with each player's live stats (energy, position, role, and status effects) tracked above and below.

A team build

DoorDasH was built by a team of four, working through the design together rather than splitting it into separate territories — so I worked across the whole system, from the class hierarchies to the CSV parsing to the game loop. Building it collaboratively meant every design decision had to be one the whole team understood and agreed on, which is a large part of why the structure stayed consistent. It also made me a better team player: I learned to write code and make design choices that the rest of the team could pick up and build on, not just ones that made sense to me.

The code

The full source is on GitHub.