forked from s464965/WMICraft
bug fix
This commit is contained in:
parent
59a8c49b2d
commit
3f68f4c8a6
@ -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, grid: List[List[str]], current_knight: Knight, castle: Castle, monsters: List[Monster],
|
def predict_move(self, grid: List[List[int]], 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)
|
||||||
@ -42,14 +42,15 @@ class DecisionTree:
|
|||||||
monsters_parsed = []
|
monsters_parsed = []
|
||||||
for monster in monsters:
|
for monster in monsters:
|
||||||
monsters_parsed.append((manhattan_distance(current_knight.position, monster.position), parse_hp(
|
monsters_parsed.append((manhattan_distance(current_knight.position, monster.position), parse_hp(
|
||||||
monster.current_hp)))
|
monster.health_bar.current_hp)))
|
||||||
|
|
||||||
opponents_parsed = []
|
opponents_parsed = []
|
||||||
for opponent in opponents:
|
for opponent in opponents:
|
||||||
opponents_parsed.append(
|
opponents_parsed.append(
|
||||||
(manhattan_distance(current_knight.position, opponent.position), parse_hp(opponent.health_bar.current_hp)))
|
(manhattan_distance(current_knight.position, opponent.position),
|
||||||
|
parse_hp(opponent.health_bar.current_hp)))
|
||||||
|
|
||||||
prediction = self.get_prediction(tower_dist=distance_to_castle, tower_hp=castle.current_hp,
|
prediction = self.get_prediction(tower_dist=distance_to_castle, tower_hp=castle.health_bar.current_hp,
|
||||||
mob1_dist=monsters_parsed[0][0], mob1_hp=monsters_parsed[0][1],
|
mob1_dist=monsters_parsed[0][0], mob1_hp=monsters_parsed[0][1],
|
||||||
mob2_dist=monsters_parsed[1][0], mob2_hp=monsters_parsed[1][1],
|
mob2_dist=monsters_parsed[1][0], mob2_hp=monsters_parsed[1][1],
|
||||||
opp1_dist=opponents_parsed[0][0], opp1_hp=opponents_parsed[0][1],
|
opp1_dist=opponents_parsed[0][0], opp1_hp=opponents_parsed[0][1],
|
||||||
@ -57,7 +58,7 @@ class DecisionTree:
|
|||||||
opp3_dist=opponents_parsed[2][0], opp3_hp=opponents_parsed[2][1],
|
opp3_dist=opponents_parsed[2][0], opp3_hp=opponents_parsed[2][1],
|
||||||
opp4_dist=opponents_parsed[3][0], opp4_hp=opponents_parsed[3][1],
|
opp4_dist=opponents_parsed[3][0], opp4_hp=opponents_parsed[3][1],
|
||||||
agent_hp=current_knight.health_bar.current_hp)
|
agent_hp=current_knight.health_bar.current_hp)
|
||||||
print(prediction)
|
print(f'Prediction = {prediction}')
|
||||||
if prediction == 'tower': # castle...
|
if prediction == 'tower': # castle...
|
||||||
return castle_neighbors(grid, 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])
|
||||||
|
@ -100,8 +100,8 @@ class Level:
|
|||||||
|
|
||||||
goal_list = self.decision_tree.predict_move(grid=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_blue
|
||||||
if current_knight.team_alias() == 'k_r' else self.list_knights_blue,
|
if current_knight.team_alias() == 'k_r' else self.list_knights_red,
|
||||||
castle=self.list_castles[0])
|
castle=self.list_castles[0])
|
||||||
|
|
||||||
if len(goal_list) == 0:
|
if len(goal_list) == 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user