# andron16/monopoly-1erproyecto-datosi architecture

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

- Interactive diagram: https://gitdiagram.com/andron16/monopoly-1erproyecto-datosi
- Repository: https://github.com/andron16/monopoly-1erproyecto-datosi

## Overview

This is a skeletal Monopoly project: the domain types describe a server-owned match, player turns, property and money transactions, and a transaction history. The apparent user workflow is to join a match, take turns moving and resolving a square, buy property, and eventually determine a winner; the sampled game methods are stubs, and Program.cs only prints “Hello, World!”, so this workflow is not wired up. The tree also indicates UI, networking, hardware, and reporting subsystems, but their implementation and connections are not established by the sampled source.

Main entry points: [`Dominio/Juego.cs`](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Juego.cs) (Match state), [`Estructuras/ListaDoble.cs`](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaDoble.cs) (Transaction history), [`Dominio/Banco.cs`](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Banco.cs) (Bank), [`Dominio/Jugador.cs`](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Jugador.cs) (Player)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_match["Match domain"]
  node_player["Player<br/>[Jugador.cs]"]
  node_game["Match state<br/>[Juego.cs]"]
  node_board["Board<br/>[Tablero.cs]"]
  node_square["Board square<br/>[Casilla.cs]"]
  node_property["Property<br/>[Propiedad.cs]"]
  node_bank["Bank<br/>[Banco.cs]"]
  node_transaction["Transaction<br/>[Transaccion.cs]"]
  node_eventcard["Event card<br/>[CartaEvento.cs]"]
  node_dice["Dice<br/>[Dado.cs]"]
end

subgraph group_structures["Game structures"]
  node_turnqueue["Turn queue<br/>[ColaCircular.cs]"]
  node_cardqueue["Card queue<br/>[ColaCartas.cs]"]
  node_boardlist["Board links"]
  node_history["Transaction history<br/>[ListaDoble.cs]"]
  node_propertylist["Player properties<br/>[ListaSimple.cs]"]
end

subgraph group_interfaces["Interfaces and integrations"]
  node_ui["Game interface<br/>[VistaTablero.cs]"]
  node_playerui["Player menu<br/>[MenuJugador.cs]"]
  node_network["Network layer<br/>[Servidor.cs]"]
  node_protocol["Network protocol<br/>[Protocolo.cs]"]
  node_hardware["Hardware bridge<br/>[main.py]"]
  node_rfid["RFID reader<br/>[lector_rfid.py]"]
  node_die_display["Dice display<br/>[display_dado.py]"]
  node_report["Transaction report"]
end

node_participant(("Player"))

node_game -->|"creates"| node_board
node_game -->|"creates"| node_turnqueue
node_game -->|"creates"| node_cardqueue
node_game -->|"creates"| node_history
node_game -->|"creates"| node_bank
node_bank -->|"records"| node_history
node_game -->|"searches"| node_history
node_player -->|"stores"| node_propertylist
node_participant -.->|"uses"| node_playerui
node_participant -.->|"views"| node_ui

click node_player "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Jugador.cs"
click node_game "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Juego.cs"
click node_board "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Tablero.cs"
click node_square "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Casilla.cs"
click node_property "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Propiedad.cs"
click node_bank "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Banco.cs"
click node_transaction "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Transaccion.cs"
click node_eventcard "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/CartaEvento.cs"
click node_dice "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Dado.cs"
click node_turnqueue "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ColaCircular.cs"
click node_cardqueue "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ColaCartas.cs"
click node_boardlist "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaCircularDoble.cs"
click node_history "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaDoble.cs"
click node_propertylist "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaSimple.cs"
click node_ui "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Interfaz/VistaTablero.cs"
click node_playerui "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Interfaz/MenuJugador.cs"
click node_network "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Red/Servidor.cs"
click node_protocol "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Red/Protocolo.cs"
click node_hardware "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Hardware/main.py"
click node_rfid "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Hardware/lector_rfid.py"
click node_die_display "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Hardware/display_dado.py"
click node_report "https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Reportes/ReporteTransacciones.cs"

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_player,node_game,node_board,node_square,node_property,node_bank,node_transaction,node_eventcard,node_dice toneBlue
class node_turnqueue,node_cardqueue,node_boardlist,node_history,node_propertylist toneAmber
class node_ui,node_playerui,node_network,node_protocol,node_hardware,node_rfid,node_die_display,node_report toneMint
class node_participant toneIndigo
```

## Components

### Match domain

- [Player](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Jugador.cs): `Dominio/Jugador.cs`
- [Match state](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Juego.cs): `Dominio/Juego.cs`
- [Board](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Tablero.cs): `Dominio/Tablero.cs`
- [Board square](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Casilla.cs): `Dominio/Casilla.cs`
- [Property](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Propiedad.cs): `Dominio/Propiedad.cs`
- [Bank](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Banco.cs): `Dominio/Banco.cs`
- [Transaction](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Transaccion.cs): `Dominio/Transaccion.cs`
- [Event card](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/CartaEvento.cs): `Dominio/CartaEvento.cs`
- [Dice](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Dominio/Dado.cs): `Dominio/Dado.cs`

### Game structures

- [Turn queue](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ColaCircular.cs): `Estructuras/ColaCircular.cs`
- [Card queue](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ColaCartas.cs): `Estructuras/ColaCartas.cs`
- [Board links](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaCircularDoble.cs): `Estructuras/ListaCircularDoble.cs`
- [Transaction history](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaDoble.cs): `Estructuras/ListaDoble.cs`
- [Player properties](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Estructuras/ListaSimple.cs): `Estructuras/ListaSimple.cs`

### Interfaces and integrations

- [Game interface](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Interfaz/VistaTablero.cs): `Interfaz/VistaTablero.cs`
- [Player menu](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Interfaz/MenuJugador.cs): `Interfaz/MenuJugador.cs`
- [Network layer](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Red/Servidor.cs): `Red/Servidor.cs`
- [Network protocol](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Red/Protocolo.cs): `Red/Protocolo.cs`
- [Hardware bridge](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Hardware/main.py): `Hardware/main.py`
- [RFID reader](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Hardware/lector_rfid.py): `Hardware/lector_rfid.py`
- [Dice display](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Hardware/display_dado.py): `Hardware/display_dado.py`
- [Transaction report](https://github.com/andron16/monopoly-1erproyecto-datosi/blob/main/Reportes/ReporteTransacciones.cs): `Reportes/ReporteTransacciones.cs`

### Other components

- **Player**

## Connections

- Match state → Board: creates
- Match state → Turn queue: creates
- Match state → Card queue: creates
- Match state → Transaction history: creates
- Match state → Bank: creates
- Bank → Transaction history: records
- Match state → Transaction history: searches
- Player → Player properties: stores
- Player → Player menu: uses
- Player → Game interface: views
