def setUp(self): self.carnivore = TraitCard(CARNIVORE, 3) self.burrowing = TraitCard(BURROWING, 2) self.fattissue = TraitCard(FATTISSUE, 4) self.foraging = TraitCard(FORAGING, 2) self.horns = TraitCard(HORNS, 6) self.cooperation = TraitCard(COOPERATION, 1) self.scavenger = TraitCard(SCAVENGER, 2) self.species_1 = Species(4, 4, 4, []) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 1, 3) self.species_6 = Species(4, 3, 3) self.species_7 = Species(4, 4, 4) self.species_list = [ self.species_2, self.species_4, self.species_3, self.species_5, self.species_1 ] self.player_1 = PlayerState( species=[self.species_4, self.species_5, self.species_6], hand=[self.carnivore]) self.player_2 = PlayerState(species=[self.species_1], hand=[self.carnivore, self.fattissue]) self.player_3 = PlayerState( species=[self.species_2, self.species_3, self.species_7], hand=[self.foraging])
def setUp(self): self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 1, 3) self.species_6 = Species(4, 3, 3) self.species_7 = Species(4, 4, 4) self.species_list = [ self.species_2, self.species_4, self.species_3, self.species_5, self.species_1 ] self.player_1 = PlayerState( species=[self.species_4, self.species_5, self.species_6]) self.player_2 = PlayerState(species=[self.species_1]) self.player_3 = PlayerState( species=[self.species_2, self.species_3, self.species_7])
def previous_playlist(self, state): next_genre_index = self._next_genre_index(state, advance=-1) next_genre = self._genre_list[next_genre_index] self._prep_song_list(next_genre, reset=True) print('Genre: {}'.format(next_genre)) return PlayerState(next_genre, self._genre_song_list[len(self._genre_song_list) - 1], state.exclude_from_genre)
def make_playerstates(cls, loxp): """ Creates a PlayerState for each of the given external Players :return: List of PlayerState objects representing internal players """ lop = [] for x in range(len(loxp)): lop.append(PlayerState(name=x + 1, ext_player=loxp[x])) return lop
def setUp(self): self.attacker = Species() self.attacker.traits = [TraitCard(CARNIVORE)] self.defender = Species() self.left_neighbor = Species() self.right_neighbor = Species() self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [ self.species_2, self.species_4, self.species_3, self.species_5, self.species_1 ] self.player_1 = PlayerState(1) self.player_2 = PlayerState(2)
def random_song_anywhere(self, state): genre = random.choice(self._genre_list) self._prep_song_list(genre, reset=True) song = random.choice(self._genre_song_list) print('Genre: {}'.format(genre)) # state *can* be None, for first-time operation. exclude_from_genre = False if state is None else state.exclude_from_genre return PlayerState(genre, song, exclude_from_genre)
def setUp(self): self.trait1 = TraitCard(CARNIVORE, 2) self.trait2 = TraitCard(SCAVENGER, 3) self.trait3 = TraitCard(FATTISSUE, 2) self.trait4 = TraitCard(FORAGING, 3) self.species_1 = Species(4, 4, 4, [self.trait3], 3) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 1, 3) self.species_6 = Species(4, 3, 3) self.species_7 = Species(4, 4, 4) self.player_1 = PlayerState( 1, 2, [self.trait1, self.trait2], [self.species_4, self.species_5, self.species_6]) self.player_2 = PlayerState(2, 10, [], [self.species_1]) self.player_3 = PlayerState( 3, 4, [self.trait4], [self.species_2, self.species_3, self.species_7]) self.dealer_1 = Dealer([self.player_1, self.player_2, self.player_3], 10, [self.trait1, self.trait2])
def setUp(self): # Traits (Trait, Food-value) self.carnivore = TraitCard(CARNIVORE, 3) self.burrowing = TraitCard(BURROWING, 2) self.fattissue = TraitCard(FATTISSUE, 4) self.foraging = TraitCard(FORAGING, 2) self.horns = TraitCard(HORNS, 6) self.cooperation = TraitCard(COOPERATION, 1) self.scavenger = TraitCard(SCAVENGER, 2) # Species (Population, Food, Body, Traits, Fat-Storage) self.species1 = Species(1, 0, 2, [self.cooperation]) self.species2 = Species(6, 2, 1, [self.carnivore]) self.species3 = Species(3, 3, 3, [self.fattissue], 0) self.species4 = Species(5, 5, 5, [self.burrowing]) self.species5 = Species(5, 3, 4, [self.foraging]) self.species6 = Species( 2, 1, 7, [self.carnivore, self.fattissue, self.scavenger], 0) self.species7 = Species(7, 1, 6, [self.horns]) self.player1_species = [self.species1, self.species2] self.player2_species = [self.species3, self.species4, self.species5] self.player3_species = [self.species6, self.species7] # Players (Name, Bag, Hand, Species) self.player1 = PlayerState(1, 0, [self.fattissue], self.player1_species) self.player2 = PlayerState(2, 3, [self.fattissue, self.carnivore], self.player2_species) self.player3 = PlayerState(3, 6, [self.burrowing], self.player3_species) self.public_player1 = PlayerState(1, False, False, self.player1_species) self.public_player2 = PlayerState(2, False, False, self.player2_species) self.public_player3 = PlayerState(3, False, False, self.player3_species) self.list_of_players = [self.player1, self.player2, self.player3] # Dealer (List of Players, Watering Hole, Deck) self.dealer1 = Dealer(self.list_of_players, 10, []) # Actions self.food_card_action1 = FoodCardAction(0) self.food_card_action2 = FoodCardAction(1) self.grow_action_pop = GrowAction(POPULATION, 0, 0) self.grow_action_body = GrowAction(BODY, 1, 1) self.add_species_action1 = AddSpeciesAction(0, [1]) self.add_species_action2 = AddSpeciesAction(0, []) self.replace_trait_action1 = ReplaceTraitAction(0, 0, 0) self.replace_trait_action2 = ReplaceTraitAction(2, 0, 1) self.replace_trait_action3 = ReplaceTraitAction(0, 2, 0) # Action4 self.action4_1 = Action4(self.player1, [self.food_card_action1]) self.action4_2 = Action4( self.player2, [self.food_card_action2, self.grow_action_pop])
def public_players(self, feeding_player): """ Creates a copy of this Dealer's list of players, excluding the specified feeding player, so that the feeding player may choose which player to attack without having access to their private fields. :param feeding_player: The PlayerState of the player feeding :return: a list of public representations of PlayerStates """ return [ PlayerState(name=player.name, food_bag=False, hand=False, species=player.species) for player in self.list_of_players if player != feeding_player ]
def setUp(self): # Traits (Trait, Food-value) self.carnivore = TraitCard(CARNIVORE, 3) self.burrowing = TraitCard(BURROWING, 2) self.fattissue = TraitCard(FATTISSUE, 2) self.foraging = TraitCard(FORAGING, 2) self.horns = TraitCard(HORNS, 0) self.cooperation = TraitCard(COOPERATION, 1) self.scavenger = TraitCard(SCAVENGER, 2) # Species (Population, Food, Body, Traits, Fat-Storage) self.species1 = Species(1, 0, 2, [self.cooperation]) self.species2 = Species(6, 2, 1, [self.carnivore]) self.species3 = Species(3, 3, 3, [self.fattissue], 0) self.species4 = Species(5, 5, 5, [self.burrowing]) self.species5 = Species(5, 3, 4, [self.foraging]) self.species6 = Species( 2, 1, 7, [self.carnivore, self.fattissue, self.scavenger], 0) self.species7 = Species(7, 1, 6, [self.horns]) self.player1_species = [self.species1, self.species2] self.player2_species = [self.species3, self.species4, self.species5] self.player3_species = [self.species6, self.species7] # Players (Name, Bag, Hand, Species) self.player1 = PlayerState(1, 0, [self.horns, self.foraging], self.player1_species, ext_player=Player()) self.player2 = PlayerState(2, 3, [self.carnivore, self.fattissue], self.player2_species, ext_player=Player()) self.player3 = PlayerState(3, 6, [self.burrowing], self.player3_species, ext_player=Player()) self.public_player1 = PlayerState(1, False, False, self.player1_species) self.public_player2 = PlayerState(2, False, False, self.player2_species) self.public_player3 = PlayerState(3, False, False, self.player3_species) self.list_of_players = [self.player1, self.player2, self.player3] # Dealer (List of Players, Watering Hole, Deck) self.dealer1 = Dealer(self.list_of_players, 10, []) # Action self.action4_1 = Action4(FoodCardAction(1), [GrowAction(POPULATION, 0, 0)], [], [], []) self.action4_2 = Action4(FoodCardAction(0), [], [], [], [ReplaceTraitAction(1, 0, 1)]) self.action4_3 = Action4(FoodCardAction(0), [], [], [], []) self.action4_list = [self.action4_1, self.action4_2, self.action4_3]
def get_public_players(self, player_id=0): """ Produce a copy of the list of players. Each copies player in the list (except for the choosing player) will have no food_bag and no hand so that when given for a feeding the player feeding won't have that information :param player_id: Id of player to maintain private fields :return: List of PlayerStates """ result = [] for player in self.list_of_players: if player_id == player.name: result.append(player) else: result.append(PlayerState(name=player.name, food_bag=None, species=player.species)) return result
def setUp(self): self.carnivore_trait = TraitCard(CARNIVORE, 3) self.burrowing_trait = TraitCard(BURROWING, 2) self.fattissue_trait = TraitCard(FATTISSUE, 4) self.foraging_trait = TraitCard(FORAGING, 2) self.horns_trait = TraitCard(HORNS, 6) self.cooperation_trait = TraitCard(COOPERATION, 1) self.scavenger_trait = TraitCard(SCAVENGER, 2) self.species1 = Species(1, 0, 2, [self.cooperation_trait]) self.species2 = Species(6, 2, 1, [self.carnivore_trait]) self.species3 = Species(3, 3, 3, [self.fattissue_trait], 0) self.species4 = Species(5, 5, 5, [self.burrowing_trait]) self.species5 = Species(5, 3, 4, [self.foraging_trait]) self.species6 = Species( 2, 1, 7, [self.carnivore_trait, self.fattissue_trait, self.scavenger_trait], 0) self.species7 = Species(7, 1, 6, [self.horns_trait]) self.player1_species = [self.species1, self.species2] self.player2_species = [self.species3, self.species4, self.species5] self.player3_species = [self.species6, self.species7] self.player1 = PlayerState(1, 0, [], self.player1_species) self.player2 = PlayerState( 2, 3, [self.carnivore_trait, self.fattissue_trait], self.player2_species) self.player3 = PlayerState(3, 6, [self.burrowing_trait], self.player3_species) self.public_player1 = PlayerState(1, None, None, self.player1_species) self.public_player2 = PlayerState(2, None, None, self.player2_species) self.public_player3 = PlayerState(3, None, None, self.player3_species) self.list_of_players = [self.player1, self.player2, self.player3] self.dealer1 = Dealer(self.list_of_players, 10, [])
def get_player_state_pid(pid: int) -> PlayerState: query_res = sql(f'SELECT * FROM player_states WHERE player_id = ?', True, (pid,))[0] return PlayerState(query_res[0], query_res[1], query_res[2], query_res[3], query_res[4], query_res[5], query_res[6], query_res[7])
def get_player_state_gid(gid: int) -> list: query_res = sql(f'SELECT * FROM player_states WHERE game_id = ?', True, (gid,)) result: list = [] for line in query_res: result.append(PlayerState(line[0], line[1], line[2], line[3], line[4], line[5], line[6], line[7])) return result
def add_player(self, address, location): self.next_player_id += 1 new_player = PlayerState(location, self.next_player_id) client = ClientState(address, new_player) self.players[new_player.id] = client return new_player
from player_state import PlayerState from utils import p import re import tornado.ioloop card_update_pattern = re.compile( '^.*id=(?P<id>\d*) .*cardId=(?P<card_id>[a-zA-Z0-9\_]*).*player=(?P<player>\d*)\](?: CardID=(?P<alternate_card_id>[a-zA-Z0-9\_]*))?.*$' ) game_complete_pattern = re.compile( '^.*TAG_CHANGE Entity=GameEntity tag=STATE value=COMPLETE.*$') player_state = PlayerState() def parse_log_lines(line): if game_complete_pattern.match(line): player_state.clear_players() match = card_update_pattern.match(line) if not match: return id = match.group('id') cardId = match.group('card_id') alternate_card_id = match.group('alternate_card_id') player = match.group('player') if player_state.card_drawn(id, cardId or alternate_card_id, player): p("Updated player state")
def random_song_in_playlist(self, state): random_song = random.choice(self._genre_song_list) while self._is_excluded_song(state, random_song): random_song = random.choice(self._genre_song_list) return PlayerState(state.genre, random_song, state.exclude_from_genre)
def previous_song(self, state): self._prep_song_list(state.genre) next_song_index = self._next_song_index(state, advance=-1) return PlayerState(state.genre, self._genre_song_list[next_song_index], state.exclude_from_genre)