# gipszjakab21/kaoszamoba architecture

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

- Interactive diagram: https://gitdiagram.com/gipszjakab21/kaoszamoba
- Repository: https://github.com/gipszjakab21/kaoszamoba

## Overview

This repository contains a small Java model for a two-player, gravity-based board game, plus a game-record archive. The code shown does not expose a user interface or a complete play loop, so the graph focuses on the model’s supported responsibilities: game setup, board placement and gravity, player armies and piece behavior, and record storage. Board gravity uses piece properties and a direction enum; the README provides no additional capability details.

Main entry points: [`src/main/java/Model/Piece.java`](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Piece.java) (Piece behavior), [`src/main/java/Model/Board.java`](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Board.java) (Board), [`src/main/java/Model/Army.java`](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Army.java) (Army), [`src/main/java/Model/Game.java`](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Game.java) (Game)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_game["Game state"]
  node_game["Game<br/>[Game.java]"]
  node_board["Board<br/>[Board.java]"]
  node_direction["Gravity direction<br/>[Direction.java]"]
end

subgraph group_pieces["Pieces and armies"]
  node_player["Player<br/>[Player.java]"]
  node_army["Army<br/>[Army.java]"]
  node_piece["Piece behavior<br/>[Piece.java]"]
  node_anchor["Anchor<br/>[Anchor.java]"]
  node_concrete["Concrete<br/>[Concrete.java]"]
  node_chameleon["Chameleon<br/>[Chameleon.java]"]
  node_simple["Simple piece<br/>[Simple.java]"]
  node_piece_type["Piece type<br/>[PieceType.java]"]
end

subgraph group_archive["Game archive"]
  node_archive[("Game archive<br/>[GameArchive.java]")]
  node_record["Game record<br/>[GameRecord.java]"]
end

node_game -->|"creates"| node_board
node_board -->|"accepts"| node_direction
node_board -->|"checks gravity"| node_piece
node_player -->|"holds"| node_army
node_army -->|"counts by type"| node_piece_type
node_anchor -->|"extends"| node_piece
node_concrete -->|"extends"| node_piece
node_chameleon -->|"extends"| node_piece
node_simple -->|"extends"| node_piece
node_archive -->|"stores"| node_record

click node_game "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Game.java"
click node_board "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Board.java"
click node_direction "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Direction.java"
click node_player "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Player.java"
click node_army "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Army.java"
click node_piece "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Piece.java"
click node_anchor "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Anchor.java"
click node_concrete "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Concrete.java"
click node_chameleon "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Chameleon.java"
click node_simple "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Simple.java"
click node_piece_type "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/PieceType.java"
click node_archive "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/GameArchive.java"
click node_record "https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/GameRecord.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,node_board,node_direction toneBlue
class node_player,node_army,node_piece,node_anchor,node_concrete,node_chameleon,node_simple,node_piece_type toneAmber
class node_archive,node_record toneMint
```

## Components

### Game state

- [Game](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Game.java): `src/main/java/Model/Game.java`
- [Board](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Board.java): `src/main/java/Model/Board.java`
- [Gravity direction](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Direction.java): `src/main/java/Model/Direction.java`

### Pieces and armies

- [Player](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Player.java): `src/main/java/Model/Player.java`
- [Army](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Army.java): `src/main/java/Model/Army.java`
- [Piece behavior](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Piece.java): `src/main/java/Model/Piece.java`
- [Anchor](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Anchor.java): `src/main/java/Model/Anchor.java`
- [Concrete](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Concrete.java): `src/main/java/Model/Concrete.java`
- [Chameleon](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Chameleon.java): `src/main/java/Model/Chameleon.java`
- [Simple piece](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/Simple.java): `src/main/java/Model/Simple.java`
- [Piece type](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/PieceType.java): `src/main/java/Model/PieceType.java`

### Game archive

- [Game archive](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/GameArchive.java): `src/main/java/Model/GameArchive.java`
- [Game record](https://github.com/gipszjakab21/kaoszamoba/blob/main/src/main/java/Model/GameRecord.java): `src/main/java/Model/GameRecord.java`

## Connections

- Game → Board: creates (evidence: `src/main/java/Model/Game.java`)
- Board → Gravity direction: accepts (evidence: `src/main/java/Model/Board.java`)
- Board → Piece behavior: checks gravity (evidence: `src/main/java/Model/Board.java`)
- Player → Army: holds (evidence: `src/main/java/Model/Player.java`)
- Army → Piece type: counts by type (evidence: `src/main/java/Model/Army.java`)
- Anchor → Piece behavior: extends (evidence: `src/main/java/Model/Anchor.java`)
- Concrete → Piece behavior: extends (evidence: `src/main/java/Model/Concrete.java`)
- Chameleon → Piece behavior: extends (evidence: `src/main/java/Model/Chameleon.java`)
- Simple piece → Piece behavior: extends (evidence: `src/main/java/Model/Simple.java`)
- Game archive → Game record: stores (evidence: `src/main/java/Model/GameArchive.java`)
