привет! исправь ошибку в моей игре. вот игра:
import pygame
import random
import math

# Инициализация Pygame
pygame.init()

# Настройки экрана
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Stick Thrower")

# Цвета
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)
BLACK = (0, 0, 0)
BROWN = (139, 69, 19)

# Игровые параметры
PLAYER_SPEED = 2.5
ENEMY_SPEED = 0.75
THROW_COOLDOWN = 500
STICK_SPEED = 10

# Классы
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((20, 20))
        self.image.fill(BLUE)
        self.rect = self.image.get_rect(center=(WIDTH//2, HEIGHT//2))
        self.sticks = 0
        self.last_throw = 0

def move(self, dx, dy):
        self.rect.x += dx * PLAYER_SPEED
        self.rect.y += dy * PLAYER_SPEED

class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((20, 20))
        self.image.fill(RED)
        self.rect = self.image.get_rect(center=(random.randint(0, WIDTH), random.randint(0, HEIGHT)))
        self.health = random.randint(1, 5)
        self.direction = pygame.math.Vector2(random.uniform(-1, 1), random.uniform(-1, 1)).normalize()

def update(self):
        self.rect.x += self.direction.x * ENEMY_SPEED
        self.rect.y += self.direction.y * ENEMY_SPEED
        
        # Отражение от границ экрана
        if self.rect.left < 0 or self.rect.right > WIDTH:
            self.direction.x *= -1
        if self.rect.top < 0 or self.rect.bottom > HEIGHT:
            self.direction.y *= -1

class Stick(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.count = random.randint(1, 10)
        self.image = pygame.Surface((10, 10))
        self.image.fill(GREEN)
        self.rect = self.image.get_rect(center=(random.randint(0, WIDTH), random.randint(0, HEIGHT)))

class ThrownStick(pygame.sprite.Sprite):
    def __init__(self, start_pos, target_pos):
        super().__init__()
        self.image = pygame.Surface((5, 15))
        self.image.fill(BROWN)
        self.rect = self.image.get_rect(center=start_pos)
        self.direction = pygame.math.Vector2(target_pos) - pygame.math.Vector2(start_pos)
        self.direction = self.direction.normalize()

def update(self):
        self.rect.x += self.direction.x * STICK_SPEED
        self.rect.y += self.direction.y * STICK_SPEED
        
        # Удаление палки, если она вышла за пределы экрана
        if not screen.get_rect().collidepoint(self.rect.center):
            self.kill()

# Группы спрайтов
all_sprites = pygame.sprite.Group()
enemies = pygame.sprite.Group()
sticks = pygame.sprite.Group()
thrown_sticks = pygame.sprite.Group()

player = Player()
all_sprites.add(player)

def spawn_enemies():
    for _ in range(5):
        enemy = Enemy()
        all_sprites.add(enemy)
        enemies.add(enemy)

def spawn_sticks():
    for _ in range(random.randint(1, 10)):
        stick = Stick()
        all_sprites.add(stick)
        sticks.add(stick)

spawn_enemies()
spawn_sticks()

# Игровой цикл
clock = pygame.time.Clock()
running = True
while running:
    # Обработка событий
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

# Движение игрока
    keys = pygame.key.get_pressed()
    dx = keys[pygame.K_d] - keys[pygame.K_a]
    dy = keys[pygame.K_s] - keys[pygame.K_w]
    player.move(dx, dy)

# Подбор палок
    sticks_collected = pygame.sprite.spritecollide(player, sticks, True)
    for stick in sticks_collected:
        player.sticks += stick.count

# Бросание палок
    now = pygame.time.get_ticks()
    if player.sticks > 0 and now - player.last_throw > THROW_COOLDOWN:
        player.sticks -= 1
        player.last_throw = now
        if enemies:
            closest_enemy = min(enemies, key=lambda e: pygame.math.Vector2(e.rect.center).distance_to(player.rect.center))
            thrown_stick = ThrownStick(player.rect.center, closest_enemy.rect.center)
            all_sprites.add(thrown_stick)
            thrown_sticks.add(thrown_stick)

# Обновление врагов и брошенных палок
    enemies.update()
    thrown_sticks.update()

# Проверка попадания палок во врагов
    for enemy in enemies:
        hits = pygame.sprite.spritecollide(enemy, thrown_sticks, True)
        for hit in hits:
            enemy.health -= 1
            if enemy.health <= 0:
                enemy.kill()

# Проверка столкновения игрока с врагами
    if pygame.sprite.spritecollideany(player, enemies):
        print("Game Over!")
        running = False

# Спавн новых врагов и палок
    if len(enemies) == 0:
        spawn_enemies()
    if len(sticks) == 0:
        spawn_sticks()

# Отрисовка
    screen.fill(WHITE)
    all_sprites.draw(screen)

font = pygame.font.Font(None, 24)

for enemy in enemies:
        health_text = font.render(str(enemy.health), True, BLACK)
        screen.blit(health_text, (enemy.rect.x, enemy.rect.y - 20))

for stick in sticks:
        count_text = font.render(str(stick.count), True, BLACK)
        screen.blit(count_text, (stick.rect.x, stick.rect.y - 20))

sticks_text = font.render(f"Sticks: {player.sticks}", True, BLACK)
screen.blit(sticks_text, (player.rect.x - 30, player.rect.y - 30))

pygame.display.flip()
clock.tick(60)

pygame.quit()
а вот ошибка:
Traceback (most recent call last):
  File "c:\Users\misha\OneDrive\Рабочий стол\1111.py", line 122, in <module>
    player.move(dx, dy)
AttributeError: 'Player' object has no attribute 'move'. Did you mean: 'remove'?