Beispiel #1
0
 def load(self, data):
     load_data = []
     if data[0] == 'pvp':
         load_data.append(False)
         load_data.append(0)
     else:
         load_data.append(True)
         load_data.append(int(data[0][-1]))
     load_data.append(int(data[1]))
     load_data.append(data[2] == self.WHITE)
     white_checkers = []
     i = 3
     while len(data[i]) > 0:
         coordinates = data[i].split(' ')
         white_checkers.append(Checker(Point(int(coordinates[0]), int(coordinates[1])), True))
         i += 1
     i += 1
     load_data.append(white_checkers)
     black_checkers = []
     while i < len(data) and len(data[i]) > 0:
         coordinates = data[i].split(' ')
         black_checkers.append(Checker(Point(int(coordinates[0]), int(coordinates[1])), False))
         i += 1
     load_data.append(black_checkers)
     return load_data
Beispiel #2
0
 def get_starting_checkers(self):
     middle = self.__size // 2
     checkers_dict = {}
     checkers = [Checker(Point(middle - 1, middle - 1), True),
                 Checker(Point(middle, middle - 1), False),
                 Checker(Point(middle - 1, middle), False),
                 Checker(Point(middle, middle), True)]
     for checker in checkers:
         checkers_dict[checker.coordinates.to_tuple()] = checker
         self.__occupied_coordinates.append(checker.coordinates)
         if checker.is_white:
             self.__colored_checkers[self.WHITE].append(checker)
         else:
             self.__colored_checkers[self.BLACK].append(checker)
     return checkers_dict
Beispiel #3
0
 def check_turn(self, turn, color=None):
     if color is None:
         color = self.is_white_turn
     for direction in Point.get_directions():
         if self.enemy_in_direction(Checker(turn, color), direction):
             return True
     return False
Beispiel #4
0
 def easy_bot_turn(self):
     for cell in self.__game_map:
         if cell.coordinates not in self.__occupied_coordinates:
             enemies = self.get_enemies_around(Checker(cell.coordinates, self.BOT_IS_WHITE))
             if len(enemies) > 0:
                 self.add_checker(cell.coordinates, self.BOT_IS_WHITE)
                 self.pass_turn()
                 return cell.coordinates
     self.pass_turn()
     return None
Beispiel #5
0
 def add_checker(self, coordinates, is_white):
     color = self.WHITE if is_white else self.BLACK
     checker = Checker(coordinates, is_white)
     self.__score[color] += 1
     self.__occupied_coordinates.append(coordinates)
     self.__checkers[coordinates.to_tuple()] = checker
     if is_white:
         self.__colored_checkers[self.WHITE].append(checker)
     else:
         self.__colored_checkers[self.BLACK].append(checker)
     self.change_enemies_color(checker)
Beispiel #6
0
 def normal_bot_turn(self):
     max_enemies = []
     best_position = Point(0, 0)
     for cell in self.__game_map:
         if cell.coordinates not in self.__occupied_coordinates:
             enemies = self.get_enemies_around(Checker(cell.coordinates, self.BOT_IS_WHITE))
             if len(enemies) >= len(max_enemies):
                 max_enemies = enemies
                 best_position = cell.coordinates
     self.pass_turn()
     if len(max_enemies) == 0:
         return None
     self.add_checker(best_position, self.BOT_IS_WHITE)
     return best_position
Beispiel #7
0
 def get_turn_score(self, turn):
     color = self.WHITE if self.is_white_turn else self.BLACK
     return self.score[color] + len(self.get_enemies_around(Checker(turn, self.is_white_turn)))