2012-09-23 24 views
5

Estoy intentando programar con Python. Soy bastante nuevo en Python y en la programación de computadoras en general. Quiero ser capaz de diseñar juegos brillantes y tal. Planeo aprender más tarde C + +, pero en este momento solo me quedaré con Python. Así que el problema que estoy teniendo es que estoy tratando de hacer que mi personaje se mueva diagonalmente en la pantalla cuando un usuario presiona la tecla K_UP y la tecla K_RIGHT o la tecla K_UP y la tecla K_DOWN, etc. Aquí está mi código para el movimiento del personaje (gestión de eventos):Programando Pygame para que pueda presionar varias teclas a la vez para hacer que mi personaje se mueva 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 

Gracias de antemano.

+1

Sólo una sugerencia: que larga cadena de 'if's quizás podría ser mejor expresado como una asignación:' event_dict = {K_ESCAPE: sys.exit, K_UP: lambda: setattr (self, 'char_y', self.char_y-10)} 'etc, seguido de' event_dict [event.key]() ' –

+0

También sugeriría algunas lecturas OOP, es crucial en el desarrollo de juegos. –

Respuesta

6

Puede hacerlo a través de 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

me temo que este juego se ejecutará más lento en las CPU antiguas –

+0

¿Debería colocarse este código bajo el código original o debería reemplazarlo? – David

+0

@coolbartek: ¿la mayoría de los juegos no se ejecutarán más lentamente en las CPU antiguas? ¿A qué te refieres, específicamente? –

Cuestiones relacionadas