FireStone 3942
FireStone 3942

Reputation: 19

how do i make a window quit in pygame?

I want to close the game after was pressed the esc button. how can I do? And where should I place it? I also found some problems that I can't solve, so if you solve them for me I would be happy

This is the code:

#Import Libraries
import pygame
import random

#PyGame Initialization
pygame.init()

#Images Variables
background = pygame.image.load('images/sfondo.png')
bird = pygame.image.load('images/uccello.png')
base = pygame.image.load('images/base.png')
gameover = pygame.image.load('images/gameover.png')
tube1 = pygame.image.load('images/tubo.png')
tube2 = pygame.transform.flip(tube1, False, True)

#Display Create
display = pygame.display.set_mode((288,512))
FPS = 60

#Define Functions
def draw_object():
    display.blit(background, (0,0))
    display.blit(bird, (birdx, birdy))

def display_update():
    pygame.display.update()
    pygame.time.Clock().tick(FPS)

def animations():
    global birdx, birdy, bird_vely
    birdx, birdy = 60, 150
    bird_vely = 0

#Move Control
animations()

while True:
    bird_vely += 1
    birdy += bird_vely
    for event in pygame.event.get():
        if ( event.type == pygame.KEYDOWN
             and event.key == pygame.K_UP):
            bird_vely = -10
        if event.type == pygame.QUIT:
            pygame.quit()
        draw_object()
        display_update()

Upvotes: 0

Views: 303

Answers (2)

Rabbid76
Rabbid76

Reputation: 210948

You must terminate the application loop when the QUIT event occurs. You have implmented the QUIT event, but you don't terminate the loop. Add a variabel run = True and set run = False when the event occurs.
To terminate the game when ESC is pressed you have to implement the KEYDOWN event. Set run = False when the KEDOWN event occurs and event.key == pgame.K_ESC:

run = True
while run:

    bird_vely += 1
    birdy += bird_vely
    for event in pygame.event.get():
        
        if event.type == pygame.QUIT:
            run = False

        elif event.type == pygame.KEYDOWN:
            
            if event.key == pgame.K_ESC:
                run = False

            elif event.key == pygame.K_UP:
                bird_vely = -10

    draw_object()
    display_update() 

pygame.quit()
exit()

Upvotes: 0

Shag
Shag

Reputation: 430

Well you do so by implementing below code snippet in your code:

running = True
while running:
    # other code
    event = pygame.event.wait ()
    if event.type == pygame.QUIT:
         running = False  # Be interpreter friendly
pygame.quit()

Make sure that you call pygame.quit() before you exit your main function

You can also reference this thread Pygame escape key to exit

Upvotes: 1

Related Questions