Отступ и организация кода - ключ к этому.нарушающий раздел (комментарии удалены):
for ball in ball_list:
random_color = (random.randint(1,255),random.randint(1,255),random.randint(1,255))
circle = pygame.draw.circle(display,random_color,(int(ball.x), int(ball.y)),radius)
rectangle = pygame.draw.rect(display,(255,255,255),(int(rect_x),660,60,60))
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and rect_x > 0:
rect_x -= 2
if event.key == pygame.K_RIGHT and rect_x < width - 60:
rect_x += 2
if pygame.Rect(circle).colliderect(rectangle) == True:
print('Your Score:',pygame.time.get_ticks())
running = False
У вас были все правильные части, но порядок, в котором вы делаете их, выключен, а также отступ:
for ball in ball_list:
random_color = (random.randint(1,255),random.randint(1,255),random.randint(1,255))
circle = pygame.draw.circle(display,random_color,(int(ball.x), int(ball.y)),radius)
rectangle = pygame.draw.rect(display,(255,255,255),(int(rect_x),660,60,60))
if pygame.Rect(circle).colliderect(rectangle):
print('Your Score:',pygame.time.get_ticks())
running = False
Это теперь будет проходить через каждый шар в списке и проверять каждый на предмет столкновения.обратите внимание на colliderect, если оператор вставлен в цикл for.Также обратите внимание, что я удалил проверку KEYDOWN в середине всего этого
Говоря об этом, я бы рекомендовал использовать:
pressed = pygame.key.get_pressed()
if pressed[pygame.K_LEFT] and rect_x > 0:
rect_x -= 2
if pressed[pygame.K_RIGHT] and rect_x < width - 60:
rect_x += 2
for ball in ball_list:
# for loop from above
вместо того, что у вас было.Это работает лучше всего, когда вы хотите, чтобы удерживать клавишу нажатой.pygame.key.get_pressed () получает состояние всех клавиш постоянно, а не только когда происходит событие