2012-09-23 27 views
5

Python ile programlamaya çalışıyorum. Python ve genel olarak bilgisayar programlama için oldukça yeni. Brillant oyunları ve benzeri tasarımları yapabilmek istiyorum. Daha sonra C + + öğrenmeyi planlıyorum, ama şimdi sadece python ile uğraşacağım. Yani şu anki problem, bir kullanıcı ya K_UP ve K_RIGHT tuşlarına ya da K_UP ve K_DOWN tuşlarına basıldığında karakterimin ekranda çapraz olarak hareket etmesini sağlamaya çalışmaktır. İşte karakter hareketimin kodudur. olay işleme):Pygame'i programlamak için karakterimi çapraz olarak taşımak için birden fazla tuşa basabiliyorum

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 

Şimdiden teşekkürler.

+1

Sadece bir öneri: 'event_dict = {K_ESCAPE: sys.exit, K_UP if's' uzun zincirli belki daha iyi bir eşleme olarak ifade edilebileceğini: lambda: setattr (self, 'char_y', self.char_y-10)} 'etc, ardından event_dict [event.key]()' –

+0

onu izlerim, aynı zamanda oyun devresinde çok önemli olan bazı OOP okumalarını öneririm. –

cevap

6

Sen pygame.key.get_pressed() aracılığıyla yapabilirsiniz:

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

Korkarım bu oyun eski CPU'larda daha yavaş çalışacaktır –

+0

Bu kod orijinal kodun altına konmalı mı yoksa değiştirilmesi mi gerekiyor? – David

+0

@coolbartek: Çoğu oyun eski CPU'larda daha yavaş çalışmayacak mı? Özellikle ne demek istiyorsun? –