до основного цикла while я хотел задать параметры отрисовываемого синего квадрата в переменной p, а уже в теле цикла while в конструкции pygame.draw.rect вместо длинного (x, y, rect_width, rect_height) написать просто - p (то есть вместо pygame.draw.rect(sc, BLUE, (x, y, rect_width, rect_height)) я хотел указать pygame.draw.rect(sc, BLUE, p)).
Но так программа не работает, а если указать как у меня сейчас указано в коде. (pygame.draw.rect(sc, BLUE, (x, y, rect_width, rect_height))), то все ок и работает.
Почему так? Ведь p содержит x, а этот x в цикле мы постоянно модифицируем. Так почему же квадрат не появляется и не движется?
Заранее спасибо!
import pygame
FPS = 60
WIN_WIDTH = 800
WIN_HEIGHT = 400
WHITE = (255, 255, 255)
ORANGE = (255, 150, 100)
BLUE = (64, 128, 255)
pygame.init()
clock = pygame.time.Clock()
sc = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
rect_width = 150
rect_height = 150
x = 0 - rect_width
y = (WIN_HEIGHT // 2) - (rect_height // 2)
p = (x, y, rect_width, rect_height)
direction = 1
while 1:
sc.fill(WHITE)
for i in pygame.event.get():
if i.type == pygame.QUIT: exit()
pygame.draw.rect(sc, BLUE, (x, y, rect_width, rect_height))
pygame.display.update()
if direction == 1:
if x >= WIN_WIDTH - rect_width:
direction = -1
else:
x += 3
else:
if x <= 0:
direction = 1
else:
x -= 3
clock.tick(FPS)