예제 #1
0
 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])
예제 #2
0
 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])
예제 #3
0
    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)
예제 #4
0
 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)
예제 #6
0
    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)
예제 #7
0
 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])
예제 #8
0
    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])
예제 #9
0
 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]
예제 #11
0
 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
예제 #12
0
    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, [])
예제 #13
0
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])
예제 #14
0
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
예제 #15
0
 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
예제 #16
0
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")
예제 #17
0
    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)
예제 #18
0
 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)