¿Cómo hago para que un evento solo suceda si un valor verificable es verdadero en Python/pygame?

programación


Lo hice para que si haces clic vayas al centro de la pantalla, pero solo quiero que eso suceda si estás en la pantalla de muerte, lo que sucede cuando sales de la pantalla, ¿cómo hago para que el clic solo funcione si la muerte? la pantalla se muestra

Lo que he probado:

import pygame
import random

SCREEN_WIDTH = 800
SCREEN_HIEGHT = 600

gravity = 4

pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HIEGHT))

bg_image = pygame.image.load('Background.png')
bg_rect = bg_image.get_rect()

losing_image = pygame.image.load('losing screen.png')
losing_rect = losing_image.get_rect()

player_image = pygame.image.load('Character.png')
player_rect = player_image.get_rect()
player_rect.x = 30
player_rect.y = 300

dead = False

clock = pygame.time.Clock()
run = True
score = 0
while run:
     
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            player_rect.y = 300
            player_rect.x= 30
        if event.type == pygame.QUIT:
            run = False
             
    key = pygame.key.get_pressed()
    if key[pygame.K_w]:
        player_rect.y -= 7
    
    if player_rect.y < 790:
        player_rect.y += gravity
    
    
    screen.fill((0,0,0))
    screen.blit(bg_image, bg_rect)
    screen.blit(player_image, player_rect, )
    if player_rect.y >= 580:
        dead = True
        screen.blit(losing_image, losing_rect)
    
        

    pygame.display.flip()    
    pygame.display.update() 
    clock.tick(60) 

pygame.quit()

Solución 1

No puedes controlar cuándo se generan los eventos. Solo puedes configurar una condición en la que, cuando se llama a tu controlador de eventos, verificas el estado de tu juego (una bandera en tu caso) que muestra la “pantalla de muerte” y luego procedes en consecuencia. Tendrás que configurar la bandera (establecida en verdadero) cuando se muestre tu “pantalla de muerte”, luego restablecer esa bandera (establecida en falso) cuando sea apropiado.

コメント

タイトルとURLをコピーしました