# udeuno/parchisequipo2 architecture

> Architecture diagram of the GitHub repository udeuno/parchisequipo2, 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/udeuno/parchisequipo2
- Repository: https://github.com/udeuno/parchisequipo2

## Overview

ParchisEquipo2 is a Swing-based Parchís game with lobby setup, configurable rooms, chat, and networked multiplayer. The main flow is: a player joins or creates a room, registers, waits in the lobby, then plays turns involving dice and piece movement; network controllers relay player actions and game updates. The game controller delegates rules to dice, movement, capture, and turn helpers. Connections among unsampled modules are omitted unless supported by the source index or shown excerpts; no README description was provided.

Main entry points: [`src/Controlador/ControladorJuego.java`](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorJuego.java) (Game controller), [`src/Controlador/ControladorLobby.java`](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorLobby.java) (Lobby controller), [`src/Controlador/ControladorChat.java`](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorChat.java) (Chat controller), [`src/Modelo/Tablero.java`](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Tablero.java) (Board)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Startup and setup"]
  node_startup["Application entry"]
  node_start["Start controller"]
  node_create_room["Room setup"]
  node_config_ctrl["Configuration controller"]
  node_registration["Player registration"]
end

subgraph group_network["Multiplayer and lobby"]
  node_client["Client connection"]
  node_server["Server connection"]
  node_lobby_ctrl["Lobby controller"]
  node_chat_ctrl["Chat controller"]
end

subgraph group_gameplay["Game rules"]
  node_game_ctrl["Game controller"]
  node_dice["Dice rules<br/>[FuenteDados.java]"]
  node_movement["Movement rules"]
  node_captures["Capture rules"]
  node_turns["Turn rules<br/>[FuenteTurnos.java]"]
end

subgraph group_ui["Swing views"]
  node_start_view["Start screen<br/>[VistaInicio.java]"]
  node_register_view["Registration view"]
  node_config_view["Configuration view"]
  node_lobby_view["Lobby view<br/>[VistaLobby.java]"]
  node_chat_view["Chat view<br/>[VistaChat.java]"]
  node_game_view["Game view<br/>[VistaJuego.java]"]
  node_board_window["Board window"]
end

subgraph group_domain["Game state"]
  node_config_model["Room settings"]
  node_lobby_model["Lobby state<br/>[ModeloLobby.java]"]
  node_player_model["Player model<br/>[ModeloJugador.java]"]
  node_chat_model["Chat state<br/>[ModeloChat.java]"]
  node_message_model["Chat message<br/>[ModeloMensaje.java]"]
  node_game_state["Match state"]
  node_match_model["Match model<br/>[ModeloPartida.java]"]
  node_board["Board<br/>[Tablero.java]"]
  node_piece["Piece<br/>[Ficha.java]"]
  node_square["Board square<br/>[Casilla.java]"]
  node_path_square["Path square<br/>[CasillaPaso.java]"]
  node_finish_square["Finish square<br/>[CasillaFinal.java]"]
end

node_player(("Player"))

node_player -.->|"launches"| node_startup
node_startup -.->|"creates"| node_start
node_start -->|"creates"| node_create_room
node_start -->|"connects via"| node_client
node_start -->|"opens"| node_register_view
node_create_room -.->|"configures"| node_config_ctrl
node_config_ctrl -->|"updates"| node_config_model
node_config_ctrl -->|"controls"| node_config_view
node_client -.->|"connects to"| node_server
node_client -->|"dispatches updates"| node_lobby_ctrl
node_client -.->|"forwards messages"| node_chat_ctrl
node_server -.->|"updates"| node_lobby_ctrl
node_server -->|"forwards messages"| node_chat_ctrl
node_server -->|"dispatches actions"| node_game_ctrl
node_lobby_ctrl -.->|"reads players"| node_lobby_model
node_lobby_ctrl -->|"reads settings"| node_config_model
node_lobby_ctrl -->|"creates"| node_game_ctrl
node_lobby_ctrl -->|"creates"| node_game_view
node_chat_ctrl -->|"updates"| node_chat_view
node_chat_ctrl -->|"sends messages"| node_client
node_chat_ctrl -->|"sends messages"| node_server
node_chat_ctrl -->|"reads history"| node_chat_model
node_game_ctrl -->|"updates"| node_game_state
node_game_ctrl -->|"uses"| node_dice
node_game_ctrl -->|"delegates moves"| node_movement
node_game_ctrl -->|"checks turns"| node_turns
node_movement -->|"uses"| node_captures
node_movement -->|"updates"| node_game_state
node_captures -->|"updates"| node_game_state
node_game_state -->|"owns"| node_board
node_board -->|"creates"| node_piece
node_board -->|"builds route"| node_square
node_board -->|"creates"| node_path_square
node_board -->|"creates"| node_finish_square
node_game_ctrl -->|"refreshes"| node_game_view
node_game_view -->|"uses"| node_board_window

