import os from pygame import image import pygame import pygame.transform class Projectile: UP = "up" DOWN = "down" LEFT = "left" RIGHT = "right" def __init__(self, game, x, y, direction: str): self.game = game self.settings = self.game.settings self.x = x self.y = y self.direction = direction self.h, self.w = self.settings.projectile_size, self.settings.projectile_size self.image = image.load(os.path.join(self.settings.img_folder, "tanks", "explotions", "shot", self.direction + ".png")) self.image = pygame.transform.scale(self.image, (self.settings.projectile_size, self.settings.projectile_size)) def move(self): if self.direction == self.UP: self.y -= self.settings.projectile_speed elif self.direction == self.DOWN: self.y += self.settings.projectile_speed elif self.direction == self.LEFT: self.x -= self.settings.projectile_speed elif self.direction == self.RIGHT: self.x += self.settings.projectile_speed def update(self): self.move() self.game.screen.blit(self.image, (self.x, self.y)) def change_coords_by_delta(self, dx=None, dy=None): self.x = self.x - dx self.y = self.y - dy def get_check_points(self): result = None if self.direction == self.UP: result = ( (self.x + 1, self.y), (self.x + self.w - 1, self.y) ) elif self.direction == self.DOWN: result = ( (self.x + 1, self.y + self.h), (self.x + self.w - 1, self.y + self.h) ) elif self.direction == self.LEFT: result = ( (self.x, self.y + 1), (self.x, self.y + self.h - 1) ) elif self.direction == self.RIGHT: result = ( (self.x + self.w, self.y + 1), (self.x + self.w, self.y + self.h - 1) ) return result