# yhsww/tabuleiro architecture

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

- Interactive diagram: https://gitdiagram.com/yhsww/tabuleiro
- Repository: https://github.com/yhsww/tabuleiro

## Overview

Tabuleiro is a JavaFX board-game application. The player-facing flow starts at the menu, proceeds through player registration, and enters a turn-based board game with special spaces and a winner screen; a separate rules screen and debug configuration are also exposed. The graph combines the sampled JavaFX screens with the model modules listed in the source index. Some model/UI excerpts appear to reflect differing versions, so edges are limited to relationships shown in excerpts or the index.

Main entry points: [`src/models/Jogo.java`](https://github.com/yhsww/tabuleiro/blob/main/src/models/Jogo.java) (Game rules and turns), [`Tabuleiro/src/main/java/src/view/Telajogo.java`](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telajogo.java) (Board and turns), [`Tabuleiro/src/main/java/src/view/TelaMenu.java`](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/TelaMenu.java) (Main menu), [`Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java`](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java) (Player registration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["App navigation"]
  node_main["Application entry<br/>[Main.java]"]
  node_navigator["Screen navigator"]
  node_screen["Screen contract<br/>[Tela.java]"]
  node_menu["Main menu<br/>[TelaMenu.java]"]
  node_rules["Rules screen<br/>[Telaregras.java]"]
end

subgraph group_setup["Setup and settings"]
  node_registration["Player registration"]
  node_settings["Debug settings<br/>[Configuracoes.java]"]
  node_color_ui["Color rendering<br/>[CoresUI.java]"]
end

subgraph group_play["Game interface"]
  node_game_ui["Board and turns<br/>[Telajogo.java]"]
end

subgraph group_domain["Game domain"]
  node_game["Game rules and turns<br/>[Jogo.java]"]
  node_board["Board layout<br/>[Tabuleiro.java]"]
  node_player_model["Player state<br/>[Jogador.java]"]
  node_player_types["Player variants"]
  node_colors["Player colors<br/>[Cor.java]"]
  node_cell["Board spaces<br/>[Casa.java]"]
  node_magic_cell["Magic space<br/>[CasaMagica.java]"]
  node_surprise_cell["Surprise space<br/>[CasaSurpresa.java]"]
  node_other_cells["Other special spaces"]
  node_utilities["Input utilities<br/>[Utilitarios.java]"]
end

node_player(("Player"))

node_player -->|"launches"| node_main
node_main -->|"initializes"| node_navigator
node_main -->|"opens"| node_menu
node_navigator -->|"renders"| node_screen
node_menu -->|"opens"| node_registration
node_menu -->|"opens"| node_rules
node_rules -->|"returns to"| node_menu
node_menu -->|"creates"| node_game
node_menu -->|"starts debug"| node_settings
node_registration -->|"adds players"| node_game
node_registration -->|"renders colors"| node_color_ui
node_registration -->|"opens"| node_game_ui
node_game_ui -->|"advances turns"| node_game
node_game_ui -->|"reads positions"| node_player_model
node_game_ui -->|"renders tokens"| node_colors
node_game_ui -->|"shows spaces"| node_cell
node_game -->|"creates board"| node_board
node_game -->|"manages turns"| node_player_model
node_game -->|"applies effects"| node_cell
node_game -->|"dispatches effect"| node_magic_cell
node_game -->|"dispatches effect"| node_other_cells
node_game -->|"reads input"| node_utilities
node_player_model -.->|"specialized by"| node_player_types
node_cell -.->|"specialized by"| node_surprise_cell
node_game_ui -->|"handles effect"| node_surprise_cell

click node_main "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/Main.java"
click node_navigator "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Navegadordetelas.java"
click node_screen "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Tela.java"
click node_menu "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/TelaMenu.java"
click node_rules "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telaregras.java"
click node_registration "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java"
click node_settings "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Configuracoes.java"
click node_color_ui "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/CoresUI.java"
click node_game_ui "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telajogo.java"
click node_game "https://github.com/yhsww/tabuleiro/blob/main/src/models/Jogo.java"
click node_board "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/Tabuleiro.java"
click node_player_model "https://github.com/yhsww/tabuleiro/blob/main/src/models/Jogador.java"
click node_player_types "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/JogadorSortudo.java"
click node_colors "https://github.com/yhsww/tabuleiro/blob/main/src/models/Cor.java"
click node_cell "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/Casa.java"
click node_magic_cell "https://github.com/yhsww/tabuleiro/blob/main/src/models/CasaMagica.java"
click node_surprise_cell "https://github.com/yhsww/tabuleiro/blob/main/src/models/CasaSurpresa.java"
click node_other_cells "https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/CasaDaDiscordia.java"
click node_utilities "https://github.com/yhsww/tabuleiro/blob/main/src/util/Utilitarios.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_navigator,node_screen,node_menu,node_rules toneBlue
class node_registration,node_settings,node_color_ui toneAmber
class node_game_ui toneMint
class node_game,node_board,node_player_model,node_player_types,node_colors,node_cell,node_magic_cell,node_surprise_cell,node_other_cells,node_utilities toneRose
class node_player toneIndigo
```

## Components

### App navigation

- [Application entry](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/Main.java): `Tabuleiro/src/main/java/src/Main.java`
- [Screen navigator](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Navegadordetelas.java): `Tabuleiro/src/main/java/src/view/Navegadordetelas.java`
- [Screen contract](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Tela.java): `Tabuleiro/src/main/java/src/view/Tela.java`
- [Main menu](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/TelaMenu.java): `Tabuleiro/src/main/java/src/view/TelaMenu.java`
- [Rules screen](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telaregras.java): `Tabuleiro/src/main/java/src/view/Telaregras.java`

### Setup and settings

- [Player registration](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java): `Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java`
- [Debug settings](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Configuracoes.java): `Tabuleiro/src/main/java/src/view/Configuracoes.java`
- [Color rendering](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/CoresUI.java): `Tabuleiro/src/main/java/src/view/CoresUI.java`

### Game interface

- [Board and turns](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/view/Telajogo.java): `Tabuleiro/src/main/java/src/view/Telajogo.java`

### Game domain

- [Game rules and turns](https://github.com/yhsww/tabuleiro/blob/main/src/models/Jogo.java): `src/models/Jogo.java`
- [Board layout](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/Tabuleiro.java): `Tabuleiro/src/main/java/src/models/Tabuleiro.java`
- [Player state](https://github.com/yhsww/tabuleiro/blob/main/src/models/Jogador.java): `src/models/Jogador.java`
- [Player variants](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/JogadorSortudo.java): `Tabuleiro/src/main/java/src/models/JogadorSortudo.java`
- [Player colors](https://github.com/yhsww/tabuleiro/blob/main/src/models/Cor.java): `src/models/Cor.java`
- [Board spaces](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/Casa.java): `Tabuleiro/src/main/java/src/models/Casa.java`
- [Magic space](https://github.com/yhsww/tabuleiro/blob/main/src/models/CasaMagica.java): `src/models/CasaMagica.java`
- [Surprise space](https://github.com/yhsww/tabuleiro/blob/main/src/models/CasaSurpresa.java): `src/models/CasaSurpresa.java`
- [Other special spaces](https://github.com/yhsww/tabuleiro/blob/main/Tabuleiro/src/main/java/src/models/CasaDaDiscordia.java): `Tabuleiro/src/main/java/src/models/CasaDaDiscordia.java`
- [Input utilities](https://github.com/yhsww/tabuleiro/blob/main/src/util/Utilitarios.java): `src/util/Utilitarios.java`

### Other components

- **Player**

## Connections

- Player → Application entry: launches (evidence: `Tabuleiro/src/main/java/src/Main.java`)
- Application entry → Screen navigator: initializes (evidence: `Tabuleiro/src/main/java/src/Main.java`)
- Application entry → Main menu: opens (evidence: `Tabuleiro/src/main/java/src/Main.java`)
- Screen navigator → Screen contract: renders (evidence: `Tabuleiro/src/main/java/src/view/Navegadordetelas.java`)
- Main menu → Player registration: opens (evidence: `Tabuleiro/src/main/java/src/view/TelaMenu.java`)
- Main menu → Rules screen: opens (evidence: `Tabuleiro/src/main/java/src/view/TelaMenu.java`)
- Rules screen → Main menu: returns to (evidence: `Tabuleiro/src/main/java/src/view/Telaregras.java`)
- Main menu → Game rules and turns: creates (evidence: `Tabuleiro/src/main/java/src/view/TelaMenu.java`)
- Main menu → Debug settings: starts debug (evidence: `Tabuleiro/src/main/java/src/view/TelaMenu.java`)
- Player registration → Game rules and turns: adds players (evidence: `Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java`)
- Player registration → Color rendering: renders colors (evidence: `Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java`)
- Player registration → Board and turns: opens (evidence: `Tabuleiro/src/main/java/src/view/Telacadastrojogadores.java`)
- Board and turns → Game rules and turns: advances turns (evidence: `Tabuleiro/src/main/java/src/view/Telajogo.java`)
- Board and turns → Player state: reads positions (evidence: `Tabuleiro/src/main/java/src/view/Telajogo.java`)
- Board and turns → Player colors: renders tokens (evidence: `Tabuleiro/src/main/java/src/view/Telajogo.java`)
- Board and turns → Board spaces: shows spaces (evidence: `Tabuleiro/src/main/java/src/view/Telajogo.java`)
- Game rules and turns → Board layout: creates board (evidence: `src/models/Jogo.java`)
- Game rules and turns → Player state: manages turns (evidence: `src/models/Jogo.java`)
- Game rules and turns → Board spaces: applies effects (evidence: `src/models/Jogo.java`)
- Game rules and turns → Magic space: dispatches effect (evidence: `src/models/Jogo.java`)
- Game rules and turns → Other special spaces: dispatches effect (evidence: `src/models/Jogo.java`)
- Game rules and turns → Input utilities: reads input (evidence: `src/models/Jogo.java`)
- Player state → Player variants: specialized by
- Board spaces → Surprise space: specialized by
- Board and turns → Surprise space: handles effect (evidence: `Tabuleiro/src/main/java/src/view/Telajogo.java`)