click node_startup "https://github.com/udeuno/parchisequipo2/blob/main/src/parchisequipo2/ParchisEquipo2.java"
click node_start "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorInicio.java"
click node_create_room "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/CrontoladorCrearSala.java"
click node_config_ctrl "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorConfiguracion.java"
click node_config_model "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloConfiguracion.java"
click node_registration "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorRegistroJugador.java"
click node_client "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorConexionCliente.java"
click node_server "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorConexionServer.java"
click node_lobby_ctrl "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorLobby.java"
click node_lobby_model "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloLobby.java"
click node_player_model "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloJugador.java"
click node_chat_ctrl "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorChat.java"
click node_chat_model "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloChat.java"
click node_message_model "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloMensaje.java"
click node_game_ctrl "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorJuego.java"
click node_dice "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteDados.java"
click node_movement "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteMovimiento.java"
click node_captures "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteCapturas.java"
click node_turns "https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteTurnos.java"
click node_game_state "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/PizarraPartida.java"
click node_match_model "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloPartida.java"
click node_board "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Tablero.java"
click node_piece "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Ficha.java"
click node_square "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Casilla.java"
click node_path_square "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/CasillaPaso.java"
click node_finish_square "https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/CasillaFinal.java"
click node_start_view "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaInicio.java"
click node_register_view "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaRegistrarJugador.java"
click node_config_view "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaConfiguracion.java"
click node_lobby_view "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaLobby.java"
click node_chat_view "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaChat.java"
click node_game_view "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaJuego.java"
click node_board_window "https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VentanaTablero.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_startup,node_start,node_create_room,node_config_ctrl,node_registration toneBlue
class node_client,node_server,node_lobby_ctrl,node_chat_ctrl toneAmber
class node_game_ctrl,node_dice,node_movement,node_captures,node_turns toneMint
class node_start_view,node_register_view,node_config_view,node_lobby_view,node_chat_view,node_game_view,node_board_window toneRose
class node_config_model,node_lobby_model,node_player_model,node_chat_model,node_message_model,node_game_state,node_match_model,node_board,node_piece,node_square,node_path_square,node_finish_square,node_player toneIndigo
```

## Components

### Startup and setup

- [Application entry](https://github.com/udeuno/parchisequipo2/blob/main/src/parchisequipo2/ParchisEquipo2.java): `src/parchisequipo2/ParchisEquipo2.java`
- [Start controller](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorInicio.java): `src/Controlador/ControladorInicio.java`
- [Room setup](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/CrontoladorCrearSala.java): `src/Controlador/CrontoladorCrearSala.java`
- [Configuration controller](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorConfiguracion.java): `src/Controlador/ControladorConfiguracion.java`
- [Player registration](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorRegistroJugador.java): `src/Controlador/ControladorRegistroJugador.java`

### Multiplayer and lobby

- [Client connection](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorConexionCliente.java): `src/Controlador/ControladorConexionCliente.java`
- [Server connection](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorConexionServer.java): `src/Controlador/ControladorConexionServer.java`
- [Lobby controller](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorLobby.java): `src/Controlador/ControladorLobby.java`
- [Chat controller](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorChat.java): `src/Controlador/ControladorChat.java`

### Game rules

- [Game controller](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/ControladorJuego.java): `src/Controlador/ControladorJuego.java`
- [Dice rules](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteDados.java): `src/Controlador/FuenteDados.java`
- [Movement rules](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteMovimiento.java): `src/Controlador/FuenteMovimiento.java`
- [Capture rules](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteCapturas.java): `src/Controlador/FuenteCapturas.java`
- [Turn rules](https://github.com/udeuno/parchisequipo2/blob/main/src/Controlador/FuenteTurnos.java): `src/Controlador/FuenteTurnos.java`

### Swing views

- [Start screen](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaInicio.java): `src/Vista/VistaInicio.java`
- [Registration view](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaRegistrarJugador.java): `src/Vista/VistaRegistrarJugador.java`
- [Configuration view](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaConfiguracion.java): `src/Vista/VistaConfiguracion.java`
- [Lobby view](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaLobby.java): `src/Vista/VistaLobby.java`
- [Chat view](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaChat.java): `src/Vista/VistaChat.java`
- [Game view](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VistaJuego.java): `src/Vista/VistaJuego.java`
- [Board window](https://github.com/udeuno/parchisequipo2/blob/main/src/Vista/VentanaTablero.java): `src/Vista/VentanaTablero.java`

### Game state

- [Room settings](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloConfiguracion.java): `src/Modelo/ModeloConfiguracion.java`
- [Lobby state](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloLobby.java): `src/Modelo/ModeloLobby.java`
- [Player model](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloJugador.java): `src/Modelo/ModeloJugador.java`
- [Chat state](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloChat.java): `src/Modelo/ModeloChat.java`
- [Chat message](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloMensaje.java): `src/Modelo/ModeloMensaje.java`
- [Match state](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/PizarraPartida.java): `src/Modelo/PizarraPartida.java`
- [Match model](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/ModeloPartida.java): `src/Modelo/ModeloPartida.java`
- [Board](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Tablero.java): `src/Modelo/Tablero.java`
- [Piece](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Ficha.java): `src/Modelo/Ficha.java`
- [Board square](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/Casilla.java): `src/Modelo/Casilla.java`
- [Path square](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/CasillaPaso.java): `src/Modelo/CasillaPaso.java`
- [Finish square](https://github.com/udeuno/parchisequipo2/blob/main/src/Modelo/CasillaFinal.java): `src/Modelo/CasillaFinal.java`

### Other components

- **Player**

## Connections

- Player → Application entry: launches
- Application entry → Start controller: creates (evidence: `src/parchisequipo2/ParchisEquipo2.java`)
- Start controller → Room setup: creates (evidence: `src/Controlador/ControladorInicio.java`)
- Start controller → Client connection: connects via (evidence: `src/Controlador/ControladorInicio.java`)
- Start controller → Registration view: opens (evidence: `src/Controlador/ControladorInicio.java`)
- Room setup → Configuration controller: configures (evidence: `src/Controlador/CrontoladorCrearSala.java`)
- Configuration controller → Room settings: updates (evidence: `src/Controlador/ControladorConfiguracion.java`)
- Configuration controller → Configuration view: controls (evidence: `src/Controlador/ControladorConfiguracion.java`)
- Client connection → Server connection: connects to
- Client connection → Lobby controller: dispatches updates (evidence: `src/Controlador/ControladorConexionCliente.java`)
- Client connection → Chat controller: forwards messages (evidence: `src/Controlador/ControladorConexionCliente.java`)
- Server connection → Lobby controller: updates (evidence: `src/Controlador/ControladorConexionServer.java`)
- Server connection → Chat controller: forwards messages (evidence: `src/Controlador/ControladorConexionServer.java`)
- Server connection → Game controller: dispatches actions (evidence: `src/Controlador/ControladorConexionServer.java`)
- Lobby controller → Lobby state: reads players (evidence: `src/Controlador/ControladorLobby.java`)
- Lobby controller → Room settings: reads settings (evidence: `src/Controlador/ControladorLobby.java`)
- Lobby controller → Game controller: creates (evidence: `src/Controlador/ControladorLobby.java`)
- Lobby controller → Game view: creates (evidence: `src/Controlador/ControladorLobby.java`)
- Chat controller → Chat view: updates (evidence: `src/Controlador/ControladorChat.java`)
- Chat controller → Client connection: sends messages (evidence: `src/Controlador/ControladorChat.java`)
- Chat controller → Server connection: sends messages (evidence: `src/Controlador/ControladorChat.java`)
- Chat controller → Chat state: reads history (evidence: `src/Controlador/ControladorChat.java`)
- Game controller → Match state: updates (evidence: `src/Controlador/ControladorJuego.java`)
- Game controller → Dice rules: uses (evidence: `src/Controlador/ControladorJuego.java`)
- Game controller → Movement rules: delegates moves (evidence: `src/Controlador/ControladorJuego.java`)
- Game controller → Turn rules: checks turns (evidence: `src/Controlador/ControladorJuego.java`)
- Movement rules → Capture rules: uses (evidence: `src/Controlador/FuenteMovimiento.java`)
- Movement rules → Match state: updates (evidence: `src/Controlador/FuenteMovimiento.java`)
- Capture rules → Match state: updates (evidence: `src/Controlador/FuenteCapturas.java`)
- Match state → Board: owns (evidence: `src/Modelo/PizarraPartida.java`)
- Board → Piece: creates (evidence: `src/Modelo/Tablero.java`)
- Board → Board square: builds route (evidence: `src/Modelo/Tablero.java`)
- Board → Path square: creates (evidence: `src/Modelo/Tablero.java`)
- Board → Finish square: creates (evidence: `src/Modelo/Tablero.java`)
- Game controller → Game view: refreshes (evidence: `src/Controlador/ControladorJuego.java`)
- Game view → Board window: uses (evidence: `src/Vista/VistaJuego.java`)
