В Pygame не получается во внутреннем цикле медленно и плавно выводить по одному квадратики, получается рывком (сразу строку) выводит
import pygame
clock = pygame.time.Clock()
pygame.init()
screen = pygame.display.set_mode([600, 600])
pygame.display.set_caption("MyExperiments")
WHITE = (255, 255, 255)
surf = pygame.Surface((500, 500))
surf.fill(WHITE)
h = 0
v = 0
keep_going = True
while keep_going:
screen.blit(surf, (50, 50))
for event in pygame.event.get():
print(event)
if event.type == pygame.QUIT:
keep_going = False
for h in range(0, 500, 25):
pygame.draw.rect(surf, 'Red', (h, v, 25, 25), 1)
pygame.display.flip()
clock.tick(25)
if v < 500:
v += 25
Ответы (1 шт):
Автор решения: чистов_n
→ Ссылка
Надо убрать внутренний цикл for, и добавить несколько проверок.
Пояснения в коде:
import pygame
clock = pygame.time.Clock()
pygame.init()
screen = pygame.display.set_mode([600, 600])
pygame.display.set_caption("MyExperiments")
WHITE = (255, 255, 255)
surf = pygame.Surface((500, 500))
surf.fill(WHITE)
h = 0
v = 0
keep_going = True
while keep_going:
screen.blit(surf, (50, 50))
for event in pygame.event.get():
print(event)
if event.type == pygame.QUIT:
keep_going = False
if v <= 500: # Проверяем не закончили-ли мы
pygame.draw.rect(surf, 'Red', (h, v, 25, 25), 1)
pygame.display.flip()
if h < 500:
h += 25 # Увеличиваем координату по x
else:
h = 0 # Обнуляем x-координату
v += 25 # Увеличиваем координату по y
clock.tick(25)