Ich bin neu bei Python und Pygame und entwerfe einen einfachen Klon von Dance Dance Revolution, der mit der Tastatur gespielt wird. Ich habe es eingerichtet, um die Kollision zwischen dem fallenden Pfeil und dem darunter liegenden statischen Pfeil zu erkennen, und ich habe es eingestellt, um die richtigen Tastenbetätigungen während Kollisionen zu erkennen. Das Problem ist, dass es nur einige der Tastenbetätigungen einige Male erkennt. Ich bin mir nicht sicher warum und der Code hat mich überholt.Pygame erkennt nicht alle Schlüsselereignisse bei Kollision
def collisionDetect(arrow, contact_arrow):
return pygame.sprite.collide_rect(arrow, contact_arrow)
def game(list):
running = True
for i in list:
arrow = Arrow(i[0],i[1],0,0,screen,SCREEN_WIDTH,SCREEN_HEIGHT)
arrow.positionArrow()
arrows.add(arrow)
while running:
screen.fill((0,0,0))
arrowleft.drawArrowPanel()
arrowright.drawArrowPanel()
arrowup.drawArrowPanel()
arrowdown.drawArrowPanel()
for arrow in arrows:
if arrow.y < 500:
arrow.arrowFall()
arrow.positionArrow()
collisionLeft = collisionDetect(arrow, arrowleft)
collisionRight = collisionDetect(arrow, arrowright)
collisionUp = collisionDetect(arrow, arrowup)
collisionDown = collisionDetect(arrow, arrowdown)
else:
arrow.kill()
pygame.display.update()
for e in pygame.event.get():
if e.type == pygame.QUIT:
running = False
pygame.quit()
if e.type == pygame.KEYDOWN and e.key == pygame.K_LEFT and collisionLeft:
print "collided left"
if e.type == pygame.KEYDOWN and e.key == pygame.K_RIGHT and collisionRight:
print "collided right"
if e.type == pygame.KEYDOWN and e.key == pygame.K_UP and collisionUp:
print "collided up"
if e.type == pygame.KEYDOWN and e.key == pygame.K_DOWN and collisionDown:
print "collided down"
Ich habe die Klassendefinitionen verlassen und kann sie auf Anfrage holen. Die Ereignisschleife erkennt, dass der Pfeil nach unten während der Kollision gedrückt wird, aber sonst nichts. Gibt es dafür eine schnelle Lösung? Gibt es einen besseren Weg, damit umzugehen? Vielen Dank.
vielen dank! das macht vollkommen Sinn. – ineptchimpanzee