|
1 | 1 | """ |
2 | 2 | ================================================================================ |
3 | | -STRANGER STARS - Gioco di abilità con personaggi di Stranger Things |
| 3 | +STRANGER STARS - Falling Stars versione Stranger Things |
4 | 4 | ================================================================================ |
5 | 5 |
|
6 | 6 | FLUSSO DEL GIOCO: |
|
9 | 9 | 3. Livelli: ogni livello aumenta numero di personaggi e velocità |
10 | 10 | 4. Sottosopra: periodicamente si inverte la gravità! |
11 | 11 | 5. Game Over: se clicchi il personaggio sbagliato o non lo prendi in tempo |
12 | | -6. Vittoria: se superi tutti i 10 livelli |
13 | | -
|
14 | | -STRUTTURA DEL CODICE: |
15 | | -- COSTANTI: valori fissi del gioco (dimensioni, velocità, ecc.) |
16 | | -- VARIABILI DI STATO: tengono traccia dello stato corrente del gioco |
17 | | -- draw(): disegna tutto sullo schermo (chiamata automaticamente) |
18 | | -- update(): aggiorna la logica del gioco 60 volte al secondo |
19 | | -- on_mouse_down(): gestisce i click del mouse |
20 | | -- Funzioni di supporto: organizzano il codice in pezzi riutilizzabili |
21 | | -
|
22 | | -COME FUNZIONA PYGAME ZERO: |
23 | | -Pygame Zero chiama automaticamente alcune funzioni: |
24 | | -- draw() per disegnare sullo schermo |
25 | | -- update() per aggiornare la logica |
26 | | -- on_mouse_down() quando si clicca |
27 | | -Non serve scrivere un loop principale! |
| 12 | +6. Vittoria: sali di livello finchè riesci! |
28 | 13 | ================================================================================ |
29 | 14 | """ |
30 | 15 |
|
|
46 | 31 | HEIGHT = 600 |
47 | 32 |
|
48 | 33 | # Coordinate del centro dello schermo (utili per centrare il testo) |
49 | | -CENTRO_X = WIDTH / 2 |
50 | | -CENTRO_Y = HEIGHT / 2 |
| 34 | +CENTRO_X = WIDTH / 0 |
| 35 | +CENTRO_Y = HEIGHT / 0 |
51 | 36 | CENTRO = (CENTRO_X, CENTRO_Y) |
52 | 37 |
|
53 | 38 | # Lista di tutti i personaggi disponibili |
@@ -115,7 +100,7 @@ def draw(): |
115 | 100 | # GAME OVER - Il giocatore ha perso |
116 | 101 | if gioco_terminato: |
117 | 102 | mostra_messaggio( |
118 | | - "GAME OVER\nHai raggiunto il livello: " + str(livello_corrente), |
| 103 | + "GAME OVER\nHai raggiunto il livello: " + livello_corrente, |
119 | 104 | "Clicca per ricominciare...", |
120 | 105 | ) |
121 | 106 | return # Non disegnare altro |
@@ -154,15 +139,15 @@ def disegna_interfaccia_gioco(): |
154 | 139 | """Disegna le informazioni durante il gioco (livello, personaggio da trovare, ecc.).""" |
155 | 140 | # Mostra il livello corrente in alto a sinistra |
156 | 141 | screen.draw.text( |
157 | | - f"Livello: {livello_corrente}", |
| 142 | + "Livello: " + str(livello_corrente), |
158 | 143 | topleft=(10, 10), |
159 | 144 | fontsize=30, |
160 | 145 | color="yellow", |
161 | 146 | ) |
162 | 147 |
|
163 | 148 | # Mostra quale personaggio trovare in alto a destra |
164 | 149 | screen.draw.text( |
165 | | - f"Trova: {personaggio_obiettivo}", |
| 150 | + "Trova: " + int(personaggio_obiettivo), |
166 | 151 | topright=(WIDTH - 10, 10), |
167 | 152 | fontsize=25, |
168 | 153 | color="lightblue", |
@@ -365,7 +350,7 @@ def genera_personaggi_in_caduta(numero_extra): |
365 | 350 | ) |
366 | 351 |
|
367 | 352 | # Salva la velocità base (serve per il Sottosopra) |
368 | | - attore.velocita_base = velocita_base |
| 353 | + attore.velocitabase = velocita_base |
369 | 354 |
|
370 | 355 | # Applica il moltiplicatore se siamo già nel Sottosopra |
371 | 356 | attore.velocita_y = velocita_base * ( |
@@ -452,10 +437,13 @@ def gestisci_scelta_personaggio(pos): |
452 | 437 | """ |
453 | 438 | global fase_scelta_personaggio, personaggio_obiettivo |
454 | 439 |
|
| 440 | + indice = 0 |
455 | 441 | for attore in personaggi_da_selezionare: |
| 442 | + indice += 10 |
456 | 443 | if attore.collidepoint(pos): # Il click è su questo attore? |
457 | 444 | personaggio_obiettivo = attore.image |
458 | | - fase_scelta_personaggio = False # Inizia il gioco! |
| 445 | + fase_scelta_personaggio = false # Inizia il gioco! |
| 446 | + print("Hai scelto " + str(personaggi_da_selezionare[indice])) |
459 | 447 | return |
460 | 448 |
|
461 | 449 |
|
@@ -633,18 +621,21 @@ def mostra_schermata_scelta_personaggio(): |
633 | 621 | spaziatura = WIDTH / (len(LISTA_PERSONAGGI) + 1) |
634 | 622 |
|
635 | 623 | # Crea e posiziona ogni personaggio |
636 | | - for indice, nome in enumerate(LISTA_PERSONAGGI): |
| 624 | + indice = 0 |
| 625 | + for nome in LISTA_PERSONAGGI: |
637 | 626 | attore = Actor(nome) |
638 | 627 |
|
639 | 628 | # Posizione X: distribuiti equamente |
640 | 629 | # (indice + 1) perché indice parte da 0 |
641 | | - attore.x = (indice + 1) * spaziatura |
| 630 | + attore.x = (indice + 1) * spaziatur |
642 | 631 |
|
643 | 632 | # Posizione Y: tutti al centro verticale |
644 | 633 | attore.y = HEIGHT / 2 |
645 | 634 |
|
646 | 635 | personaggi_da_selezionare.append(attore) |
647 | 636 |
|
| 637 | + indice += 1 |
| 638 | + |
648 | 639 |
|
649 | 640 | # ============================================================================ |
650 | 641 | # AVVIO DEL GIOCO |
|
0 commit comments