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
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
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
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
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)
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
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)))