def test_vps_to_win_config(): players = [ RandomPlayer(Color.RED), RandomPlayer(Color.BLUE), ] game = Game(players, vps_to_win=4) game.play() winning_color = game.winning_color() vps = get_actual_victory_points(game.state, winning_color) assert vps >= 4 and vps < 6
def play_batch_core(num_games, players, game_config, accumulators=[]): for accumulator in accumulators: if isinstance(accumulator, SimulationAccumulator): accumulator.before_all() for _ in range(num_games): for player in players: player.reset_state() catan_map = (CatanMap(MINI_MAP_TEMPLATE) if game_config.catan_map == "MINI" else CatanMap(BASE_MAP_TEMPLATE)) game = Game( players, discard_limit=game_config.discard_limit, vps_to_win=game_config.vps_to_win, catan_map=catan_map, ) game.play(accumulators) yield game for accumulator in accumulators: if isinstance(accumulator, SimulationAccumulator): accumulator.after_all()
def test_play_many_games(): for _ in range(10): # play 10 games players = [ RandomPlayer(Color.RED), RandomPlayer(Color.BLUE), RandomPlayer(Color.WHITE), RandomPlayer(Color.ORANGE), ] game = Game(players) game.play() # Assert everything looks good for color in game.state.colors: cities = len( get_player_buildings(game.state, color, BuildingType.CITY)) settlements = len( get_player_buildings(game.state, color, BuildingType.SETTLEMENT)) longest = get_longest_road_color(game.state) == color largest = get_largest_army(game.state)[0] == color devvps = get_dev_cards_in_hand(game.state, color, VICTORY_POINT) assert (settlements + 2 * cities + 2 * longest + 2 * largest + devvps) == get_actual_victory_points(game.state, color)
for obj in objects: if not isinstance(obj, BLACKLIST) and id(obj) not in seen_ids: seen_ids.add(id(obj)) size += sys.getsizeof(obj) need_referents.append(obj) objects = get_referents(*need_referents) return size game = Game([ RandomPlayer(Color.RED), RandomPlayer(Color.BLUE), RandomPlayer(Color.WHITE), RandomPlayer(Color.ORANGE), ]) game.play() print(sys.getsizeof(game)) print(getsize(game)) print(game) start = time.time() copy.deepcopy(game) end = time.time() print("copy.deepcopy(game) took", end - start, "seconds") start = time.time() game.copy() end = time.time() print("game.copy() took", end - start, "seconds") start = time.time()