2012-09-23 27 views
5

Sto provando a programmare con Python. Sono abbastanza nuovo a Python e alla programmazione per computer in generale. Voglio essere in grado di progettare giochi brillanti e così via. Ho in programma di imparare in seguito C + +, ma in questo momento sto solo andando a restare con Python. Quindi il problema che sto provando è che sto cercando di far muovere il mio personaggio in diagonale sullo schermo quando un utente preme sia la chiave K_UP e K_RIGHT o la chiave K_UP e K_DOWN, ecc. Ecco il mio codice per il movimento dei personaggi (gestione evento):Programmazione Pygame in modo da poter premere più tasti contemporaneamente per far muovere il mio personaggio diagonalmente

1. #Event Handling 
2. for event in pygame.event.get(): 
3.  if event.type == pygame.QUIT: 
4.   sys.exit() 
5.  elif (event.type == KEYDOWN): 
6.   if ((event.key == K_ESCAPE) 
7.    or (event.key == K_q)): 
8.    sys.exit() 
9.   if (event.key == K_UP): 
10.   self.char_y = self.char_y - 10 
11.  if (event.key == K_DOWN): 
12.   self.char_y = self.char_y + 10 
13.  if (event.key == K_RIGHT): 
14.   self.char_x = self.char_x + 10 
15.  if (event.key == K_LEFT): 
16.   self.char_x = self.char_x - 10 

Grazie in anticipo.

+1

Solo un suggerimento: che lunga catena di 'if's potrebbe forse essere meglio espresso come una mappatura:' event_dict = {K_ESCAPE: sys.exit, K_UP: lambda: setattr (self, 'char_y', self.char_y-10)} 'etc, seguito da' event_dict [event.key]() ' –

+0

vorrei anche suggerire alcune letture OOP, il suo cruciale in game dev. –

risposta

6

È possibile farlo via pygame.key.get_pressed():

keys = pygame.key.get_pressed() 

if keys[K_LEFT]: 
    self.char_x += 10 

if keys[K_RIGHT]: 
    self.char_x -= 10 

if keys[K_UP]: 
    self.char_y -= 10 

if keys[K_DOWN]: 
    self.char_y += 10 
+0

temo che questo gioco funzionerà più lentamente con le vecchie CPU –

+0

Questo codice deve essere inserito nel codice originale o deve essere sostituito? – David

+0

@coolbartek: la maggior parte dei giochi non funzionerà più lentamente con le vecchie CPU? Cosa intendi, in particolare? –