Если вы не используете класс Group
, бессмысленно вызывать метод Sprite.kill
. Все, что он делает, это удаляет Спрайта из всех его групп. Вызов kill
магическим образом не удаляет Sprite
из вашей игры.
Если вы хотите удалить Sprite
, просто прекратите его использовать: либо прекратите вызывать ball.blitme()
и ball.update()
в вашей функции update_screen
, либо замените ball
новым экземпляром класса вашего Sprite.
Но подумайте о том, чтобы начать использовать класс Group
. Это сделает вашу жизнь проще.
Чтобы проверить, находится ли шарик внутри экрана, вместо
if not pygame.surface.rect.contains(Ball())
использование
if not pygame.display.get_surface().get_rect().contains(self.rect):
self.rect.center = (whatever_new_position, ....)
в методе обновления Ball
. pygame.display.get_surface()
даст вам поверхность экрана, get_rect()
даст вам Rect
этого Surface
, а contains()
проверит, находится ли Rect
Ball
внутри экрана.
Затем мы просто устанавливаем новую позицию для мяча.
Также обратите внимание, что обычно нет необходимости в атрибутах x
и y
в классе спрайтов, поскольку позиция уже сохранена в атрибуте rect
.