Как очистить экран без `` `screen.fill ((0, 0, 0)` ``? - PullRequest
0 голосов
/ 24 апреля 2020

Я создаю игру, в которой, когда вы касаетесь стены, вы должны нажать на прямоугольник, чтобы двигаться дальше.

Однако отображается прямоугольник, как и предыдущий экран.

Я не могу использовать screen.fill((0, 0, 0)), потому что в l oop он просто будет продолжать работать. Я хочу удалить экран (или временно снять его. Это предпочтительно).

Вот мой код:

import pygame
pygame.init()

clock = pygame.time.Clock()

screen = pygame.display.set_mode((400, 300))
done = False
x = 100

y = 100
#button1 = pygame.draw.rect(screen, (0, 0, 255), (200, 200, 30, 30))

    #if check <= pos - (w/2) and check >= 
pygame.display.set_caption("Auto Maze!")
donk = False
while not done:
    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            done = True

        if event.type == pygame.MOUSEBUTTONDOWN:
            mouse = event.pos
            try:
                assert button1.collidepoint(mouse)
            except AssertionError:
                pass
            except NameError:
                pass
            else:
                donk = True
    pressed = pygame.key.get_pressed()

    if pressed[pygame.K_w]:
        y -= 5
    elif pressed[pygame.K_s]:
        y += 5
    elif pressed[pygame.K_a]:
        x -= 5
    elif pressed[pygame.K_d]:
        x += 5
    screen.fill((0, 0, 0))

    try:
        assert player.colliderect(wall1)
    except AssertionError:
        pass
    except NameError:
        pass
    else:
        death_screen = pygame.display.set_mode((400, 300))
        button1 = pygame.draw.rect(death_screen, (0, 0, 255), (200, 200, 30, 30))
        if donk:
            break


    player = pygame.draw.rect(screen, (0, 255, 0), (x, y, 60, 60))
    wall1 = pygame.draw.rect(screen, (255, 0, 0), (400, 300, -100, -300))

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

quit()

Заранее спасибо !!

1 Ответ

1 голос
/ 24 апреля 2020

Я избавился от попытки и кроме, и я думаю, что он делает то, что вы хотите

player = pygame.draw.rect(screen, (0, 255, 0), (x, y, 60, 60))
wall1 = pygame.draw.rect(screen, (255, 0, 0), (300, 0, 100, 300))    


if player.colliderect(wall1):
    death_screen = pygame.display.set_mode((400, 300))
    button1 = pygame.draw.rect(death_screen, (0, 0, 255), (200, 200, 30, 30))
    if donk:
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...