random spawn of tower field
This commit is contained in:
@@ -7,3 +7,26 @@ tower_size = 30
|
|||||||
prjectile_size = 8
|
prjectile_size = 8
|
||||||
fire_interval = 1000 # ms zwischen Schüssen
|
fire_interval = 1000 # ms zwischen Schüssen
|
||||||
respawn_delay = 10000 # ms bis neues Feld spawnt
|
respawn_delay = 10000 # ms bis neues Feld spawnt
|
||||||
|
|
||||||
|
|
||||||
|
class Tower:
|
||||||
|
def __init__(self) -> None:
|
||||||
|
# Feld und Tower -> None wenn nicht aktiv
|
||||||
|
self.field_rect: pygame.Rect = None
|
||||||
|
self.tower_rect: pygame.Rect = None
|
||||||
|
self.projectiles: list[dict] = None
|
||||||
|
self.tower_start: int = None
|
||||||
|
self.despawn_timer: int = None
|
||||||
|
self.last_shot: int = 0
|
||||||
|
|
||||||
|
def field_spawn(self, room_rect: pygame.Rect, blocked_rects: list[pygame.Rect]):
|
||||||
|
# soll Tower Feld an zufälliger freier Position im Raum spawnen
|
||||||
|
for i in range(50):
|
||||||
|
x = random.randint(room_rect.left + tower_size, room_rect.right - tower_size * 2)
|
||||||
|
y = random.randint(room_rect.top + tower_size, room_rect.bottom - tower_size * 2)
|
||||||
|
rect = pygame.Rect(x, y, tower_size, tower_size)
|
||||||
|
|
||||||
|
# freie Position finden - nicht auf dem Tisch oder blockierten Rects
|
||||||
|
if not any(rect.colliderect(b) for b in blocked_rects):
|
||||||
|
self.field_rect = rect
|
||||||
|
return
|
||||||
Reference in New Issue
Block a user