draw.rect в словаре не работает в питон
Вставил функцию draw.rect в словарь. Функция не работает. Почему? Взарание спаибо.
import pygame as pg
pg.init()
import math
sc = pg.display.set_mode((1280, 660))
tp = {0:pg.draw.circle(sc, (25, 4, 11), (1122, 50), 25, 50), 3:pg.draw.circle(sc, (50, 7, 23), (1122, 50), 25, 50), 6:pg.draw.circle(sc, (76, 11, 34), (1122, 50), 25, 50), 9:pg.draw.circle(sc, (101, 14, 46), (1122, 50), 25, 50), 12:pg.draw.circle(sc, (126, 18, 57), (1122, 50), 25,50), 15:pg.draw.circle(sc, (254, 254, 254), (1122, 50), 25, 50), 15:pg.draw.circle(sc, (252, 35, 114), (1122, 50), 25, 50)}
t = 0
run = True
clock = pg.time.Clock()
while run:
clock.tick(60)
for event in pg.event.get():
if event.type == pg.QUIT:
run = False
sc.fill((0, 0, 0))
try:
tp[math.floor(t/3)*3]
except:
pass
pg.display.update()
t += 1
pg.quit()
exit()
Ответы (1 шт):
Автор решения: Alex
→ Ссылка
Попробуйте поменять код на
# это в самое начало файла, сразу после импортов, как новые функции
def test1:
pg.draw.circle(sc, (25, 4, 11), (1122, 50), 25, 50))
def test2:
pg.draw.circle(sc, (255, 4, 11), (1000, 100), 25, 50))
...
tp = {1: test1, 2: test2}
...
tp[1]()
Если в такой конфигурации заработает, то проблема понятна. Вместо кучи определений, возможно, можно найти какой-то более элегантный способ - но в целом я считаю, что всю идею с массивом функций надо как-то переработать и сделать всю обработку в рамках одной функции, просто с кучей сравнений. Проще и понятнее будет, ИМХО.
https://www.pygame.org/docs/ref/draw.html#pygame.draw.rect https://www.pygame.org/docs/ref/rect.html