from __future__ import annotations import pygame from pygame.sprite import Sprite from typing import TYPE_CHECKING if TYPE_CHECKING: from alien_invasion import AlienInvasion class Bullet(Sprite): """A class to manage bullets fired from the ship.""" def __init__(self, ai_game: 'AlienInvasion') -> None: """Create a bullet object at the ship's current position.""" super().__init__() self.screen = ai_game.screen self.settings = ai_game.settings self.color = self.settings.bullet_color self.rect = pygame.Rect(0, 0, self.settings.bullet_width, self.settings.bullet_height) self.rect.midtop = ai_game.ship.rect.midtop self.y = float(self.rect.y) def update(self) -> None: """Move the bullet up the screen.""" self.y -= self.settings.bullet_speed self.rect.y = int(self.y) def draw_bullet(self) -> None: """Draw the bullet to the screen.""" pygame.draw.rect(self.screen, self.color, self.rect)