Published June 6, 2025 | Version 11
Software Open

Simulatore di città

Description

Simulatore di Città 2D Dinamico con PyQt5 e OOP in Python

Autore/Creatore:

  • Usai, Luigi (Ricercatore)

  • Affiliazione: Ricercatore Indipendente

  • ORCID: 0009-0003-3001-717X

Data di Pubblicazione:

  • 6 Giugno 2025

Data di Creazione del Software:

  • 5 Giugno 2025

Versione:

  • 11

Descrizione/Abstract: Questo software è un simulatore di ambiente urbano bidimensionale (2D) sviluppato interamente in Python, aderendo ai principi della programmazione orientata agli oggetti (OOP). L'interfaccia grafica (GUI) è realizzata utilizzando il framework PyQt5. Il simulatore modella una città con una griglia stradale, edifici generici a scopo estetico, e una varietà di "Punti di Interesse" (PI) specifici (es. negozi, bar, parchi, uffici, case, scuole, ospedali) che fungono da destinazioni. La popolazione della città è composta da oggetti Persona, ulteriormente specializzati in Autista e Ciclista quando associati a un veicolo, e "Pedoni" concettuali che contribuiscono alle dinamiche demografiche e alle statistiche. Una caratteristica centrale è la gestione del tempo simulato: un orologio interno avanza e le Persona (sia quelle alla guida di veicoli sia i pedoni) prendono decisioni dinamiche sulle loro attività e destinazioni in base all'ora del giorno. Questo introduce cicli di attività realistici come recarsi al lavoro/scuola, pause pranzo, shopping, attività ricreative serali e ritorno a casa. Una varietà di veicoli (Automobili, Camion, Jeep, Autotreni, Biciclette, Scooter, Motorini), ciascuno con un Autista o Ciclista dedicato, popola la città. I veicoli navigano la rete stradale per raggiungere la destinazione corrente della persona alla guida, utilizzando un'euristica di pathfinding. Una volta raggiunta la destinazione, il veicolo (e la persona) sostano per un periodo simulato. L'interfaccia utente è stata arricchita con la possibilità di cliccare direttamente su Edifici e Punti di Interesse sulla mappa per aprire una finestra di dialogo modale che visualizza statistiche specifiche per l'elemento selezionato (es. tipo, nome, persone dirette o in sosta). Il software include funzionalità per la serializzazione dell'intero stato della città (oggetti, tempo, stato delle funzionalità) su un file esterno (formato .citta tramite pickle), e la successiva deserializzazione. Un pannello laterale mostra statistiche aggregate in tempo reale (ora, popolazione, distribuzione veicoli/PI, attività). È presente anche un menu "Funzionalità Avanzate" che elenca potenziali sviluppi futuri, con la possibilità di attivarne/disattivarne lo stato (attualmente segnaposto).

Parole Chiave (Keywords):

  • Simulazione Urbana

  • City Simulator

  • Python

  • PyQt5

  • Programmazione Orientata agli Oggetti (OOP)

  • Modello Basato su Agenti (Agent-Based Model)

  • Simulazione Traffico

  • Simulazione Comportamentale

  • Simulazione Basata sul Tempo

  • Dinamiche Urbane

  • Visualizzazione 2D

  • Interazione GUI

  • Software Educativo

  • Codice Sorgente

Lingua del Software:

  • Python 3.x

Dipendenze Principali:

  • PyQt5

  • Modulo pickle (standard Python)

  • Modulo math (standard Python)

  • Modulo random (standard Python)

  • Modulo sys (standard Python)

  • Modulo traceback (standard Python, per debugging)

Licenza:

  • MIT License

Note Aggiuntive:

  • Il codice sorgente è commentato in lingua italiana.

  • L'applicazione è stata sviluppata con un focus sulla chiarezza del codice OOP e sulla dimostrazione di concetti di simulazione dinamica, interazione GUI e gestione dello stato.

  • La città di default è strutturata su una griglia di 6x5 incroci, formando 20 isolati principali, con una varietà di Punti di Interesse pre-posizionati.

  • L'implementazione delle "Funzionalità Avanzate" indicate nel menu è prevalentemente segnaposto e rappresenta direzioni per futuri sviluppi.

Contatti:

  • Luigi Usai, Quartucciu (CA), Italy

Istruzioni per l'Uso/Installazione (breve):

  1. Assicurarsi di avere Python 3 installato.

  2. Installare la libreria PyQt5: pip install PyQt5.

  3. Eseguire lo script principale (es. citta11.py o il nome del file attuale) con Python: python nome_file.py.

  4. Utilizzare il menu "File" per salvare/caricare le simulazioni. Cliccare sugli edifici/PI per dettagli. Esplorare il menu "Funzionalità Avanzate".

Files

Files (357.5 kB)

Name Size Download all
md5:c8bb77753b099287d2699359f097e421
7.3 kB Download
md5:22c45c85fba1f82c5165e95a36f3a065
16.1 kB Download
md5:f588ce66b5fd714f88bda33cfe7b01dc
33.9 kB Download
md5:f10732602f9f5c3203f1b8ac72c08f37
39.1 kB Download
md5:5615f5ad41d1ba9bb8cec6570ccd7c7f
28.9 kB Download
md5:4eecfe8fbff4cb617e5ade65977b29e6
27.9 kB Download
md5:b4f50b9281d99256e0027548274c57e6
30.5 kB Download
md5:5df7b318264376079fef5d4611a4c743
34.6 kB Download
md5:7501a4d0894042bd8d2648f7c5241462
25.7 kB Download
md5:79cc0f41bfff4985687aa734b9ef2164
27.6 kB Download
md5:05eb97ff11ad2c125c94a8c87c860173
25.8 kB Download
md5:73be9df5a6e8613d4724621cd71a0cf7
25.4 kB Download
md5:9e648c4119a6d6d301538457b1d8eb33
34.9 kB Download

Additional details

Software

Development Status
Active