Skip to content

Latest commit

 

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DoorDash 🚪

A Monsters, Inc.-themed board game built with JavaFX, made for our Computer Programming Lab course (Team 169) at GUC.

Two scarers — sorry, two monsters — race around a 100-cell board, rolling dice, dodging traps, stealing energy, and triggering power-ups, all set in the halls of Monsters Inc. First monster to reach the final cell with 1000+ energy wins.

Gameplay

  • Pick a side. Each game randomly assigns you a monster from the Scarer or Laugher role, with a random opponent from the other role.

  • Roll and move. Each turn rolls a die and advances your monster around the board.

  • Land on something interesting. The board is full of special cells:

    • 🃏 Card cells — draw a card that can swap positions, shield you, steal energy, send someone back to start, or confuse both monsters (which secretly swaps their roles for a few turns).
    • 👹 Monster cells — station monsters guard these tiles. Land on one that shares your role and you get to trigger your power-up for free.
    • 🧦 Contamination Sock and 🎢 Conveyor Belt cells — board hazards that mess with your position.
    • 🚪 Door cells — Monsters Inc. doors with their own activation logic.
  • Spend energy on power-ups. Every monster type has a unique ability:

    Monster Power-up Passive trait
    Dasher Momentum Rush — 3x speed for 3 turns Always moves at 2x speed otherwise
    Dynamo Freezes the opponent for a turn Energy gains/losses are doubled
    MultiTasker Focus Mode — move at normal speed for 2 turns Normally moves at half speed, but gets a flat energy bonus on every gain
    Schemer Chain Attack — steals energy from the opponent and every stationed monster on the board Skims a little extra energy off every gain
  • Win condition. Reach cell 99 with at least 1000 energy before your opponent does.

Project structure

The codebase follows an MVC-style split:

src/
├── controller/         # Mediates between the game engine and the JavaFX views
│   └── interfaces/     # GameController, GameEventListener, CanisterModifier
├── model/game/engine/
│   ├── Game.java        # Core game loop: turns, dice, win condition
│   ├── Board.java        # Board layout, cell placement, card deck
│   ├── Constants.java     # Board size, special cell indices, energy thresholds
│   ├── monsters/          # Monster (abstract) + Dasher, Dynamo, MultiTasker, Schemer
│   ├── cards/              # Card (abstract) + Swapper, Shield, EnergySteal, StartOver, Confusion
│   ├── cells/               # Cell (base) + CardCell, MonsterCell, DoorCell, ConveyorBelt, ContaminationSock, TransportCell
│   ├── dataloader/           # Reads monsters/cards/cells in from CSV
│   └── exceptions/            # Custom exceptions (invalid move, out of energy, bad CSV, ...)
└── view/                # JavaFX UI: StartScreen, GameBoard, CardPopup, DiceDisplay, TurnTracker, ...

Monster types, cards, and board layout aren't hardcoded — they're loaded at runtime from monsters.csv, cards.csv, and cells.csv, so the cast and board can be tweaked without touching the Java code.

Built with

  • Java + JavaFX for the UI and game loop
  • Custom OOP design: abstract Monster and Card base classes with role-specific polymorphic behavior, a Board/Cell hierarchy for tile effects, and a dedicated exception hierarchy for game-rule violations
  • CSV-driven data loading for monsters, cards, and board layout

Running it

This was built as an Eclipse project, so the easiest way to run it is:

  1. Clone the repo and import it into Eclipse (or your IDE of choice) as an existing Java project.
  2. Make sure a JavaFX SDK is configured for your JDK (JavaFX isn't bundled with the JDK from Java 11 onward) and add it to the module path / VM arguments.
  3. Run src/view/App.java.

Make sure cards.csv, cells.csv, and monsters.csv stay in the project's working directory — the game reads them on launch.

Team

Built by Team 169:

About

Team 169's game

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages