How chikhanhnguyen/the-binding-of-isaac works
This JavaFX game takes the player from a menu into room-based 2D play: movement and shooting interact with enemies and obstacles, while pickups and a merchant support play; health loss leads to a game-over screen. The README describes procedurally generated rooms culminating in a boss, while the tree shows eight room controllers and a Boss model. Room-transition wiring is visible in excerpts, but boss placement and procedural-generation details are not, so those links are omitted. Some subsystem paths below use their exact enclosing source directory because their specific wiring was not sampled.
Main entry points: JeuController.java Room controller · SalleAvecEnnemyController.java Enemy room logic · Ennemis.java Enemies and boss · SceneController.java Scene manager
Components 20
Application flow
- JavaFX entry
src/main/java/bindingofisaac/Main.java - Menu
src/main/java/com/intech/bindingofisaac/controller/MenuController.java - Scene manager
src/main/java/com/intech/bindingofisaac/controller/SceneController.java - Game over
src/main/java/com/intech/bindingofisaac/controller/GameOverController.java
Room gameplay
- Room controller
src/main/java/com/intech/bindingofisaac/controller/JeuController.java - Room variants
src/main/java/com/intech/bindingofisaac/controller - Room layouts
src/main/resources - Walls and obstacles
src/main/java/personnages/SolidObject.java - Player model
src/main/java/personnages/Perso.java
Combat and entities
- Enemy room logic
src/main/java/com/intech/bindingofisaac/controller/SalleAvecEnnemyController.java - Enemies and boss
src/main/java/personnages/Ennemis.java - Boss model
src/main/java/personnages/Boss.java - Player projectiles
src/main/java/com/intech/bindingofisaac/controller/BalleController.java - Enemy projectiles
src/main/java/com/intech/bindingofisaac/controller/BalleEnnemyController.java - Bombs
src/main/java/com/intech/bindingofisaac/controller/BombeController.java
Items and HUD
- Inventory counters
src/main/java/com/intech/bindingofisaac/controller/ItemController.java - Dropped items
src/main/java/com/intech/bindingofisaac/controller/FreeItemController.java - Merchant shop
src/main/java/com/intech/bindingofisaac/controller/MarchandController.java - Minimap
src/main/java/com/intech/bindingofisaac/controller/MiniMapController.java
Other components
- Player
Connections 27
- Player → JavaFX entry: launches
- JavaFX entry → Menu: loads
- Menu → Scene manager: starts game
- Scene manager → Room layouts: loads layout
- Scene manager → Room variants: creates controller
- Menu → Game over
- Player → Room controller: inputs movement
- Room controller → Scene manager: switches rooms
- Room controller → Walls and obstacles: builds collision walls
- Room controller → Player model: controls
- Room controller → Inventory counters: initializes HUD
- Room controller → Bombs: initializes and updates
- Room controller → Dropped items: updates display
- Room controller → Minimap: updates display
- Room controller → Merchant shop: updates when present
- Room variants → Enemy room logic: extends gameplay
- Enemy room logic → Enemies and boss: moves and fires
- Enemy room logic → Bombs: checks hits
- Enemy room logic → Player projectiles: checks hits
- Enemy room logic → Enemy projectiles: checks player hits
- Player projectiles → Enemies and boss: damages and removes
- Enemies and boss → Enemy projectiles: creates projectiles
- Enemies and boss → Dropped items: drops item
- Enemy room logic → Dropped items: updates drops
- Boss model → Enemies and boss
- Dropped items → Inventory counters
- Merchant shop → Inventory counters