remove moving tail of snake when begin moves are done and not calculate own body in avoid_snakes because already avoid own body

This commit is contained in:
2024-04-15 14:51:28 +02:00
parent 38ba576de9
commit 281b52e71d
+11 -1
View File
@@ -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: 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. 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): def avoid_snakes(self, snakes:list, possible_moves:dict):
remove = [] remove = []
for snake in snakes: for snake in snakes:
if snake["id"] == self.my_snake["id"]:
continue
for direction, location in possible_moves.items(): 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.append(direction)
remove = set(remove) remove = set(remove)