# marcusokodugha/chess architecture

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

- Interactive diagram: https://gitdiagram.com/marcusokodugha/chess
- Repository: https://github.com/marcusokodugha/chess

## Overview

This repository is a desktop chess game: a player interacts with a graphical board, submits moves, and sees the resulting game state. The board coordinates move validation, legal-move generation, turn/state tracking, and optional computer play; the view renders the board and handles mouse input. The tree and excerpts support these core links, but do not establish all of the game’s wiring, so uncertain connections are omitted. The README is empty.

Main entry points: [`src/main/java/marcus/okodugha/chessv1/Model/Board.java`](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Board.java) (Game board), [`src/main/java/marcus/okodugha/chessv1/View/BoardView.java`](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/View/BoardView.java) (Board view), [`src/main/java/marcus/okodugha/chessv1/Model/Infinity/Infinity.java`](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Infinity/Infinity.java) (Infinity AI), [`src/main/java/marcus/okodugha/chessv1/Main.java`](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Main.java) (Game startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Game interface"]
  node_main["Game startup<br/>[Main.java]"]
  node_boardview["Board view<br/>[BoardView.java]"]
end

subgraph group_engine["Chess engine"]
  node_board["Game board<br/>[Board.java]"]
  node_rules["Move rules<br/>[Rules.java]"]
  node_utilities["Board utilities<br/>[BordUtilities.java]"]
  node_move["Move data<br/>[Move.java]"]
  node_piece["Pieces<br/>[Piece.java]"]
end

subgraph group_ai["Computer player"]
  node_infinity["Infinity AI<br/>[Infinity.java]"]
  node_openings["Opening lines<br/>[Openings.java]"]
end

subgraph group_feedback["Game feedback"]
  node_sound["Move sounds<br/>[Sound.java]"]
  node_audio["Audio resources"]
end

node_player(("Player"))

node_main -->|"initializes"| node_board
node_main -->|"initializes"| node_boardview
node_boardview -->|"accepts input"| node_player
node_boardview -->|"submits moves"| node_board
node_board -->|"validates moves"| node_rules
node_board -->|"checks legal moves"| node_utilities
node_board -->|"creates players"| node_infinity
node_infinity -->|"requests moves"| node_board
node_infinity -->|"uses openings"| node_openings
node_sound -->|"loads clips"| node_audio

click node_main "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Main.java"
click node_boardview "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/View/BoardView.java"
click node_board "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Board.java"
click node_rules "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Rules.java"
click node_utilities "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/BordUtilities.java"
click node_move "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Move.java"
click node_piece "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Piece.java"
click node_infinity "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Infinity/Infinity.java"
click node_openings "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Infinity/Openings.java"
click node_sound "https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/View/Sound.java"
click node_audio "https://github.com/marcusokodugha/chess/tree/master/src/main/resources"

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_boardview toneBlue
class node_board,node_rules,node_utilities,node_move,node_piece toneAmber
class node_infinity,node_openings toneMint
class node_sound,node_audio toneRose
class node_player toneIndigo
```

## Components

### Game interface

- [Game startup](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Main.java): `src/main/java/marcus/okodugha/chessv1/Main.java`
- [Board view](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/View/BoardView.java): `src/main/java/marcus/okodugha/chessv1/View/BoardView.java`

### Chess engine

- [Game board](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Board.java): `src/main/java/marcus/okodugha/chessv1/Model/Board.java`
- [Move rules](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Rules.java): `src/main/java/marcus/okodugha/chessv1/Model/Rules.java`
- [Board utilities](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/BordUtilities.java): `src/main/java/marcus/okodugha/chessv1/Model/BordUtilities.java`
- [Move data](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Move.java): `src/main/java/marcus/okodugha/chessv1/Model/Move.java`
- [Pieces](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Piece.java): `src/main/java/marcus/okodugha/chessv1/Model/Piece.java`

### Computer player

- [Infinity AI](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Infinity/Infinity.java): `src/main/java/marcus/okodugha/chessv1/Model/Infinity/Infinity.java`
- [Opening lines](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/Model/Infinity/Openings.java): `src/main/java/marcus/okodugha/chessv1/Model/Infinity/Openings.java`

### Game feedback

- [Move sounds](https://github.com/marcusokodugha/chess/blob/master/src/main/java/marcus/okodugha/chessv1/View/Sound.java): `src/main/java/marcus/okodugha/chessv1/View/Sound.java`
- [Audio resources](https://github.com/marcusokodugha/chess/tree/master/src/main/resources): `src/main/resources`

### Other components

- **Player**

## Connections

- Game startup → Game board: initializes
- Game startup → Board view: initializes
- Board view → Player: accepts input
- Board view → Game board: submits moves
- Game board → Move rules: validates moves
- Game board → Board utilities: checks legal moves
- Game board → Infinity AI: creates players
- Infinity AI → Game board: requests moves
- Infinity AI → Opening lines: uses openings
- Move sounds → Audio resources: loads clips
