suggerimenti sulla strutturazione del codice pygame?

1

quindi ho creato un semplice gioco in cui le caselle cadono dalla parte superiore dello schermo e le hai schivate dalla parte inferiore dello schermo. Quando una casella cade nella parte inferiore dello schermo senza colpire, ottieni un punto.

La parte su cui sto combattendo è come cambiare la variabile punteggio. Per ora, ho due loop per loop che passano attraverso un dizionario in cui ho memorizzato tutte le mie istanze di proiettili, una volta quando aggiorna i proiettili e l'altro per verificare se un proiettile ha toccato il terreno e se lo ha fatto, segna + = 1. I don ' Mi piace molto questa struttura perché il looping con lo stesso identico dizionario sembra due volte stupido e potrebbe rallentare la velocità con programmi molto più complessi. Il problema è che il ciclo di aggiornamento si trova nella mia classe Bullet e l'altro è nella funzione di gioco principale, con punteggio come variabile locale.

Una soluzione a questo sarebbe cambiare il punteggio in una variabile globale ma voglio mantenere la variabile nella funzione di gioco poiché è una variabile che appartiene al gioco e inoltre, il ragazzo che mi ha insegnato python mi ha detto di evitare la global variabili e prova a passare le variabili attraverso le funzioni

    
posta Brian010515 09.10.2016 - 15:38
fonte

1 risposta

2

Innanzitutto non è necessario rendere globale la variabile, ma definire le funzioni di accesso e settaggio in base alle esigenze.

In secondo luogo, puoi utilizzare un pattern di osservatore (possibilmente con un aggregatore di eventi) per osservare lo stato dei tuoi proiettili, quando lo stato viene aggiornato a quello che indica che non può più essere colpito dal giocatore (forse fuori intervallo, o mancato, qualsiasi cosa) viene sollevato un evento di cambio di punteggio (in questo caso, un evento positivo) il tuo punteggio che si iscrive al punteggio cambia gli eventi, viene quindi informato del cambiamento positivo e dovrebbe aggiornarsi.

    
risposta data 09.10.2016 - 16:40
fonte

Leggi altre domande sui tag