Un classico gioco Pong implementato in Python con Pygame, caratterizzato da un'intelligenza artificiale fluida e avanzata senza tremolii.
- AI Fluida: Movimento dell'AI senza scatti o tremolii
- Audio Dinamico: Supporto per file MP3 personalizzati o generazione di suoni sintetici
- Adattamento Dinamico: L'AI si adatta automaticamente alla difficoltà in base al punteggio
- Cross-Platform: Ottimizzazioni audio specifiche per Windows, macOS e Linux
- Controlli Intuitivi: Supporto sia per WASD che per le frecce direzionali
- W / Freccia Su: Muovi il paddle verso l'alto
- S / Freccia Giù: Muovi il paddle verso il basso
- ESC: Esci dal gioco
pip install pygame numpyVersioni testate:
- Python 3.7+
- Pygame 2.0+
- NumPy 1.19+
Per un'esperienza audio personalizzata, crea una cartella sounds/ con i seguenti file:
sounds/paddle.mp3- Suono rimbalzo sul paddlesounds/wall.mp3- Suono rimbalzo sulla paretesounds/goal.mp3- Suono quando si segna un goal
Nota: Se i file MP3 non sono presenti, il gioco genererà automaticamente suoni sintetici.
-
Clona il repository:
git clone https://github.com/EventExecutor/Pong-Game.git cd pong-game -
Installa le dipendenze:
pip install pygame numpy
Oppure usando requirements.txt:
pip install -r requirements.txt
-
Avvia il gioco:
python main.py
- Predizione traiettoria: L'AI calcola dove la palla colpirà il suo paddle
- Gestione rimbalzi: Simula i rimbalzi contro le pareti per predizioni accurate
- Movimento strategico: Posizionamento intelligente quando la palla si allontana
- Difficoltà basata sul punteggio: L'AI diventa più forte con l'avanzare del gioco
- Bilanciamento automatico: Se il giocatore è in svantaggio, l'AI rallenta leggermente
- Velocità variabile: L'AI reagisce alla velocità della palla
- Zona morta: Previene micro-movimenti quando il paddle è già posizionato
- Movimento fluido: Accelerazione e decelerazione graduali
- Stabilizzazione predizioni: Evita cambi continui di direzione
# Dimensioni schermo
LARGHEZZA = 800
ALTEZZA = 600
# Paddle
PADDLE_VELOCITA = 7
PADDLE_LARGHEZZA = 15
PADDLE_ALTEZZA = 90
# Palla
PALLA_VELOCITA_BASE = 6
PALLA_RAGGIO = 8
# AI
difficolta_base = 0.70 # Difficoltà base (0.0 - 1.0)
max_difficolta = 0.90 # Difficoltà massima
adattamento_ai = True # Abilita adattamento dinamico- Windows: Ottimizzazioni buffer audio (512)
- macOS: Ottimizzazioni buffer audio (256)
- Linux: Ottimizzazioni buffer audio (1024)
Posiziona i file nella cartella sounds/:
sounds/
├── paddle.mp3
├── wall.mp3
└── goal.mp3
Se i file MP3 non sono disponibili:
- Paddle: Beep a 523 Hz (Do)
- Parete: Beep a 330 Hz (Mi)
- Goal: Suono discendente con vibrato
- Display in tempo reale: Punteggi mostrati in alto
- Etichette giocatori: "GIOCATORE" vs "AI"
- Indicatore difficoltà: Mostra la difficoltà attuale dell'AI (quando abilitata)
- Verifica che i file MP3 siano nella cartella
sounds/ - Controlla i permessi della cartella
- Il gioco funziona anche senza audio
- Riduci FPS modificando
FPS = 60 - Chiudi altre applicazioni che usano audio
- Su Linux, prova buffer audio diversi
- Verifica che la finestra del gioco sia attiva
- Controlla che pygame sia installato correttamente
- Classe Paddle: Gestisce movimento giocatore e AI
- Classe Palla: Fisica e collisioni della palla
- Classe Gioco: Loop principale e gestione stati
- Sistema Audio: Generazione e riproduzione suoni
- Nuovi suoni: Aggiungi file nella cartella
sounds/ - Modificare AI: Regola parametri in
ai_muovi() - Nuovi controlli: Modifica
gestisci_input_gioco()
Questo progetto è rilasciato sotto Licenza MIT.
I contributi sono benvenuti! Per contribuire:
- Fork del repository
- Crea un branch per le tue modifiche (
git checkout -b feature/nuova-funzionalita) - Commit delle modifiche (
git commit -m 'Aggiungi nuova funzionalità') - Push al branch (
git push origin feature/nuova-funzionalita) - Apri una Pull Request
- 🎨 Nuovi temi grafici
- 🔊 Più effetti sonori
- 🤖 Modalità AI diverse
- 🏆 Sistema di achievement
- 🌐 Modalità multiplayer online
Sviluppato con Python e Pygame. Suoni sintetici generati con NumPy.