From 863ca1b277f6e3492044bb7cf21a8413824b478a Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Mon, 15 Apr 2024 22:20:15 +0200 Subject: [PATCH] fix calculations and not run in snake tail when in constrictor game mode --- snakes/BetterMasterSnake.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/snakes/BetterMasterSnake.py b/snakes/BetterMasterSnake.py index 2e91757..1fc01ed 100644 --- a/snakes/BetterMasterSnake.py +++ b/snakes/BetterMasterSnake.py @@ -10,7 +10,7 @@ class BetterMasterSnake(TemplateSnake): self.min_safe_area = 2 def get_possible_moves(self, my_head): - self.safe_positions = { + return { "up": { "x": my_head["x"], "y": my_head["y"] + 1 @@ -71,8 +71,12 @@ class BetterMasterSnake(TemplateSnake): continue for direction, location in self.safe_positions.items(): - if location in self.get_snake_body_without_snake_tail(snake["body"]): - remove.append(direction) + if self.game_type == "constrictor": + if location in snake["body"]: + remove.append(direction) + else: + if location in self.get_snake_body_without_snake_tail(snake["body"]): + remove.append(direction) remove = set(remove) for direction in remove: @@ -97,7 +101,7 @@ class BetterMasterSnake(TemplateSnake): del self.safe_positions[direction] def find_safe_positions(self): - self.get_possible_moves(self.my_head) + self.safe_positions = self.get_possible_moves(self.my_head) self.avoid_my_body(self.my_body) self.avoid_walls(self.board_width, self.board_height) self.avoid_snakes(self.snakes) @@ -115,14 +119,17 @@ class BetterMasterSnake(TemplateSnake): self.my_head = self.my_snake['head'] self.my_body = self.my_snake["body"] self.food_positions = game_data['board']['food'] + self.game_type = game_data['game']["ruleset"]["name"] self.find_safe_positions() if self.eat_the_snake_overwrite: self.add_calculations({"function": "eat_the_snake_overwrite", "my_head": self.my_head, "move": move, "safe_positions": self.safe_positions}) return self.safe_positions - # Finde die nächstgelegene Nahrungsquelle, wenn Nahrung vorhanden ist - try: + if self.game_type == "constrictor": + move = self.ensure_escape_route(self.find_direction()) + self.add_calculations({"function": "find_direction", "my_head": self.my_head, "move": move, "safe_positions": self.safe_positions}) + else: # Finde den besten Weg zur Nahrung if self.is_food_nearby() or self.disabled_find_near_by_food: path_to_food = self.find_path_to_food() @@ -137,9 +144,6 @@ class BetterMasterSnake(TemplateSnake): # Überprfe, ob der Zug einen Ausweg lässt move = self.ensure_escape_route(move) self.add_calculations({"function": "ensure_escape_route", "my_head": self.my_head, "move": move, "safe_positions": self.safe_positions}) - except ValueError: - move = self.ensure_escape_route(self.find_direction()) - self.add_calculations({"function": "ValueError - find_direction", "my_head": self.my_head, "move": move, "safe_positions": self.safe_positions}) self.add_to_history(self.calculations) return move if move else "up"