From 57444521cccd16bd0fccf6a889d5d5c38ecdb4da Mon Sep 17 00:00:00 2001 From: Chris Proctor Date: Thu, 19 Mar 2026 13:19:29 -0400 Subject: [PATCH] Fix bug in fruit slices --- fruit_catcher/catcher.py | 27 ++++++++++++++------------- fruit_catcher/manager.py | 1 + 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/fruit_catcher/catcher.py b/fruit_catcher/catcher.py index 9031909..c502753 100644 --- a/fruit_catcher/catcher.py +++ b/fruit_catcher/catcher.py @@ -77,19 +77,20 @@ class Catcher: agent.parent.check_catcher_collision(game) def _slice_fruits(self, game): - width, height = game.board_size - agents_by_pos = game.get_agents_by_position() - seen = set() - for y in range(height - 3, height): - for x in range(width): - for agent in agents_by_pos.get((x, y), []): - if isinstance(agent, FruitPiece) and agent.parent.alive and id(agent.parent) not in seen: - seen.add(id(agent.parent)) - game.state['score'] += 1 - for p in agent.parent.pieces.values(): - game.remove_agent(p) - game.remove_agent(agent.parent) - agent.parent.alive = False + _, height = game.board_size + slice_rows = set(range(height - 3, height)) + manager = game.get_agent_by_name("fruit_manager") + for fruit in list(manager.active_fruits): + if not fruit.alive: + continue + for piece in fruit.pieces.values(): + if piece.position[1] in slice_rows: + game.state['score'] += 1 + for p in fruit.pieces.values(): + game.remove_agent(p) + game.remove_agent(fruit) + fruit.alive = False + break def create_pieces(self, game): x, y = self.position diff --git a/fruit_catcher/manager.py b/fruit_catcher/manager.py index 277a4e5..4f16a9a 100644 --- a/fruit_catcher/manager.py +++ b/fruit_catcher/manager.py @@ -4,6 +4,7 @@ from random import choice, randint class FruitManager: display = False + name = "fruit_manager" def __init__(self): self.active_fruits = []