paia-hw5-fit/TankMan/src/Wall.py

42 lines
1.5 KiB
Python

from os import path
import pygame
from mlgame.view.view_model import create_asset_init_data, create_image_view_data
from .env import IMAGE_DIR, WALL_LIVE
class Wall(pygame.sprite.Sprite):
def __init__(self, construction, **kwargs):
super().__init__()
self.id = construction["_id"]
self.no = 0
self.rect = pygame.Rect(construction["_init_pos"], construction["_init_size"])
self.angle = 0
self.is_alive = True
self.lives = WALL_LIVE
def update(self, *args, **kwargs) -> None:
if self.lives <= 0:
self.kill()
def collide_with_bullets(self):
if self.lives > 0:
self.lives -= 1
def get_data_from_obj_to_game(self):
info = {"id": f"wall_{self.lives}", "x": self.rect.x, "y": self.rect.y, "lives": self.lives}
return info
def get_obj_progress_data(self):
return create_image_view_data(f"wall_{self.lives}", self.rect.x, self.rect.y
, self.rect.width, self.rect.height, self.angle)
def get_obj_init_data(self):
image_init_data = []
for i in range(1, self.lives+1):
image_init_data.append(create_asset_init_data(f"wall_{i}", self.rect.width, self.rect.height,
path.join(IMAGE_DIR, f"wall_{min(i,3)}.png"),
f"https://raw.githubusercontent.com/Jesse-Jumbo/TankMan/main/asset/image/wall_{min(i,3)}.png"))
return image_init_data