Quindi sto creando un clone di Super Mario Bros in pygame. A partire da ora sono nel bel mezzo di rendere la mia funzione di keypoll, per controllare tutti i tasti che vengono attualmente premuti. Mi chiedo quale sarebbe meglio:
-
La funzione keypoll modifica gli attributi marios (ad esempio, la direzione orizzontale), quindi in base a quelli, mario decide quale azione dovrebbe fare (cioè, cammina, corri, salta, ecc.) e chiama la funzione corrispondente azione (es. mario.moveHorz ())
o
-
Chiedi alla funzione keypoll di chiamare la funzione dell'azione che dovrebbe eseguire, quindi l'istanza di Mario deciderà in quale stato si trova attualmente.
Ecco un codice semi-pseudo per il primo:
def doAction():
if mario.horzDir == 'r' or 'l':
mario.moveHorz()
elif mario.action == 'jump':
mario.jump()
def keyPoll(keys):
if keys[K_RIGHT]:
mario.horzDir = 'r'
elif keys[K_LEFT]:
mario.horzDir = 'l'
if keys[K_z]:
mario.action = 'jump'
Ecco un altro codice semi-pseudo per il secondo:
def keyPoll(keys):
if keys[K_RIGHT]:
mario.moveHorz('r')
elif keys[K_LEFT]:
mario.moveHorz('l')
if keys[K_z]:
mario.jump()
def setProperties():
if mario.x_vel > 0:
mario.horzDir = 'r'
elif mario.x_vel < 0:
mario.horzDir = 'l'
elif mario.y > ground:
mario.action = 'jump'
Entrambi essenzialmente realizzano la stessa cosa, semplicemente non so quale sia più corretto.
Grazie!