Mehrere Anzeigen in Pygame

Ich mache ein kleines Spiel und möchte ein anderes Fenster als das Hauptfenster machen.

Ich habe das Hauptspiel in einem Hauptfenster und möchte ein neues Fenster öffnen und eine kleine Animation machen, wenn der Benutzer etwas tut.

Wenn der Benutzer in meinem Beispielcode unten "a" drückt, möchte ich, dass es ein neues Fenster öffnet und dorthin blitzt.

Hier habe ich die beiden Fenster eingerichtet: (Ich weiß, dass dies nicht funktioniert. Ich frage, wie es geht.)

SCREEN_X = 400
SCREEN_Y = 400
BSCREEN_X = 240
BSCREEN_Y = 160

BATTLE_SCENE = pygame.display.set_mode((BSCREEN_X, BSCREEN_Y))
SCREEN = pygame.display.set_mode((SCREEN_X, SCREEN_Y))

und dann das programm:

def run_ani ():
    #Do animation, blitting to BATTLE_SCENE
    return

def main_game():
    ending=False
    while ending==False:
        clock.tick(30)
        for event in pygame.event.get():
            if event.type == pygame.QUIT: ending=True
            if event.type == KEYDOWN: # key down or up?
                if event.key == K_ESCAPE:
                    ending=True # Time to leave
                    print("Stopped Early by user")
                elif event.key == K_a:
                    run_ani()
        #Normal screen motion, blitting to SCREEN
        if ending: pygame.quit()
    return

Bisher zeichnet dies den Hauptbildschirm. Wenn Sie A drücken, werden die Animationen des Hauptbildschirms nicht mehr gezeichnet, die anderen Animationen werden jedoch weiterhin auf dem Hauptbildschirm und in der oberen linken Ecke gezeichnet.

Ich bin mir ziemlich sicher, dass es das tut, weil ich einsetzeBATTLE_SCENE kleiner sein als der Hauptbildschirm, also beim blitzen aufBATTLE_SCENE Es passt zu dem Bereich, den ich erstellt habe (240x160), in der oberen Ecke des Hauptbildschirms.

Wie ich willBATTLE_SCENE um ein separates Fenster zu sein, so dass, wenn ich 'a' drücke, es auftaucht, seine Sache macht, dann schließt oder zumindest hinter den Hauptbildschirm geht.

Wie macht man das? Ist es überhaupt möglich?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage