# keascrimson/2026_coo_zeldiablo_raplouch architecture

> Architecture diagram of the GitHub repository keascrimson/2026_coo_zeldiablo_raplouch, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/keascrimson/2026_coo_zeldiablo_raplouch
- Repository: https://github.com/keascrimson/2026_coo_zeldiablo_raplouch

## Overview

Zeldiablo is a Java maze-exploration game. The player’s main loop is to provide movement, attack, or interaction commands; the game updates the hero, combat, monsters, and maze mechanics; and the graphical renderer displays the resulting state. Maze files initialize levels, while the documented gameplay also includes multi-floor travel, traps, switches, and an amulet-based win condition. The graph reflects the sampled source and README; some UI wiring and documented configuration behavior are not fully evidenced in excerpts.

Main entry points: [`projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java) (Game Loop), [`projet_zeldiablo/src/raplouchJeu/Chargement.java`](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/Chargement.java) (Level Loader), [`projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java`](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java) (Game Renderer), [`projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java`](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java) (Game Window)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Game Runtime"]
  node_main["Application Entry<br/>[MainRaplouch.java]"]
  node_engine["Graphic Engine"]
  node_game_api["Game Interface<br/>[Jeu.java]"]
  node_game["Game Loop<br/>[RaplouchJeu.java]"]
end

subgraph group_presentation["Controls &amp; Display"]
  node_controls["Input Controller<br/>[Controleur.java]"]
  node_command["Input Command<br/>[Commande.java]"]
  node_window["Game Window"]
  node_drawing_panel["Drawing Panel<br/>[PanelDessin.java]"]
  node_game_draw["Game Renderer"]
  node_sprites["Sprite Assets"]
end

subgraph group_world["Maze &amp; Loading"]
  node_loader["Level Loader<br/>[Chargement.java]"]
  node_level_files["Maze Level Files"]
  node_maze["Maze Grid<br/>[Labyrinthe.java]"]
  node_tile_element["Tiles &amp; Elements<br/>[Element.java]"]
end

subgraph group_gameplay["Gameplay Domain"]
  node_hero["Hero<br/>[Hero.java]"]
  node_character["Character State<br/>[Personnage.java]"]
  node_monsters["Monster AI<br/>[Monstre.java]"]
  node_monster_types["Zombie &amp; Ghost<br/>[Fantome.java]"]
  node_stairs["Floor Stairs<br/>[Escalier.java]"]
  node_switch_trap["Switches &amp; Traps"]
  node_amulet["Win Objective<br/>[Amulette.java]"]
end

node_player(("Player"))

node_player -.->|"provides input"| node_controls
node_controls -->|"creates commands"| node_command
node_main -->|"starts engine"| node_engine
node_engine -->|"opens window"| node_window
node_window -->|"registers controller"| node_controls
node_window -->|"creates panel"| node_drawing_panel
node_window -->|"configures renderer"| node_game_draw
node_engine -->|"updates game"| node_game_api
node_game -->|"implements"| node_game_api
node_game -->|"reads commands"| node_command
node_main -->|"loads levels"| node_loader
node_loader -->|"reads maze data"| node_level_files
node_loader -->|"builds grid"| node_maze
node_loader -->|"creates hero"| node_hero
node_loader -->|"creates enemies"| node_monster_types
node_loader -->|"creates game levels"| node_game
node_game -->|"moves and attacks"| node_hero
node_game -->|"dispatches pursuit"| node_monsters
node_game -->|"checks maze state"| node_maze
node_game -->|"handles interactions"| node_switch_trap
node_game -->|"checks objective"| node_amulet
node_game -->|"activates stairs"| node_stairs
node_monster_types -->|"extends behavior"| node_monsters
node_hero -->|"inherits state"| node_character
node_monsters -->|"inherits state"| node_character
node_maze -->|"stores elements"| node_tile_element
node_game_draw -->|"renders state"| node_game
node_game_draw -->|"loads images"| node_sprites
node_game_draw -->|"draws maze"| node_maze
node_game_draw -->|"draws hero"| node_hero
node_game -->|"tracks deaths"| node_character

click node_main "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/main/MainRaplouch.java"
click node_engine "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/MoteurGraphique.java"
click node_game_api "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/Jeu.java"
click node_game "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java"
click node_controls "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/Controleur.java"
click node_command "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/Commande.java"
click node_window "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java"
click node_drawing_panel "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/PanelDessin.java"
click node_game_draw "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java"
click node_sprites "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/tree/main/projet_zeldiablo/assets/sprite"
click node_loader "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/Chargement.java"
click node_level_files "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/tree/main/projet_zeldiablo/assets"
click node_maze "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Labyrinthe.java"
click node_tile_element "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Element.java"
click node_hero "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Hero.java"
click node_character "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Personnage.java"
click node_monsters "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Monstre.java"
click node_monster_types "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Fantome.java"
click node_stairs "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Escalier.java"
click node_switch_trap "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/CaseDeclencheur.java"
click node_amulet "https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Amulette.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_engine,node_game_api,node_game toneBlue
class node_controls,node_command,node_window,node_drawing_panel,node_game_draw,node_sprites toneAmber
class node_loader,node_level_files,node_maze,node_tile_element toneMint
class node_hero,node_character,node_monsters,node_monster_types,node_stairs,node_switch_trap,node_amulet toneRose
class node_player toneIndigo
```

## Components

### Game Runtime

- [Application Entry](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/main/MainRaplouch.java): `projet_zeldiablo/src/main/MainRaplouch.java`
- [Graphic Engine](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/MoteurGraphique.java): `projet_zeldiablo/src/moteurJeu/MoteurGraphique.java`
- [Game Interface](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/Jeu.java): `projet_zeldiablo/src/moteurJeu/Jeu.java`
- [Game Loop](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java): `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`

### Controls & Display

- [Input Controller](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/Controleur.java): `projet_zeldiablo/src/moteurJeu/Controleur.java`
- [Input Command](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/Commande.java): `projet_zeldiablo/src/moteurJeu/Commande.java`
- [Game Window](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java): `projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java`
- [Drawing Panel](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/moteurJeu/PanelDessin.java): `projet_zeldiablo/src/moteurJeu/PanelDessin.java`
- [Game Renderer](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java): `projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java`
- [Sprite Assets](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/tree/main/projet_zeldiablo/assets/sprite): `projet_zeldiablo/assets/sprite`

### Maze & Loading

- [Level Loader](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/Chargement.java): `projet_zeldiablo/src/raplouchJeu/Chargement.java`
- [Maze Level Files](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/tree/main/projet_zeldiablo/assets): `projet_zeldiablo/assets`
- [Maze Grid](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Labyrinthe.java): `projet_zeldiablo/src/raplouchJeu/models/Labyrinthe.java`
- [Tiles & Elements](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Element.java): `projet_zeldiablo/src/raplouchJeu/models/Element.java`

### Gameplay Domain

- [Hero](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Hero.java): `projet_zeldiablo/src/raplouchJeu/models/Hero.java`
- [Character State](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Personnage.java): `projet_zeldiablo/src/raplouchJeu/models/Personnage.java`
- [Monster AI](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Monstre.java): `projet_zeldiablo/src/raplouchJeu/models/Monstre.java`
- [Zombie & Ghost](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Fantome.java): `projet_zeldiablo/src/raplouchJeu/models/Fantome.java`
- [Floor Stairs](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Escalier.java): `projet_zeldiablo/src/raplouchJeu/models/Escalier.java`
- [Switches & Traps](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/CaseDeclencheur.java): `projet_zeldiablo/src/raplouchJeu/models/CaseDeclencheur.java`
- [Win Objective](https://github.com/keascrimson/2026_coo_zeldiablo_raplouch/blob/main/projet_zeldiablo/src/raplouchJeu/models/Amulette.java): `projet_zeldiablo/src/raplouchJeu/models/Amulette.java`

### Other components

- **Player**

## Connections

- Player → Input Controller: provides input
- Input Controller → Input Command: creates commands (evidence: `projet_zeldiablo/src/moteurJeu/Controleur.java`)
- Application Entry → Graphic Engine: starts engine (evidence: `projet_zeldiablo/src/main/MainRaplouch.java`)
- Graphic Engine → Game Window: opens window (evidence: `projet_zeldiablo/src/moteurJeu/MoteurGraphique.java`)
- Game Window → Input Controller: registers controller (evidence: `projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java`)
- Game Window → Drawing Panel: creates panel (evidence: `projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java`)
- Game Window → Game Renderer: configures renderer (evidence: `projet_zeldiablo/src/moteurJeu/InterfaceGraphique.java`)
- Graphic Engine → Game Interface: updates game (evidence: `projet_zeldiablo/src/moteurJeu/MoteurGraphique.java`)
- Game Loop → Game Interface: implements (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Game Loop → Input Command: reads commands (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Application Entry → Level Loader: loads levels (evidence: `projet_zeldiablo/src/main/MainRaplouch.java`)
- Level Loader → Maze Level Files: reads maze data (evidence: `projet_zeldiablo/src/raplouchJeu/Chargement.java`)
- Level Loader → Maze Grid: builds grid (evidence: `projet_zeldiablo/src/raplouchJeu/Chargement.java`)
- Level Loader → Hero: creates hero (evidence: `projet_zeldiablo/src/raplouchJeu/Chargement.java`)
- Level Loader → Zombie & Ghost: creates enemies (evidence: `projet_zeldiablo/src/raplouchJeu/Chargement.java`)
- Level Loader → Game Loop: creates game levels (evidence: `projet_zeldiablo/src/raplouchJeu/Chargement.java`)
- Game Loop → Hero: moves and attacks (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Game Loop → Monster AI: dispatches pursuit (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Game Loop → Maze Grid: checks maze state (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Game Loop → Switches & Traps: handles interactions (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Game Loop → Win Objective: checks objective (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Game Loop → Floor Stairs: activates stairs (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
- Zombie & Ghost → Monster AI: extends behavior (evidence: `projet_zeldiablo/src/raplouchJeu/models/Fantome.java`)
- Hero → Character State: inherits state (evidence: `projet_zeldiablo/src/raplouchJeu/models/Hero.java`)
- Monster AI → Character State: inherits state (evidence: `projet_zeldiablo/src/raplouchJeu/models/Monstre.java`)
- Maze Grid → Tiles & Elements: stores elements (evidence: `projet_zeldiablo/src/raplouchJeu/models/Labyrinthe.java`)
- Game Renderer → Game Loop: renders state (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java`)
- Game Renderer → Sprite Assets: loads images (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java`)
- Game Renderer → Maze Grid: draws maze (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java`)
- Game Renderer → Hero: draws hero (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchDessin.java`)
- Game Loop → Character State: tracks deaths (evidence: `projet_zeldiablo/src/raplouchJeu/RaplouchJeu.java`)
