Почему окно мигает цветами в pygame? - PullRequest
1 голос
/ 05 мая 2020

поэтому после того, как черный ящик сжимается, а затем расширяется, я хочу, чтобы эти 2 цветных прямоугольника выходили из черного фона (звучит немного запутанно, но вы поймете, что я имею в виду). Есть ли причина, по которой эти красочные коробки, которые я пытаюсь сделать, мигают, а не остаются?

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



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


x = 650
y = 650
count = 0
secx = 1
secy = 1
firstsx = 325
firstsy = 325


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

    if x >= 1:
        x -= 1
        y -= 1
        count += 1

        randcolor = (random.randint(0,255)), (random.randint(0,255)),(random.randint(0,255))

        pygame.draw.rect(screen, randcolor, (1,1, x, y))
        pygame.draw.rect(screen, BLACK, (0,0, x, y))

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

    if count > 649:
        count += 1
        secx = count-650
        secy = count-650

        pygame.draw.rect(screen, BLACK, (0,0, secx, secy))
        pygame.display.flip()
        pygame.time.wait(3) 

    if count > 1399:
        count += 1
        firstsx -= 1
        firstsy -= 1

        randcolor = (random.randint(0,255)), (random.randint(0,255)),(random.randint(0,255))
        pygame.draw.rect(screen, randcolor, (325,0, firstsx, firstsy))
        pygame.draw.rect(screen, randcolor, (0,325, firstsx, firstsy))
        pygame.display.flip()
        pygame.time.wait(3) 

1 Ответ

2 голосов
/ 05 мая 2020

На самом деле вы обновляете отображение и ждете после рисования 1-го поля. На этом этапе второе поле вообще не отображается.
Просто введите 1 pygame.display.flip() и pygame.time.wait(3) в конце приложения l oop.

Кроме того, вы должны определить случайные цвета перед основным приложением l oop. Быстро меняющиеся цвета заставляют поле мигать:

randcolor = (random.randint(0,255)), (random.randint(0,255)),(random.randint(0,255))
randcolor1 = (random.randint(0,255)), (random.randint(0,255)),(random.randint(0,255))
randcolor2 = (random.randint(0,255)), (random.randint(0,255)),(random.randint(0,255))

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

    if x >= 1:
        x -= 1
        y -= 1
        count += 1
        pygame.draw.rect(screen, randcolor, (1,1, x, y))
        pygame.draw.rect(screen, BLACK, (0,0, x, y))

    if count > 649:
        count += 1
        secx = count-650
        secy = count-650
        pygame.draw.rect(screen, BLACK, (0,0, secx, secy)) 

    if count > 1399:
        count += 1
        firstsx -= 1
        firstsy -= 1
        pygame.draw.rect(screen, randcolor1, (325,0, firstsx, firstsy))
        pygame.draw.rect(screen, randcolor2, (0,325, firstsx, firstsy))

        if firstsx == 0:
            x, y = 650, 650
            count = 0
            firstsx, firstsy = 325, 325

    pygame.display.flip()
    pygame.time.wait(3) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...