fix calculations and not run in snake tail when in constrictor game mode

This commit is contained in:
2024-04-15 22:20:15 +02:00
parent 16cab3a9ca
commit 863ca1b277
+11 -7
View File
@@ -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,6 +71,10 @@ class BetterMasterSnake(TemplateSnake):
continue
for direction, location in self.safe_positions.items():
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)
@@ -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"