fix calculations and not run in snake tail when in constrictor game mode
This commit is contained in:
@@ -10,7 +10,7 @@ class BetterMasterSnake(TemplateSnake):
|
|||||||
self.min_safe_area = 2
|
self.min_safe_area = 2
|
||||||
|
|
||||||
def get_possible_moves(self, my_head):
|
def get_possible_moves(self, my_head):
|
||||||
self.safe_positions = {
|
return {
|
||||||
"up": {
|
"up": {
|
||||||
"x": my_head["x"],
|
"x": my_head["x"],
|
||||||
"y": my_head["y"] + 1
|
"y": my_head["y"] + 1
|
||||||
@@ -71,8 +71,12 @@ class BetterMasterSnake(TemplateSnake):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
for direction, location in self.safe_positions.items():
|
for direction, location in self.safe_positions.items():
|
||||||
if location in self.get_snake_body_without_snake_tail(snake["body"]):
|
if self.game_type == "constrictor":
|
||||||
remove.append(direction)
|
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)
|
remove = set(remove)
|
||||||
for direction in remove:
|
for direction in remove:
|
||||||
@@ -97,7 +101,7 @@ class BetterMasterSnake(TemplateSnake):
|
|||||||
del self.safe_positions[direction]
|
del self.safe_positions[direction]
|
||||||
|
|
||||||
def find_safe_positions(self):
|
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_my_body(self.my_body)
|
||||||
self.avoid_walls(self.board_width, self.board_height)
|
self.avoid_walls(self.board_width, self.board_height)
|
||||||
self.avoid_snakes(self.snakes)
|
self.avoid_snakes(self.snakes)
|
||||||
@@ -115,14 +119,17 @@ class BetterMasterSnake(TemplateSnake):
|
|||||||
self.my_head = self.my_snake['head']
|
self.my_head = self.my_snake['head']
|
||||||
self.my_body = self.my_snake["body"]
|
self.my_body = self.my_snake["body"]
|
||||||
self.food_positions = game_data['board']['food']
|
self.food_positions = game_data['board']['food']
|
||||||
|
self.game_type = game_data['game']["ruleset"]["name"]
|
||||||
|
|
||||||
self.find_safe_positions()
|
self.find_safe_positions()
|
||||||
if self.eat_the_snake_overwrite:
|
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})
|
self.add_calculations({"function": "eat_the_snake_overwrite", "my_head": self.my_head, "move": move, "safe_positions": self.safe_positions})
|
||||||
return self.safe_positions
|
return self.safe_positions
|
||||||
|
|
||||||
# Finde die nächstgelegene Nahrungsquelle, wenn Nahrung vorhanden ist
|
if self.game_type == "constrictor":
|
||||||
try:
|
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
|
# Finde den besten Weg zur Nahrung
|
||||||
if self.is_food_nearby() or self.disabled_find_near_by_food:
|
if self.is_food_nearby() or self.disabled_find_near_by_food:
|
||||||
path_to_food = self.find_path_to_food()
|
path_to_food = self.find_path_to_food()
|
||||||
@@ -137,9 +144,6 @@ class BetterMasterSnake(TemplateSnake):
|
|||||||
# Überprfe, ob der Zug einen Ausweg lässt
|
# Überprfe, ob der Zug einen Ausweg lässt
|
||||||
move = self.ensure_escape_route(move)
|
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})
|
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)
|
self.add_to_history(self.calculations)
|
||||||
return move if move else "up"
|
return move if move else "up"
|
||||||
|
|||||||
Reference in New Issue
Block a user