class TestSettlement(unittest.TestCase): def setUp(self): self.dg=DummyGame() self.p1=HumanPlayer(self.dg) self.settlement = Settlement(population=1500, owner=self.p1, map=DummyMap()) def test_population(self): self.assertEqual(1500, self.settlement.population, "Population initialized incorrectly") self.settlement.build("farm") self.assertEqual(1600, self.settlement.population, "Building a farm doesn't increase population") def test_recruitment(self): self.assertFalse(self.settlement.do_recruit(DummyUnit, self.p1, DummyTile(), 10000), "It's possible to recruit a unit too expensive") self.assertTrue(self.settlement.do_recruit(DummyUnit, self.p1, DummyTile(), 500), "Recruitment doesn't work") self.assertEqual(500, self.p1.treasury, "Recruitment doesn't affect owner's treasury") def tearDown(self): pass
def game(): hero = make_a_hero() hero.get_equipment(sword) hero.get_equipment(ruby_stone) hero.get_equipment(sapphire_stone) hero.get_gold(300) norman = Characters.Warrior("Norman", 10, 10) print("There is Norman the warrior on your way") fight_decision = input("Do you fight? (Yes/No) ") town = Settlement.Settlement("Champignon Settlement") if fight_decision == "Yes": town.fight(hero, norman) town.main_square(hero) pass
def build_item(self, object_to_build_on): """ The Game_Engine uses this method in order to instantiate the object that the build() method has determined as the valid object to instantiate after previous checks, check_location() and player_inventory() methods, have returned a True boolean value. Args: object_to_build_on (object): An object argument that is passed to this method to determine which object that the build() method, that invoked this method, is attempting to instantiate. Returns: None """ if object_to_build_on is None: self.game_state.current_player.inventory.add_dev_card(Development_Card.Development_Card()) return True elif type(object_to_build_on) is Vertex.Vertex and object_to_build_on.settlement is None: if object_to_build_on.city is None: self.game_state.add_invalid_vertices_to_build(object_to_build_on) object_to_build_on.settlement = Settlement.Settlement(object_to_build_on) object_to_build_on.settlement.owner = self.game_state.current_player self.game_state.current_player.inventory.add_settlement(object_to_build_on.settlement) return True else: return False elif type(object_to_build_on) is Vertex.Vertex and object_to_build_on.settlement.owner ==\ self.game_state.current_player: object_to_build_on.settlement = None object_to_build_on.city = City.City(object_to_build_on) object_to_build_on.city.owner = self.game_state.current_player self.game_state.current_player.inventory.add_city(object_to_build_on.city) # TODO: uniformize this output return 'city' elif type(object_to_build_on) is Edge.Edge and self.game_state.not_on_opp_sett(object_to_build_on): object_to_build_on.road = Road.Road(object_to_build_on) object_to_build_on.road.owner = self.game_state.current_player self.game_state.current_player.inventory.add_road(object_to_build_on.road) return True
def setUp(self): self.dg=DummyGame() self.p1=HumanPlayer(self.dg) self.settlement = Settlement(population=1500, owner=self.p1, map=DummyMap())
Test to make sure everything builds. ''' # test board structures edge = Edge.Edge() vertex = Vertex.Vertex() tile = Tile.Tile() print('board structures built') # test Board board = Board.Board() print('board builds') # test Structures road = Road.Road(edge) settlement = Settlement.Settlement(vertex) city = City.City(vertex) print('structures build') # test players player1 = Player.Player(None, 'red', 'red') player2 = Player.Player(None, 'blue', 'blue') player1.inventory.brick += 10000 player1.inventory.grain += 10000 player1.inventory.lumber += 10000 player1.inventory.ore += 10000 player1.inventory.wool += 10000 players = [player1, player2] print('players build') # test game state