# mvivanessa/tp-fiuba-juego-de-conduccion architecture

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

- Interactive diagram: https://gitdiagram.com/mvivanessa/tp-fiuba-juego-de-conduccion
- Repository: https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion

## Overview

This is a JavaFX city-driving game built on manually implemented data structures and algorithms. The player enters through the graphical interface, manages a game/garage and vehicle purchases, selects a mission, then navigates its generated map while mission rules track time, fuel and rewards. The graph preserves the documented custom-TDA layer and the sampled links between UI, game state, missions, maps and vehicles. Several components are represented from the tree and source index rather than inspected source, so uncertain connections are omitted.

Main entry points: [`src/main/java/org/ayed/gta/Misiones/Mision.java`](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Misiones/Mision.java) (Mission Rules), [`src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java`](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java) (Game Controller), [`src/main/java/org/ayed/programaPrincipal/menu`](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/tree/main/src/main/java/org/ayed/programaPrincipal/menu) (Game Menus), [`src/main/java/org/ayed/gta/Partida.java`](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Partida.java) (Game Session)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Interface"]
  node_main["Application Entry<br/>[Main.java]"]
  node_interface["Game Interface<br/>[Interfaz.java]"]
  node_controller["Game Controller<br/>[Controlador.java]"]
  node_menus["Game Menus"]
  node_mission_screen["Mission Screen"]
  node_forms["Input Forms"]
end

subgraph group_game["Game Domain"]
  node_game["Game Session<br/>[Partida.java]"]
  node_garage["Garage<br/>[Garaje.java]"]
  node_garage_file["Garage Import Export<br/>[ArchivoGaraje.java]"]
  node_dealer["Vehicle Dealer<br/>[Concesionario.java]"]
  node_vehicle["Vehicles<br/>[Vehiculo.java]"]
end

subgraph group_world["Mission World"]
  node_mission["Mission Rules<br/>[Mision.java]"]
  node_map["Map Grid<br/>[Mapa.java]"]
  node_gps["GPS Navigation<br/>[Gps.java]"]
  node_astar["A-Star Search<br/>[AEstrella.java]"]
end

subgraph group_tdas["Custom TDAs"]
  node_vector["Dynamic Vector<br/>[Vector.java]"]
  node_list["Linked List<br/>[Lista.java]"]
  node_iterator["Bidirectional Iterator<br/>[Iterador.java]"]
  node_dictionary["Dictionary<br/>[Diccionario.java]"]
  node_priority_queue["Priority Queue<br/>[ColaPrioridad.java]"]
  node_graph["Graph<br/>[Grafo.java]"]
end

node_player(("Player"))

node_player -->|"uses"| node_interface
node_main -->|"starts"| node_interface
node_controller -->|"updates"| node_interface
node_controller -->|"controls"| node_game
node_controller -->|"dispatches"| node_menus
node_menus -->|"requests actions"| node_controller
node_menus -->|"uses"| node_forms
node_controller -.->|"shows mission"| node_mission_screen
node_mission_screen -->|"renders"| node_mission
node_game -->|"creates"| node_mission
node_game -->|"manages"| node_garage
node_game -.->|"notifies"| node_controller
node_mission -->|"selects vehicles"| node_garage
node_mission -->|"constructs"| node_map
node_mission -->|"constructs"| node_gps
node_mission -->|"uses"| node_vehicle
node_mission_screen -->|"draws"| node_map
node_dealer -->|"stocks"| node_vehicle
node_garage -->|"stores"| node_vehicle
node_menus -->|"imports exports"| node_garage_file
node_map -->|"stores grid in"| node_list
node_map -->|"traverses with"| node_iterator
node_list -->|"creates"| node_iterator
node_dealer -->|"stores stock in"| node_vector
node_garage -->|"stores vehicles in"| node_vector
node_dictionary -->|"uses"| node_list
node_priority_queue -->|"stores entries in"| node_vector

