Как сделать сокращающийся черный ящик в пигаме - PullRequest
3 голосов
/ 30 апреля 2020

Я пытаюсь создать сокращающийся черный ящик в пигме, где угол черного ящика остается на (0,0). Я кодировал, но я действительно не могу найти ничего плохого в своем коде, но он все равно не работает.

import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d, %d" %(250, 10)
import pygame
pygame.init()
SIZE = (650, 650)   
screen = pygame.display.set_mode(SIZE)


RED = (255, 0, 0)
BLACK = (0, 0, 0)

pygame.draw.rect(screen, RED, (0,0, 650, 650))

while True:
    x = 650
    y = 650
    if x >= 1:
        x-1
        pygame.draw.rect(screen, BLACK, (0,0, x, y))
        pygame.display.flip()
        pygame.time.wait(100)  

pygame.display.flip()
pygame.time.wait(5000)
pygame.quit()

1 Ответ

4 голосов
/ 30 апреля 2020

Вы должны очистить дисплей в каждом кадре. Если вы не очистите дисплей, то меньший прямоугольник будет нарисован поверх большего прямоугольника из последнего кадра, и эффект сжатия не будет виден.
Кроме того, x и y должны быть инициализированы перед применением. l oop и x-1 никак не влияют. Если вы хотите уменьшить значение переменной, вам необходимо использовать оператор -= (x -= 1).
Наконец, я рекомендую обработать события и реализовать событие pygame.QUIT:

x = 650
y = 650

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    if x >= 1:
        x -= 1

        # draw BLACK background
        screen.fill(BLACK)

        # draw RED box
        pygame.draw.rect(screen, RED, (0,0, x, y))

        pygame.display.flip()
        pygame.time.wait(100)  

Обратите внимание, цвет фона - BLACK, а цвет рамки - RED.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...