pygame - on-hold-Taste nach unten

Ich habe eine Lösung gefunden, um ein sprite zu bewegen, wenn Sie eine Taste gedrückt halten nach unten. Das problem ist, dass es zwingt schreiben ugly duplizierten code. Die aktuelle Lösung, die ich fand ist:

       for event in pygame.event.get():
            if event.type == KEYDOWN:
                keystate = pygame.key.get_pressed()
                while keystate[K_RIGHT]:
                    screen.fill((255,255,255))
                    pygame.event.get()

                    for sprite in sprites:
                        rimage = sprite[1].getimage()

                        if sprite[2] is None:
                            x+=3
                            sprite[1].update(time)
                            screen.blit(rimage, (x,y))
                            if sprite[1].isfinished() == True:
                                sprite[1].reset()
                            last_dir = "right"
                            if x >= screen_width - rimage.get_width():
                                x = screen_width - rimage.get_width()

                    #update player sprite movement
                    #update player sprite animation
                    #update rest of game map

                    keystate = pygame.key.get_pressed()
                    time = pygame.time.get_ticks()


                    pygame.display.update()

Das problem ist, dass die while keystate-block. Es muss wiederholt werden, für jede Richtung und die Spielwelt aktualisiert werden muss in jedem while-block. Fünf Orte, an denen der gleiche code muss dupliziert werden....4 Richtungen plus, wenn eine Taste nicht gedrückt. Ich konnte wickeln Sie es in eine Funktion, aber ich Frage mich, ob es einen besseren Weg zu behandeln, das gedrückt halten einer Taste in der pygame.

InformationsquelleAutor eat_a_lemon | 2012-12-02
Schreibe einen Kommentar