From 03ae86550925fc1f487bc7b1f90a0db379faac26 Mon Sep 17 00:00:00 2001 From: Gio Date: Sun, 12 Jul 2026 18:42:04 -0600 Subject: [PATCH] pursuit: render agents as squares instead of circles Draw pursuers and evaders as filled squares slightly smaller than the grid cells (80% of a cell, centered), restoring the look the environment had before it was ported to PyGame. Fixes #1360. Co-Authored-By: Claude Opus 4.8 --- pettingzoo/sisl/pursuit/pursuit_base.py | 27 +++++++++++++------------ 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/pettingzoo/sisl/pursuit/pursuit_base.py b/pettingzoo/sisl/pursuit/pursuit_base.py index 4bd04f954..7dee98518 100644 --- a/pettingzoo/sisl/pursuit/pursuit_base.py +++ b/pettingzoo/sisl/pursuit/pursuit_base.py @@ -320,26 +320,27 @@ def draw_pursuers_observations(self): ), ) + def draw_agent_square(self, x, y, col): + # draw a square slightly smaller than the grid box, centered in the cell + size = int(self.pixel_scale * 0.8) + offset = (self.pixel_scale - size) // 2 + rect = pygame.Rect( + int(self.pixel_scale * x) + offset, + int(self.pixel_scale * y) + offset, + size, + size, + ) + pygame.draw.rect(self.screen, col, rect) + def draw_pursuers(self): for i in range(self.pursuer_layer.n_agents()): x, y = self.pursuer_layer.get_position(i) - center = ( - int(self.pixel_scale * x + self.pixel_scale / 2), - int(self.pixel_scale * y + self.pixel_scale / 2), - ) - col = (255, 0, 0) - pygame.draw.circle(self.screen, col, center, int(self.pixel_scale / 3)) + self.draw_agent_square(x, y, (255, 0, 0)) def draw_evaders(self): for i in range(self.evader_layer.n_agents()): x, y = self.evader_layer.get_position(i) - center = ( - int(self.pixel_scale * x + self.pixel_scale / 2), - int(self.pixel_scale * y + self.pixel_scale / 2), - ) - col = (0, 0, 255) - - pygame.draw.circle(self.screen, col, center, int(self.pixel_scale / 3)) + self.draw_agent_square(x, y, (0, 0, 255)) def draw_agent_counts(self): font = pygame.font.SysFont("Comic Sans MS", self.pixel_scale * 2 // 3)