def json_to_species(cls, json_species): """ Converts a JSON Species+ into a Species. :param json_species: a JSON Species+ as specified by the data definition at http://www.ccs.neu.edu/home/matthias/4500-s16/6.html :return: a Species object """ gdict = globals() if len(json_species) == SPECIES_LENGTH: [[gdict[FOOD], species_food], [gdict[BODY], species_body], [gdict[POPULATION], species_pop], [gdict[TRAITS], json_species_traits]] = json_species fat_food = False else: [[gdict[FOOD], species_food], [gdict[BODY], species_body], [gdict[POPULATION], species_pop], [gdict[TRAITS], json_species_traits], [gdict[FATFOOD], fat_food]] = json_species species_traits = [ cls.json_to_trait(trait) for trait in json_species_traits ] species_obj = Species(species_pop, species_food, species_body, species_traits, fat_food) species_obj.validate_attributes() return species_obj
def json_to_species(cls, json_species): if len(json_species) == SPECIES_LENGTH: [[globals()[FOOD], species_food], [globals()[BODY], species_body], [globals()[POPULATION], species_pop], [globals()[TRAITS], json_species_traits]] = json_species fat_food = None elif len(json_species) == SPECIES_FAT_LENGTH: [[globals()[FOOD], species_food], [globals()[BODY], species_body], [globals()[POPULATION], species_pop], [globals()[TRAITS], json_species_traits], [globals()[FATFOOD], fat_food]] = json_species assert (species_body >= fat_food >= MIN_FATFOOD) else: raise AssertionError assert (all([ MAX_FOOD >= species_food >= MIN_FOOD, MAX_BODY >= species_body >= MIN_BODY, MAX_POP >= species_pop >= MIN_POP, MAX_TRAITS >= len(json_species_traits) ])) species_traits = [ cls.json_to_trait(trait) for trait in json_species_traits ] species_obj = Species(species_pop, species_food, species_body, species_traits, fat_food) return species_obj
def setUp(self): self.jt_1 = CARNIVORE self.jt_2 = FATTISSUE self.jt_3 = BURROWING self.jt_4 = CLIMBING self.jSpecies_1 = [[FOOD, 2], [BODY, 2], [POPULATION, 2], [TRAITS, [self.jt_1]]] self.jSpecies_2 = [[FOOD, 2], [BODY, 3], [POPULATION, 3], [TRAITS, [self.jt_2]], [FATFOOD, 0]] self.jSpecies_3 = [[FOOD, 2], [BODY, 3], [POPULATION, 4], [TRAITS, [self.jt_3, self.jt_4]]] self.jSpecies_4 = [[FOOD, 2], [BODY, 2], [POPULATION, 2], [TRAITS, [self.jt_3, self.jt_4]]] self.jPlayer_1 = [[ID, 1], [SPECIES, [self.jSpecies_1]], [BAG, 2]] self.jPlayer_2 = [[ID, 2], [SPECIES, [self.jSpecies_2]], [BAG, 1]] self.jPlayer_3 = [[ID, 3], [SPECIES, [self.jSpecies_3, self.jSpecies_4]], [BAG, 3]] self.jPlayer_4 = [[ID, 2], [SPECIES, []], [BAG, 1]] self.json_feeding = [ self.jPlayer_1, 10, [self.jPlayer_2, self.jPlayer_3] ] self.json_feed_1 = False self.json_feed_2 = self.jSpecies_3 self.json_feed_3 = [self.jSpecies_2, 3] self.json_feed_4 = [self.jSpecies_1, self.jPlayer_2, self.jSpecies_2] self.t_1 = TraitCard(CARNIVORE) self.t_2 = TraitCard(FATTISSUE) self.t_3 = TraitCard(BURROWING) self.t_4 = TraitCard(CLIMBING) self.species_1 = Species(2, 2, 2, [self.t_1]) self.species_2 = Species(3, 2, 3, [self.t_2], 0) self.species_3 = Species(4, 2, 3, [self.t_3, self.t_4]) self.species_4 = Species(2, 2, 2, [self.t_3, self.t_4]) self.player_1 = PlayerState(name=1, food_bag=2, species=[self.species_1]) self.player_2 = PlayerState(name=2, food_bag=1, species=[self.species_2]) self.player_3 = PlayerState(name=3, food_bag=3, species=[self.species_3, self.species_4]) self.player_4 = PlayerState(name=2, food_bag=1, species=[]) self.feeding = [self.player_1, 10, [self.player_2, self.player_3]] self.feed_1 = False self.feed_2 = self.species_3 self.feed_3 = [self.species_2, 3] self.feed_4 = [self.species_1, self.player_2, self.species_2] self.jSpecies_card1 = [2, WARNINGCALL] self.jSpecies_card2 = [5, CARNIVORE] self.jSpecies_card3 = [-3, BURROWING] self.jSpecies_card4 = [3, AMBUSH] self.jSpecies_card5 = [0, SCAVENGER] self.species_card1 = TraitCard(WARNINGCALL, 2) self.species_card2 = TraitCard(CARNIVORE, 5) self.species_card3 = TraitCard(BURROWING, -3) self.species_card4 = TraitCard(AMBUSH, 3) self.species_card5 = TraitCard(SCAVENGER, 0) self.jList_of_players = [ self.jPlayer_1, self.jPlayer_4, self.jPlayer_3 ] self.jDeck = [ self.jSpecies_card1, self.jSpecies_card2, self.jSpecies_card3, self.jSpecies_card4, self.jSpecies_card5 ] self.jDealer = [self.jList_of_players, 12, self.jDeck] self.list_of_players = [self.player_1, self.player_4, self.player_3] self.deck = [ self.species_card1, self.species_card2, self.species_card3, self.species_card4, self.species_card5 ] self.dealer1 = Dealer(self.list_of_players, 12, self.deck)