hotfix
This commit is contained in:
parent
1a4f245087
commit
33577c1824
@ -58,7 +58,7 @@ def castle_neighbors(map, castle_bottom_right_row, castle_bottom_right_col):
|
|||||||
return neighbors
|
return neighbors
|
||||||
|
|
||||||
|
|
||||||
def find_neighbours(col: int, row: int) -> List[Tuple[int, int]]:
|
def find_neighbours(grid: List[List[str]], col: int, row: int) -> List[Tuple[int, int]]:
|
||||||
dr = [-1, 1, 0, 0]
|
dr = [-1, 1, 0, 0]
|
||||||
dc = [0, 0, -1, 1]
|
dc = [0, 0, -1, 1]
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ def find_neighbours(col: int, row: int) -> List[Tuple[int, int]]:
|
|||||||
|
|
||||||
if rr < 0 or cc < 0: continue
|
if rr < 0 or cc < 0: continue
|
||||||
if rr >= ROWS or cc >= COLUMNS: continue
|
if rr >= ROWS or cc >= COLUMNS: continue
|
||||||
|
if grid[rr][cc] not in ['g', 's', '.']: continue
|
||||||
neighbours.append((rr, cc))
|
neighbours.append((rr, cc))
|
||||||
|
|
||||||
return neighbours
|
return neighbours
|
||||||
|
@ -34,7 +34,7 @@ class DecisionTree:
|
|||||||
self.model = DecisionTreeClassifier(criterion='entropy')
|
self.model = DecisionTreeClassifier(criterion='entropy')
|
||||||
self.model.fit(self.train_set.values, self.goals)
|
self.model.fit(self.train_set.values, self.goals)
|
||||||
|
|
||||||
def predict_move(self, map: List[List[str]], current_knight: Knight, castle: Castle, monsters: List[Monster],
|
def predict_move(self, grid: List[List[str]], current_knight: Knight, castle: Castle, monsters: List[Monster],
|
||||||
opponents: List[Knight]) -> \
|
opponents: List[Knight]) -> \
|
||||||
List[Tuple[int, int]]:
|
List[Tuple[int, int]]:
|
||||||
distance_to_castle = manhattan_distance(current_knight.position, castle.position)
|
distance_to_castle = manhattan_distance(current_knight.position, castle.position)
|
||||||
@ -59,14 +59,14 @@ class DecisionTree:
|
|||||||
agent_hp=current_knight.current_hp)
|
agent_hp=current_knight.current_hp)
|
||||||
print(prediction)
|
print(prediction)
|
||||||
if prediction == 'tower': # castle...
|
if prediction == 'tower': # castle...
|
||||||
return castle_neighbors(map, castle_bottom_right_row=castle.position[0],
|
return castle_neighbors(grid, castle_bottom_right_row=castle.position[0],
|
||||||
castle_bottom_right_col=castle.position[1])
|
castle_bottom_right_col=castle.position[1])
|
||||||
elif prediction.startswith('opp'):
|
elif prediction.startswith('opp'):
|
||||||
idx = parse_idx_of_opp_or_monster(prediction)
|
idx = parse_idx_of_opp_or_monster(prediction)
|
||||||
return find_neighbours(opponents[idx].position[1], opponents[idx].position[0])
|
return find_neighbours(grid, opponents[idx].position[1], opponents[idx].position[0])
|
||||||
else:
|
else:
|
||||||
idx = parse_idx_of_opp_or_monster(prediction)
|
idx = parse_idx_of_opp_or_monster(prediction)
|
||||||
return find_neighbours(monsters[idx].position[1], monsters[idx].position[0])
|
return find_neighbours(grid, monsters[idx].position[1], monsters[idx].position[0])
|
||||||
|
|
||||||
def get_prediction(self, tower_dist: int, mob1_dist: int, mob2_dist: int, opp1_dist: int, opp2_dist: int,
|
def get_prediction(self, tower_dist: int, mob1_dist: int, mob2_dist: int, opp1_dist: int, opp2_dist: int,
|
||||||
opp3_dist: int, opp4_dist: int, agent_hp: int, tower_hp: int, mob1_hp: int, mob2_hp: int,
|
opp3_dist: int, opp4_dist: int, agent_hp: int, tower_hp: int, mob1_hp: int, mob2_hp: int,
|
||||||
|
@ -113,12 +113,15 @@ class Level:
|
|||||||
knight_pos_x = current_knight.position[0]
|
knight_pos_x = current_knight.position[0]
|
||||||
knight_pos_y = current_knight.position[1]
|
knight_pos_y = current_knight.position[1]
|
||||||
|
|
||||||
goal_list = self.decision_tree.predict_move(map=self.map, current_knight=current_knight,
|
goal_list = self.decision_tree.predict_move(grid=self.map, current_knight=current_knight,
|
||||||
monsters=self.list_monsters,
|
monsters=self.list_monsters,
|
||||||
opponents=self.list_knights_red
|
opponents=self.list_knights_red
|
||||||
if current_knight.team_alias == 'k_r' else self.list_knights_blue,
|
if current_knight.team_alias == 'k_r' else self.list_knights_blue,
|
||||||
castle=self.list_castles[0])
|
castle=self.list_castles[0])
|
||||||
|
|
||||||
|
if len(goal_list) == 0:
|
||||||
|
return
|
||||||
|
|
||||||
state = State((knight_pos_y, knight_pos_x), current_knight.direction.name)
|
state = State((knight_pos_y, knight_pos_x), current_knight.direction.name)
|
||||||
action_list = a_star(state, self.map, goal_list)
|
action_list = a_star(state, self.map, goal_list)
|
||||||
print(action_list)
|
print(action_list)
|
||||||
|
Loading…
Reference in New Issue
Block a user