Skip to content

Commit 049aa9c

Browse files
authored
Add README for 'La Battaglia Finale' game
Added a comprehensive README for the game 'La Battaglia Finale: Harry vs Voldemort', detailing installation, gameplay, features, and educational aspects.
1 parent 0351f9f commit 049aa9c

File tree

1 file changed

+267
-0
lines changed

1 file changed

+267
-0
lines changed

game11/README.md

Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
# ⚡ La Battaglia Finale: Harry vs Voldemort
2+
3+
Un gioco a turni realizzato con Pygame Zero per imparare la programmazione in Python in modo divertente e interattivo.
4+
5+
![Python](https://img.shields.io/badge/Python-3.8%2B-blue)
6+
![Pygame Zero](https://img.shields.io/badge/Pygame%20Zero-1.2%2B-green)
7+
![License](https://img.shields.io/badge/License-MIT-yellow)
8+
![Educational](https://img.shields.io/badge/Purpose-Educational-red)
9+
10+
## 📖 Descrizione
11+
12+
Un gioco sviluppato a scopo didattico dove il giocatore controlla Harry Potter in un duello magico contro Voldemort.
13+
Il progetto è stato creato per insegnare concetti di programmazione come:
14+
15+
- 🎮 Game loop e gestione degli eventi
16+
- 📊 Manipolazione di dati con Polars
17+
- 🎨 Animazioni e effetti visivi
18+
- 🤖 Intelligenza artificiale base
19+
- 🎲 Generazione di numeri casuali e probabilità
20+
21+
## ✨ Caratteristiche
22+
23+
- **Sistema di combattimento a turni** con 4 incantesimi casuali per round
24+
- **Animazioni fluide** per danni, cure e effetti speciali
25+
- **Barre della vita dinamiche** con colori che cambiano in base ai PV
26+
- **IA semplice** per Voldemort che sceglie mosse casuali
27+
- **Sistema di precisione** - gli incantesimi possono fallire!
28+
- **Schermate di vittoria/sconfitta** personalizzate
29+
- **Rigiocabilità infinita** con il tasto SPAZIO
30+
31+
## 🎯 Screenshot
32+
33+
```
34+
┌─────────────────────────────────────────┐
35+
│ VOLDEMORT [████████░░] 80/100 │
36+
│ │
37+
│ 🧙‍♂️ │
38+
│ │
39+
│ ⚡ │
40+
│ │
41+
│ 🧙 │
42+
│ HARRY [██████████] 100/100 │
43+
│ │
44+
│ ┌─────────────────────────────────────┐│
45+
│ │ > EXPELLIARMUS > PROTEGO ││
46+
│ │ > STUPEFY > VULNERA SANENTUR││
47+
│ └─────────────────────────────────────┘│
48+
└─────────────────────────────────────────┘
49+
```
50+
51+
## 🚀 Installazione
52+
53+
### Prerequisiti
54+
55+
- Python 3.8 o superiore
56+
- pip (gestore pacchetti Python)
57+
58+
### Installazione delle dipendenze
59+
60+
```bash
61+
# Clona il repository
62+
git clone https://github.com/tuousername/harry-vs-voldemort.git
63+
cd harry-vs-voldemort
64+
65+
# Installa le dipendenze
66+
pip install pgzero polars
67+
```
68+
69+
## 📁 Struttura del Progetto
70+
71+
```
72+
harry-vs-voldemort/
73+
74+
├── game.py # File principale del gioco
75+
├── spells.csv # Database degli incantesimi
76+
├── README.md # Questo file
77+
78+
├── images/ # Cartella delle immagini
79+
│ ├── harry.png # Sprite di Harry Potter
80+
│ ├── voldemort.png # Sprite di Voldemort
81+
│ ├── vittoria.png # Sfondo vittoria
82+
│ └── sconfitta.png # Sfondo sconfitta
83+
84+
└── sounds/ # Cartella dei suoni (opzionale)
85+
└── ...
86+
```
87+
88+
## 🎮 Come Giocare
89+
90+
```bash
91+
# Avvia il gioco
92+
python game.py
93+
94+
# Oppure (se pgzrun è installato globalmente)
95+
pgzrun game.py
96+
```
97+
98+
### Controlli
99+
100+
- **Mouse**: Clicca su un incantesimo per lanciarlo
101+
- **SPAZIO**: Riavvia il gioco dopo una vittoria/sconfitta
102+
103+
### Regole
104+
105+
1. Ogni turno, Harry ha 4 incantesimi casuali tra cui scegliere
106+
2. Ogni incantesimo ha:
107+
- **Danno**: quanto HP toglie (o recupera se negativo)
108+
- **Precisione**: probabilità di successo (0.0 - 1.0)
109+
3. Dopo la tua mossa, Voldemort risponde automaticamente
110+
4. Vince chi riduce a 0 gli HP dell'avversario
111+
112+
## 📊 File CSV degli Incantesimi
113+
114+
Il file `spells.csv` contiene tutti gli incantesimi disponibili:
115+
116+
```csv
117+
character,spell,damage,precision
118+
Harry,Expelliarmus,15,0.9
119+
Harry,Stupefy,20,0.75
120+
Harry,Protego,-10,1.0
121+
Harry,Vulnera Sanentur,-25,0.8
122+
Voldemort,Avada Kedavra,40,0.6
123+
Voldemort,Crucio,25,0.8
124+
Voldemort,Imperio,30,0.7
125+
```
126+
127+
### Formato dei dati
128+
129+
- `character`: "Harry" o "Voldemort"
130+
- `spell`: Nome dell'incantesimo
131+
- `damage`: Danno inflitto (negativo = cura)
132+
- `precision`: Probabilità di successo (0.0 = 0%, 1.0 = 100%)
133+
134+
## 🎓 Aspetti Didattici
135+
136+
Questo progetto è perfetto per imparare:
137+
138+
### 1. **Gestione dello Stato**
139+
```python
140+
punti_vita = {"Harry": 100, "Voldemort": 100}
141+
gioco_attivo = True
142+
attesa_input = True
143+
```
144+
145+
### 2. **Animazioni con Pygame Zero**
146+
```python
147+
animate(sprite, duration=0.5, x=x_originale + 10, tween="bounce_end")
148+
clock.schedule_unique(funzione, 2.0)
149+
```
150+
151+
### 3. **Manipolazione Dati con Polars**
152+
```python
153+
incantesimi_df = pl.read_csv("spells.csv")
154+
opzioni = incantesimi_df.filter(pl.col("character") == "Harry").sample(4)
155+
```
156+
157+
### 4. **Probabilità e Casualità**
158+
```python
159+
successo = random.random() < precisione
160+
indice = random.randint(0, len(opzioni) - 1)
161+
```
162+
163+
### 5. **Event-Driven Programming**
164+
```python
165+
def on_mouse_down(pos):
166+
# Gestisce i click
167+
168+
def on_key_down(key):
169+
# Gestisce i tasti
170+
171+
def draw():
172+
# Rendering grafico
173+
```
174+
175+
## 🛠️ Personalizzazione
176+
177+
### Aggiungi nuovi incantesimi
178+
179+
Modifica `spells.csv` aggiungendo righe:
180+
181+
```csv
182+
Harry,Expecto Patronum,-30,0.9
183+
Voldemort,Fiendfyre,50,0.5
184+
```
185+
186+
### Modifica i parametri di gioco
187+
188+
Nel file `game.py`:
189+
190+
```python
191+
WIDTH = 800 # Larghezza finestra
192+
HEIGHT = 600 # Altezza finestra
193+
PUNTI_VITA_INIZIALI = 100 # HP iniziali
194+
```
195+
196+
### Cambia le animazioni
197+
198+
```python
199+
# Velocità animazione danni
200+
animate(visualizzazione, duration=0.6, ...) # Cambia duration
201+
202+
# Tempo tra i turni
203+
clock.schedule_unique(fase_voldemort, 3.0) # Cambia il delay
204+
```
205+
206+
## 🐛 Troubleshooting
207+
208+
### Problema: "ModuleNotFoundError: No module named 'pgzero'"
209+
210+
**Soluzione:**
211+
```bash
212+
pip install pgzero
213+
```
214+
215+
### Problema: "FileNotFoundError: spells.csv"
216+
217+
**Soluzione:** Assicurati che `spells.csv` sia nella stessa cartella di `game.py`
218+
219+
### Problema: "FileNotFoundError: images/harry.png"
220+
221+
**Soluzione:**
222+
- Crea una cartella `images/` nella directory del progetto
223+
- Aggiungi le immagini `harry.png`, `voldemort.png`, `vittoria.png`, `sconfitta.png`
224+
225+
### Problema: Gli sprite non si vedono
226+
227+
**Soluzione:** Pygame Zero cerca le immagini senza estensione:
228+
```python
229+
Actor("harry") # Cerca "harry.png" in images/
230+
```
231+
232+
## 🤝 Contribuire
233+
234+
Contributi, issues e richieste di funzionalità sono benvenute!
235+
236+
1. Fai un Fork del progetto
237+
2. Crea un branch per la tua feature (`git checkout -b feature/NuovaFeature`)
238+
3. Commit delle modifiche (`git commit -m 'Aggiungi NuovaFeature'`)
239+
4. Push al branch (`git push origin feature/NuovaFeature`)
240+
5. Apri una Pull Request
241+
242+
243+
## 📚 Risorse per Imparare
244+
245+
- [Documentazione Pygame Zero](https://pygame-zero.readthedocs.io/)
246+
- [Polars User Guide](https://pola-rs.github.io/polars/user-guide/)
247+
- [Tutorial Python ufficiale](https://docs.python.org/it/3/tutorial/)
248+
249+
## 📝 Licenza
250+
251+
Questo progetto è distribuito sotto licenza MIT. Vedi il file `LICENSE` per maggiori dettagli.
252+
253+
## 👤 Autore
254+
255+
Python Biella Group
256+
257+
## 🙏 Ringraziamenti
258+
259+
- Pygame Zero per il framework semplice e potente
260+
- La community di Python per le librerie fantastiche
261+
- J.K. Rowling per l'universo di Harry Potter (uso educativo)
262+
263+
---
264+
265+
⭐ Se questo progetto ti è stato utile per imparare, lascia una stella su GitHub!
266+
267+
**Fatto da Python Biella Group con ❤️ e Python, per scopi didattici**

0 commit comments

Comments
 (0)