19/11/15 15:21
3E8b12
Salve a tutti, dopo aver posto la domanda sulle matrici in c++ (e aver ottenuto validissime solzioni che però ho applicato solo su scacchiere) ho deciso di riprodurre l'intero gioco di PacMan (ma in python), e ci sono (quasi) riuscito, il gioco funziona perfettamente, ma odio con anima e corpo quei dannati muri .
Mi spiego, e spero di essere il più chiaro possibile:
Premetto di aver utilizzato le classi astratte.
All'interno del metodo __init__ del ghost ho dichiarato le seguenti variabili:
(chiaramente non posto ora TUTTO il codice completo del gioco, ma solo le porzioni interessate, spero comunque di poterlo fare nei prossimi giorni proprio su questo sito)
Io quindi ho una classe Ghost, con il proprio metodo collide, rect, movimento ecc..
Il metodo movimento è sempre in funzione, quindi bisognerebbe immaginarlo COME SE FOSSE un ciclo, e questo è un codice FUNZIONANTE solo se non si tengono in considerazione i muri al momento della "morte" dei fantasmi (ma io voglio una copia fedele del gioco )
premessa, ovviamente ho già un metodo di nome GTW(GoingToWall) che mi dice se sto andando o meno su un muro.
Ad esempio:
che si traduce in "SE NON TI SCONTRI CONTRO UN MURO.
Scrivo questo post di fretta, quindi nell'eventualità di aver omesso un dettaglio importante, o di non essere stato abbastanza chiaro, fatemelo sapere.
Mi spiego, e spero di essere il più chiaro possibile:
Premetto di aver utilizzato le classi astratte.
All'interno del metodo __init__ del ghost ho dichiarato le seguenti variabili:
(chiaramente non posto ora TUTTO il codice completo del gioco, ma solo le porzioni interessate, spero comunque di poterlo fare nei prossimi giorni proprio su questo sito)
self._x, self._y = x, y self._dx, self._dy = 0, 0#delta x e y self._costante_x, self._costante_y = 110, 88#punto dove devo arrivare self._attuale_x, self._attuale_y, self._w, self._h = self.rect()#il metodo rect mi restituisce sempre "x,y,w,h", ma a noi interessano solo x e y in questo caso self._COmAT_x = self._costante_x - self._attuale_x#COSTANTE meno ATTUALE X self._COmAT_y = self._costante_y - self._attuale_y#COSTANTE meno ATTUALE Y
Io quindi ho una classe Ghost, con il proprio metodo collide, rect, movimento ecc..
Il metodo movimento è sempre in funzione, quindi bisognerebbe immaginarlo COME SE FOSSE un ciclo, e questo è un codice FUNZIONANTE solo se non si tengono in considerazione i muri al momento della "morte" dei fantasmi (ma io voglio una copia fedele del gioco )
def movimento(self): self._attuale_x, self._attuale_y, self._w, self._h = self.rect() self._COmAT_x = self._costante_x - self._attuale_x self._COmAT_y = self._costante_y - self._attuale_y if self._COmAT_x < 0: self._x = self._x - 2 elif self._COmAT_x > 0: self._x = self._x + 2 if self._COmAT_y < 0: self._y = self._y - 2 elif self._COmAT_y > 0: self._y = self._y + 2
premessa, ovviamente ho già un metodo di nome GTW(GoingToWall) che mi dice se sto andando o meno su un muro.
Ad esempio:
if not (GTW(ClasseAstratta,self,[b]self._DX[/b], [b]self._DY[/b])):
che si traduce in "SE NON TI SCONTRI CONTRO UN MURO.
Scrivo questo post di fretta, quindi nell'eventualità di aver omesso un dettaglio importante, o di non essere stato abbastanza chiaro, fatemelo sapere.
Ultima modifica effettuata da 3E8b12 19/11/15 15:23
aaa