From 281b52e71d3cc2306e25d3497108502406df6b91 Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Mon, 15 Apr 2024 14:51:28 +0200 Subject: [PATCH] remove moving tail of snake when begin moves are done and not calculate own body in avoid_snakes because already avoid own body --- snakes/BetterMasterSnake.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/snakes/BetterMasterSnake.py b/snakes/BetterMasterSnake.py index a104669..433c3a7 100644 --- a/snakes/BetterMasterSnake.py +++ b/snakes/BetterMasterSnake.py @@ -35,6 +35,13 @@ class BetterMasterSnake(TemplateSnake): } } + def get_snake_body_without_snake_tail(self, snake:list[dict]): + if len(set((pos["x"], pos["y"]) for pos in snake)) < 3: + return snake + + snake.pop() + return snake + def avoid_my_body(self, my_body, possible_moves:dict) -> list: """ my_body: List of dictionaries of x/y coordinates for every segment of a Battlesnake. @@ -70,8 +77,11 @@ class BetterMasterSnake(TemplateSnake): def avoid_snakes(self, snakes:list, possible_moves:dict): remove = [] for snake in snakes: + if snake["id"] == self.my_snake["id"]: + continue + for direction, location in possible_moves.items(): - if location in snake["body"]: + if location in self.get_snake_body_without_snake_tail(snake["body"]): remove.append(direction) remove = set(remove)