click node_main "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/Main.java"
click node_interface "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/frontend/Interfaz.java"
click node_controller "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java"
click node_menus "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/tree/main/src/main/java/org/ayed/programaPrincipal/menu"
click node_mission_screen "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/frontend/PantallaMision.java"
click node_forms "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/frontend/formulario/FormularioEntrada.java"
click node_game "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Partida.java"
click node_garage "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Garaje/Garaje.java"
click node_garage_file "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Garaje/ArchivoGaraje.java"
click node_dealer "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Concesionario/Concesionario.java"
click node_vehicle "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Vehiculos/Vehiculo.java"
click node_mission "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Misiones/Mision.java"
click node_map "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Mapa/Mapa.java"
click node_gps "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Mapa/Gps.java"
click node_astar "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Mapa/AEstrella.java"
click node_vector "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/vector/Vector.java"
click node_list "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/lista/Lista.java"
click node_iterator "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/iterador/Iterador.java"
click node_dictionary "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/diccionario/Diccionario.java"
click node_priority_queue "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/colaPrioridad/ColaPrioridad.java"
click node_graph "https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/grafo/Grafo.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_interface,node_controller,node_menus,node_mission_screen,node_forms toneBlue
class node_game,node_garage,node_garage_file,node_dealer,node_vehicle toneAmber
class node_mission,node_map,node_gps,node_astar toneMint
class node_vector,node_list,node_iterator,node_dictionary,node_priority_queue,node_graph toneRose
class node_player toneIndigo
```

## Components

### Interface

- [Application Entry](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/Main.java): `src/main/java/org/ayed/Main.java`
- [Game Interface](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/frontend/Interfaz.java): `src/main/java/org/ayed/programaPrincipal/frontend/Interfaz.java`
- [Game Controller](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java): `src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java`
- [Game Menus](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/tree/main/src/main/java/org/ayed/programaPrincipal/menu): `src/main/java/org/ayed/programaPrincipal/menu`
- [Mission Screen](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/frontend/PantallaMision.java): `src/main/java/org/ayed/programaPrincipal/frontend/PantallaMision.java`
- [Input Forms](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/programaPrincipal/frontend/formulario/FormularioEntrada.java): `src/main/java/org/ayed/programaPrincipal/frontend/formulario/FormularioEntrada.java`

### Game Domain

- [Game Session](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Partida.java): `src/main/java/org/ayed/gta/Partida.java`
- [Garage](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Garaje/Garaje.java): `src/main/java/org/ayed/gta/Garaje/Garaje.java`
- [Garage Import Export](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Garaje/ArchivoGaraje.java): `src/main/java/org/ayed/gta/Garaje/ArchivoGaraje.java`
- [Vehicle Dealer](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Concesionario/Concesionario.java): `src/main/java/org/ayed/gta/Concesionario/Concesionario.java`
- [Vehicles](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Vehiculos/Vehiculo.java): `src/main/java/org/ayed/gta/Vehiculos/Vehiculo.java`

### Mission World

- [Mission Rules](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Misiones/Mision.java): `src/main/java/org/ayed/gta/Misiones/Mision.java`
- [Map Grid](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Mapa/Mapa.java): `src/main/java/org/ayed/gta/Mapa/Mapa.java`
- [GPS Navigation](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Mapa/Gps.java): `src/main/java/org/ayed/gta/Mapa/Gps.java`
- [A-Star Search](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/gta/Mapa/AEstrella.java): `src/main/java/org/ayed/gta/Mapa/AEstrella.java`

### Custom TDAs

- [Dynamic Vector](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/vector/Vector.java): `src/main/java/org/ayed/tda/vector/Vector.java`
- [Linked List](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/lista/Lista.java): `src/main/java/org/ayed/tda/lista/Lista.java`
- [Bidirectional Iterator](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/iterador/Iterador.java): `src/main/java/org/ayed/tda/iterador/Iterador.java`
- [Dictionary](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/diccionario/Diccionario.java): `src/main/java/org/ayed/tda/diccionario/Diccionario.java`
- [Priority Queue](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/colaPrioridad/ColaPrioridad.java): `src/main/java/org/ayed/tda/colaPrioridad/ColaPrioridad.java`
- [Graph](https://github.com/mvivanessa/tp-fiuba-juego-de-conduccion/blob/main/src/main/java/org/ayed/tda/grafo/Grafo.java): `src/main/java/org/ayed/tda/grafo/Grafo.java`

### Other components

- **Player**

## Connections

- Player → Game Interface: uses
- Application Entry → Game Interface: starts (evidence: `src/main/java/org/ayed/Main.java`)
- Game Controller → Game Interface: updates (evidence: `src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java`)
- Game Controller → Game Session: controls (evidence: `src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java`)
- Game Controller → Game Menus: dispatches (evidence: `src/main/java/org/ayed/programaPrincipal/aplicacion/Controlador.java`)
- Game Menus → Game Controller: requests actions (evidence: `src/main/java/org/ayed/programaPrincipal/menu/MenuGaraje.java`)
- Game Menus → Input Forms: uses (evidence: `src/main/java/org/ayed/programaPrincipal/menu/MenuGaraje.java`)
- Game Controller → Mission Screen: shows mission
- Mission Screen → Mission Rules: renders (evidence: `src/main/java/org/ayed/programaPrincipal/frontend/PantallaMision.java`)
- Game Session → Mission Rules: creates (evidence: `src/main/java/org/ayed/gta/Partida.java`)
- Game Session → Garage: manages (evidence: `src/main/java/org/ayed/gta/Partida.java`)
- Game Session → Game Controller: notifies (evidence: `src/main/java/org/ayed/gta/Partida.java`)
- Mission Rules → Garage: selects vehicles (evidence: `src/main/java/org/ayed/gta/Misiones/Mision.java`)
- Mission Rules → Map Grid: constructs (evidence: `src/main/java/org/ayed/gta/Misiones/Mision.java`)
- Mission Rules → GPS Navigation: constructs (evidence: `src/main/java/org/ayed/gta/Misiones/Mision.java`)
- Mission Rules → Vehicles: uses (evidence: `src/main/java/org/ayed/gta/Misiones/Mision.java`)
- Mission Screen → Map Grid: draws (evidence: `src/main/java/org/ayed/programaPrincipal/frontend/PantallaMision.java`)
- Vehicle Dealer → Vehicles: stocks (evidence: `src/main/java/org/ayed/gta/Concesionario/Concesionario.java`)
- Garage → Vehicles: stores (evidence: `src/main/java/org/ayed/gta/Garaje/Garaje.java`)
- Game Menus → Garage Import Export: imports exports (evidence: `src/main/java/org/ayed/programaPrincipal/menu/MenuGaraje.java`)
- Map Grid → Linked List: stores grid in (evidence: `src/main/java/org/ayed/gta/Mapa/Mapa.java`)
- Map Grid → Bidirectional Iterator: traverses with (evidence: `src/main/java/org/ayed/gta/Mapa/Mapa.java`)
- Linked List → Bidirectional Iterator: creates (evidence: `src/main/java/org/ayed/tda/lista/Lista.java`)
- Vehicle Dealer → Dynamic Vector: stores stock in (evidence: `src/main/java/org/ayed/gta/Concesionario/Concesionario.java`)
- Garage → Dynamic Vector: stores vehicles in (evidence: `src/main/java/org/ayed/gta/Garaje/Garaje.java`)
- Dictionary → Linked List: uses (evidence: `src/main/java/org/ayed/tda/diccionario/Diccionario.java`)
- Priority Queue → Dynamic Vector: stores entries in (evidence: `src/main/java/org/ayed/tda/colaPrioridad/ColaPrioridad.java`)
