68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
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
|