Pygame. Проблема с методом spritecollideany()

Я делаю игру где игрок может управлять машинкой и ему навстречу движутся другие машинки. Ему надо не допустить столкновения. И для этого я использую спрайты и группы. Есть класс игрока и класс (или спрайт) машинок. Они находятся в одной группе. Но при добавлении условия ниже программа сразу же закрывается. Никаких ошибок не выводит.

if pg.sprite.spritecollideany(hero, cars):
    sys.exit()

Весь код:

from random import randint
import pygame as pg
import sys

pg.init()
pg.time.set_timer(pg.USEREVENT, 2000)

W = 400
H = 400
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
CARS = ('car1.png', 'car2.png', 'car3.png')
# для хранения готовых машин-поверхностей
CARS_SURF = []

# надо установить видео режим
# до вызова image.load()
sc = pg.display.set_mode((W, H))

for i in range(len(CARS)):
    CARS_SURF.append(
        pg.image.load(CARS[i]).convert_alpha())


class Car(pg.sprite.Sprite):
    def __init__(self, x, surf, group):
        pg.sprite.Sprite.__init__(self)
        self.image = surf
        self.rect = self.image.get_rect(
            center=(x, 0))
        # добавляем в группу
        self.add(group)
        # у машин будет разная скорость
        self.speed = randint(1, 3)

    def update(self):
        if self.rect.y < H:
            self.rect.y += self.speed
        else:
            # теперь не перебрасываем вверх,
            # а удаляем из всех групп
            self.kill()


class Hero(pg.sprite.Sprite):
    def __init__(self, x, surf, group):
        pg.sprite.Sprite.__init__(self)
        self.image = surf
        self.rect = self.image.get_rect(
            center=(x, H-34))
        # добавляем в группу
        self.add(group)


cars = pg.sprite.Group()

scale = pg.image.load('hero.png')
hero_surf = pg.transform.scale(
    scale, (scale.get_width() - 10, scale.get_height() - 18))
# hero_rect = hero_surf.get_rect()

hero = Hero(randint(20, W-20), hero_surf, cars)
# hero.add(cars)

Car(randint(1, W),
    CARS_SURF[randint(0, 2)], cars)

while 1:
    for i in pg.event.get():
        if i.type == pg.QUIT:
            sys.exit()
        elif i.type == pg.USEREVENT:
            Car(randint(1, W),
                CARS_SURF[randint(0, 2)], cars)

    pressed = pg.key.get_pressed()
    if pressed[pg.K_RIGHT]:
        hero.rect.x += 2
        pg.display.update()
    elif pressed[pg.K_LEFT]:
        hero.rect.x -= 2
        pg.display.update()
    elif pressed[pg.K_DOWN]:
        hero.rect.y += 2
        pg.display.update()
    elif pressed[pg.K_UP]:
        hero.rect.y -= 2
        pg.display.update()

    # if pg.sprite.spritecollideany(hero, cars):
    #     sys.exit()

    sc.fill(BLACK)
    pg.draw.line(sc, WHITE, (W // 2, 0), (W // 2, H))

    sc.blit(hero_surf, hero.rect)
    cars.draw(sc)

    pg.display.update()
    pg.time.delay(20)

    cars.update()

Ответы (0 шт):