# imannil/java-game-engine-pacman architecture

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

- Interactive diagram: https://gitdiagram.com/imannil/java-game-engine-pacman
- Repository: https://github.com/imannil/java-game-engine-pacman

## Overview

This repository is a JavaFX Pac-Man game with a separate settings and map-authoring interface. The player launches the game, supplies directional input, and navigates a tile map while collecting dots and avoiding or confronting ghosts; the game renders the resulting state. A settings/map-writer application is also present. The README is empty, and several central files (notably GameScene and PathFinder) were not sampled, so links for those subsystems are limited to relationships evidenced by the available source.

Main entry points: [`src/com/jgegroup/pacman/GameScene.java`](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/GameScene.java) (Game scene), [`src/com/jgegroup/pacman/objects/Map.java`](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/Map.java) (Game map), [`src/com/jgegroup/pacman/objects/characters/Pac.java`](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/Pac.java) (Pac-Man), [`src/com/jgegroup/pacman/objects/characters/Ghost.java`](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/Ghost.java) (Ghosts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_game["Game runtime"]
  node_game_main["Game launcher<br/>[Main.java]"]
  node_scene["Game scene<br/>[GameScene.java]"]
  node_input["Key handler<br/>[KeyHandler.java]"]
  node_pac["Pac-Man<br/>[Pac.java]"]
  node_ghost["Ghosts<br/>[Ghost.java]"]
  node_collision["Collision checks"]
  node_paths["Ghost movement<br/>[GhostMovement.java]"]
  node_pathfinder["Path finder<br/>[PathFinder.java]"]
  node_ui["Game UI<br/>[UI.java]"]
end

subgraph group_world["World and assets"]
  node_map["Game map<br/>[Map.java]"]
  node_tile["Tiles and walls<br/>[Tile.java]"]
  node_mapdata["Default map data<br/>[map1.txt]"]
end

subgraph group_editor["Settings and editor"]
  node_settings_app["Settings and editor app<br/>[Launch.java]"]
  node_config_builder["Config builder<br/>[ConfigBuilder.java]"]
  node_config["Game configuration<br/>[Config.java]"]
  node_editor_map["Editable map<br/>[Map.java]"]
  node_map_writer["Map writer contract<br/>[MapWriter.java]"]
  node_editor_entry["Editor entry point<br/>[Main.java]"]
end

subgraph group_legacy["Legacy code"]
  node_legacy_cycle["Legacy game cycle<br/>[GameCycle.java]"]
end

node_player(("Player"))

node_player -->|"presses keys"| node_input
node_game_main -->|"creates scene"| node_scene
node_scene -->|"handles input"| node_input
node_scene -->|"updates and renders"| node_pac
node_scene -->|"updates and renders"| node_ghost
node_scene -->|"renders map"| node_map
node_scene -->|"renders UI"| node_ui
node_pac -->|"checks movement"| node_collision
node_ghost -->|"checks movement"| node_collision
node_ghost -->|"chooses direction"| node_paths
node_paths -->|"uses paths"| node_pathfinder
node_pac -->|"reads and updates tiles"| node_map
node_map -->|"reads map"| node_mapdata
node_map -->|"creates tiles"| node_tile
node_editor_entry -->|"starts"| node_settings_app
node_settings_app -->|"builds config"| node_config_builder
node_config_builder -->|"creates"| node_config
node_settings_app -->|"creates and saves map"| node_editor_map
node_editor_map -->|"implements"| node_map_writer

click node_game_main "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/Main.java"
click node_scene "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/GameScene.java"
click node_input "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/KeyHandler.java"
click node_pac "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/Pac.java"
click node_ghost "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/Ghost.java"
click node_collision "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/CollisionChecker.java"
click node_paths "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/GhostMovement.java"
click node_pathfinder "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/PathFinder.java"
click node_ui "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/UI.java"
click node_map "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/Map.java"
click node_tile "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/immovable/Tile.java"
click node_mapdata "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/res/maps/map1.txt"
click node_settings_app "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/Launch.java"
click node_config_builder "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/config/ConfigBuilder.java"
click node_config "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/config/Config.java"
click node_editor_map "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/Map.java"
click node_map_writer "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/MapWriter.java"
click node_editor_entry "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/mapwriter/Main.java"
click node_legacy_cycle "https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/legacy/GameCycle.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_game_main,node_scene,node_input,node_pac,node_ghost,node_collision,node_paths,node_pathfinder,node_ui toneBlue
class node_map,node_tile,node_mapdata toneAmber
class node_settings_app,node_config_builder,node_config,node_editor_map,node_map_writer,node_editor_entry toneMint
class node_legacy_cycle toneRose
class node_player toneIndigo
```

## Components

### Game runtime

- [Game launcher](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/Main.java): `src/com/jgegroup/pacman/Main.java`
- [Game scene](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/GameScene.java): `src/com/jgegroup/pacman/GameScene.java`
- [Key handler](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/KeyHandler.java): `src/com/jgegroup/pacman/KeyHandler.java`
- [Pac-Man](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/Pac.java): `src/com/jgegroup/pacman/objects/characters/Pac.java`
- [Ghosts](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/Ghost.java): `src/com/jgegroup/pacman/objects/characters/Ghost.java`
- [Collision checks](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/CollisionChecker.java): `src/com/jgegroup/pacman/CollisionChecker.java`
- [Ghost movement](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/characters/GhostMovement.java): `src/com/jgegroup/pacman/objects/characters/GhostMovement.java`
- [Path finder](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/PathFinder.java): `src/com/jgegroup/pacman/PathFinder.java`
- [Game UI](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/UI.java): `src/com/jgegroup/pacman/objects/UI.java`

### World and assets

- [Game map](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/Map.java): `src/com/jgegroup/pacman/objects/Map.java`
- [Tiles and walls](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/objects/immovable/Tile.java): `src/com/jgegroup/pacman/objects/immovable/Tile.java`
- [Default map data](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/res/maps/map1.txt): `res/maps/map1.txt`

### Settings and editor

- [Settings and editor app](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/Launch.java): `src/com/jgegroup/GameConfig/Launch.java`
- [Config builder](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/config/ConfigBuilder.java): `src/com/jgegroup/GameConfig/config/ConfigBuilder.java`
- [Game configuration](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/config/Config.java): `src/com/jgegroup/GameConfig/config/Config.java`
- [Editable map](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/Map.java): `src/com/jgegroup/GameConfig/Map.java`
- [Map writer contract](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/GameConfig/MapWriter.java): `src/com/jgegroup/GameConfig/MapWriter.java`
- [Editor entry point](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/mapwriter/Main.java): `src/com/jgegroup/mapwriter/Main.java`

### Legacy code

- [Legacy game cycle](https://github.com/imannil/java-game-engine-pacman/blob/working-branch/src/com/jgegroup/pacman/legacy/GameCycle.java): `src/com/jgegroup/pacman/legacy/GameCycle.java`

### Other components

- **Player**

## Connections

- Player → Key handler: presses keys
- Game launcher → Game scene: creates scene
- Game scene → Key handler: handles input
- Game scene → Pac-Man: updates and renders
- Game scene → Ghosts: updates and renders
- Game scene → Game map: renders map
- Game scene → Game UI: renders UI
- Pac-Man → Collision checks: checks movement
- Ghosts → Collision checks: checks movement
- Ghosts → Ghost movement: chooses direction
- Ghost movement → Path finder: uses paths
- Pac-Man → Game map: reads and updates tiles
- Game map → Default map data: reads map
- Game map → Tiles and walls: creates tiles
- Editor entry point → Settings and editor app: starts
- Settings and editor app → Config builder: builds config
- Config builder → Game configuration: creates
- Settings and editor app → Editable map: creates and saves map
- Editable map → Map writer contract: implements
