feat: item

- Add function for finding a random item spawn position
This commit is contained in:
Berger Lena
2026-05-08 15:13:31 +02:00
parent 11ece2ee54
commit 32525ccdbb
+29
View File
@@ -5,6 +5,35 @@ from src.settings import (
COLOR_HP_BAR_YELLOW, COLOR_HP_BAR_BG COLOR_HP_BAR_YELLOW, COLOR_HP_BAR_BG
) )
# try 50 times to find a free position to spawn item
def _random_position(room_rect, blocked_rects):
attempts = 0
max_attempts = 50
while attempts < max_attempts:
# generate random x/y coordinates with room boundaries
# * 2 to have a margin to walls
x = random.randint(room_rect.left + ITEM_SIZE, room_rect.right - ITEM_SIZE * 2)
y = random.randint(room_rect.top + ITEM_SIZE, room_rect.bottom - ITEM_SIZE * 2)
# create a rect at this position for testing collision
test_rect = pygame.Rect(x, y, ITEM_SIZE, ITEM_SIZE)
blocked = False
for b in blocked_rects:
if test_rect.colliderect(b):
blocked = True
break
# if position is not blocked, return the position
if not blocked:
return x, y
attempts += 1
# no spot after 50 attempts -> return
return None
# remove expired items # remove expired items
def update(self, room_rect, blocked_rects): def update(self, room_rect, blocked_rects):
now = pygame.time.get_ticks() now = pygame.time.get_ticks()