def test_reveal_creatures(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) legion = Legion.Legion( player, "Rd01", Creature.n2c(["Unknown", "Unknown", "Unknown", "Unknown"]), 1) legion.reveal_creatures(["Ogre"]) assert legion.creature_names == ["Ogre", "Unknown", "Unknown", "Unknown"] legion.reveal_creatures(["Ogre", "Ogre"]) assert legion.creature_names == ["Ogre", "Ogre", "Unknown", "Unknown"] legion.reveal_creatures(["Ogre", "Ogre", "Troll"]) assert legion.creature_names == ["Ogre", "Ogre", "Troll", "Unknown"] legion.reveal_creatures(["Troll"]) assert legion.creature_names == ["Ogre", "Ogre", "Troll", "Unknown"] legion.reveal_creatures(["Troll", "Troll"]) assert legion.creature_names == ["Ogre", "Ogre", "Troll", "Troll"] legion.add_creature_by_name("Ranger") legion.reveal_creatures(["Troll", "Troll", "Ranger"]) assert legion.creature_names == [ "Ogre", "Ogre", "Ranger", "Troll", "Troll" ] legion = Legion.Legion( player, "Rd01", Creature.n2c(["Unknown", "Unknown", "Unknown", "Unknown"]), 1) legion.reveal_creatures(["Centaur", "Centaur", "Lion"]) assert legion.creature_names == ["Centaur", "Centaur", "Lion", "Unknown"]
def test_is_legal_split(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) parent = Legion.Legion(player, "Rd01", creatures, 1) child1 = Legion.Legion(player, "Rd01", Creature.n2c(["Titan", "Gargoyle", "Ogre", "Ogre"]), 1) child2 = Legion.Legion( player, "Rd03", Creature.n2c(["Angel", "Gargoyle", "Centaur", "Centaur"]), 1) assert parent.is_legal_split(child1, child2) assert not parent.is_legal_split(child1, child1) parent2 = Legion.Legion( player, "Rd01", Creature.n2c(["Titan", "Gargoyle", "Ogre", "Troll", "Centaur"]), 1) child3 = Legion.Legion( player, "Rd01", Creature.n2c(["Titan", "Gargoyle", "Ogre", "Troll"]), 1) child4 = Legion.Legion(player, "Rd03", Creature.n2c(["Centaur"]), 1) assert not parent2.is_legal_split(child3, child4) child5 = Legion.Legion( player, "Rd01", Creature.n2c(["Unknown", "Unknown", "Unknown", "Unknown"]), 1) child6 = Legion.Legion( player, "Rd03", Creature.n2c(["Unknown", "Unknown", "Unknown", "Unknown"]), 1) assert parent.is_legal_split(child5, child6)
def test_friendly_legions(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(100) player.assign_color("Red") player.pick_marker("Rd01") player.create_starting_legion() legion1 = player.markerid_to_legion["Rd01"] player.split_legion("Rd01", "Rd02", ["Titan", "Ogre", "Ogre", "Gargoyle"], ["Angel", "Gargoyle", "Centaur", "Centaur"]) legion2 = player.markerid_to_legion["Rd02"] assert player.friendly_legions() == set([legion1, legion2]) assert player.friendly_legions(100) == set([legion1, legion2]) assert player.friendly_legions(200) == set() legion1.move(8, False, None, 1) assert player.friendly_legions() == set([legion1, legion2]) assert player.friendly_legions(100) == set([legion2]) assert player.friendly_legions(8) == set([legion1]) assert player.friendly_legions(200) == set() legion2.move(200, True, "Angel", 3) assert player.friendly_legions() == set([legion1, legion2]) assert player.friendly_legions(100) == set() assert player.friendly_legions(8) == set([legion1]) assert player.friendly_legions(200) == set([legion2])
def test_remove_creature_by_name(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert len(legion) == 8 legion.remove_creature_by_name("Gargoyle") assert len(legion) == 7 assert "Gargoyle" in legion.creature_names legion.remove_creature_by_name("Gargoyle") assert len(legion) == 6 assert "Gargoyle" not in legion.creature_names try: legion.remove_creature_by_name("Gargoyle") except ValueError: pass else: assert False legion.remove_creature_by_name("Ogre") legion.remove_creature_by_name("Ogre") legion.remove_creature_by_name("Centaur") legion.remove_creature_by_name("Centaur") legion.remove_creature_by_name("Titan") assert len(legion) == 1 assert legion legion.remove_creature_by_name("Angel") assert len(legion) == 0 assert legion
def test_add_creature_by_name(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert len(legion) == 8 try: legion.add_creature_by_name("Cyclops") except ValueError: pass else: assert False legion.remove_creature_by_name("Gargoyle") assert len(legion) == 7 try: legion.add_creature_by_name("Cyclops") except ValueError: pass else: assert False assert "Gargoyle" in legion.creature_names legion.remove_creature_by_name("Gargoyle") assert len(legion) == 6 assert "Gargoyle" not in legion.creature_names legion.add_creature_by_name("Troll") assert len(legion) == 7 assert "Troll" in legion.creature_names
def test_create_starting_legion(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 try: player.create_starting_legion() except Exception: pass else: assert False player.selected_markerid = "Bu01" try: player.create_starting_legion() except Exception: pass else: assert False player.pick_marker("Rd01") player.create_starting_legion() player.pick_marker("Rd02") try: player.create_starting_legion() except Exception: pass else: assert False
def test_score(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert legion.score == 120
def test_creature_names(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert legion.creature_names == [ "Angel", "Centaur", "Centaur", "Gargoyle", "Gargoyle", "Ogre", "Ogre", "Titan" ]
def test_pick_marker(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 player.pick_marker("Bu01") assert player.selected_markerid is None player.pick_marker("Rd01") assert player.selected_markerid == "Rd01"
def test_num_creatures(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 player.pick_marker("Rd01") assert player.selected_markerid == "Rd01" player.create_starting_legion() assert player.num_creatures == 8
def test_engaged(): now = time.time() game = Game.Game("g1", "p1", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player1 = Player.Player("p1", game, 0) player1.color = "Red" game.players.append(player1) legion1 = Legion.Legion(player1, "Rd01", creatures, 1) player1.markerid_to_legion[legion1.markerid] = legion1 player2 = Player.Player("p2", game, 1) player2.color = "Blue" game.players.append(player2) legion2 = Legion.Legion(player2, "Bu01", creatures, 2) player2.markerid_to_legion[legion2.markerid] = legion2 assert not legion1.engaged assert not legion2.engaged legion2.move(1, False, None, 1) assert legion1.engaged assert legion2.engaged
def test_find_creature(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert legion.find_creature("Titan", "DEFENDER") is None for creature in legion.creatures: creature.hexlabel = "DEFENDER" assert legion.find_creature("Titan", "DEFENDER") is not None assert legion.find_creature("Ogre", "DEFENDER") is not None assert legion.find_creature("Titan", "ATTACKER") is None assert legion.find_creature("Ogre", "ATTACKER") is None
def test_could_recruit(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) legion = Legion.Legion( player, "Rd02", Creature.n2c(["Titan", "Gargoyle", "Centaur", "Centaur"]), 1) caretaker = Caretaker.Caretaker() assert not legion.could_recruit("Marsh", caretaker) assert not legion.could_recruit("Desert", caretaker) assert legion.could_recruit("Plains", caretaker) assert legion.could_recruit("Brush", caretaker) assert legion.could_recruit("Tower", caretaker)
def test_take_marker(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 try: player.take_marker("Bu01") except Exception: pass else: assert False player.take_marker("Rd01") assert len(player.markerids_left) == 11
def test_can_exit_split_phase(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 player.pick_marker("Rd01") assert player.selected_markerid == "Rd01" player.create_starting_legion() assert len(player.markerid_to_legion) == 1 assert not player.can_exit_split_phase player.split_legion("Rd01", "Rd02", ["Titan", "Ogre", "Ogre", "Gargoyle"], ["Angel", "Centaur", "Centaur", "Gargoyle"]) assert player.can_exit_split_phase
def test_sorted_legions(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 player.pick_marker("Rd01") assert player.selected_markerid == "Rd01" player.create_starting_legion() assert player.can_split player.split_legion("Rd01", "Rd02", ["Titan", "Ogre", "Ogre", "Gargoyle"], ["Angel", "Centaur", "Centaur", "Gargoyle"]) sorted_legions = player.sorted_legions assert len(sorted_legions) == 2 assert sorted_legions[0].has_titan assert not sorted_legions[1].has_titan
def test_available_recruits(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) legion = Legion.Legion( player, "Rd02", Creature.n2c(["Titan", "Lion", "Gargoyle", "Centaur", "Centaur"]), 1) caretaker = Caretaker.Caretaker() assert legion.available_recruits("Marsh", caretaker) == [] assert legion.available_recruits("Desert", caretaker) == ["Lion"] assert legion.available_recruits("Plains", caretaker) == ["Centaur", "Lion"] assert legion.available_recruits("Brush", caretaker) == ["Gargoyle"] assert legion.available_recruits( "Tower", caretaker) == ["Ogre", "Centaur", "Gargoyle", "Warlock"]
def test_picname(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert legion.picname == "Cross" legion = Legion.Legion( player, "Rd02", Creature.n2c(["Titan", "Gargoyle", "Centaur", "Centaur"]), 1) assert legion.picname == "Eagle" legion = Legion.Legion( player, "Gr12", Creature.n2c(["Gargoyle", "Gargoyle", "Centaur", "Centaur"]), 1) assert legion.picname == "Ourobouros"
def test_can_exit_move_phase(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(100) player.assign_color("Red") player.pick_marker("Rd01") player.create_starting_legion() legion1 = player.markerid_to_legion["Rd01"] player.split_legion("Rd01", "Rd02", ["Titan", "Ogre", "Ogre", "Gargoyle"], ["Angel", "Gargoyle", "Centaur", "Centaur"]) legion2 = player.markerid_to_legion["Rd02"] assert not player.can_exit_move_phase legion1.move(8, False, None, 1) assert not player.can_exit_move_phase legion2.move(200, True, "Angel", 3) game.phase = Phase.MOVE assert player.can_exit_move_phase
def test_combat_value(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) # No terrain legion.hexlabel = None assert legion.terrain_combat_value == legion.combat_value # Plains legion.hexlabel = 1 assert legion.terrain_combat_value == legion.combat_value # Woods legion.hexlabel = 2 assert legion.terrain_combat_value == legion.combat_value # Brush legion.hexlabel = 3 assert legion.terrain_combat_value > legion.combat_value # Hills legion.hexlabel = 4 assert legion.terrain_combat_value > legion.combat_value # Jungle legion.hexlabel = 5 assert legion.terrain_combat_value > legion.combat_value # Desert legion.hexlabel = 7 assert legion.terrain_combat_value == legion.combat_value # Marsh legion.hexlabel = 8 assert legion.terrain_combat_value > legion.combat_value # Swamp legion.hexlabel = 14 assert legion.terrain_combat_value > legion.combat_value # Tower legion.hexlabel = 100 assert legion.terrain_combat_value > legion.combat_value # Mountains legion.hexlabel = 1000 assert legion.terrain_combat_value == legion.combat_value # Tundra legion.hexlabel = 2000 assert legion.terrain_combat_value == legion.combat_value
def test_can_summon(): now = time.time() game = Game.Game("g1", "p1", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player1 = Player.Player("p1", game, 0) player1.assign_color("Red") game.players.append(player1) legion1 = Legion.Legion(player1, "Rd01", creatures, 1) player1.markerid_to_legion[legion1.markerid] = legion1 assert not legion1.can_summon player1.split_legion("Rd01", "Rd02", ["Titan", "Centaur", "Ogre", "Gargoyle"], ["Angel", "Centaur", "Ogre", "Gargoyle"]) assert legion1.can_summon legion2 = player1.markerid_to_legion["Rd02"] legion2.move(2, False, None, 1) assert legion1.can_summon assert not legion2.can_summon
def test_num_lords(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) creatures = Creature.n2c(creaturedata.starting_creature_names) player = Player.Player("p0", game, 0) legion = Legion.Legion(player, "Rd01", creatures, 1) assert legion.num_lords == 2 assert not legion.can_flee legion = Legion.Legion( player, "Rd02", Creature.n2c(["Titan", "Gargoyle", "Centaur", "Centaur"]), 1) assert legion.num_lords == 1 assert not legion.can_flee legion = Legion.Legion( player, "Rd02", Creature.n2c(["Gargoyle", "Gargoyle", "Centaur", "Centaur"]), 1) assert legion.num_lords == 0 assert legion.can_flee
def test_teleported(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 player.pick_marker("Rd01") assert player.selected_markerid == "Rd01" player.create_starting_legion() assert player.num_creatures == 8 assert not player.teleported player.split_legion("Rd01", "Rd02", ["Titan", "Ogre", "Ogre", "Gargoyle"], ["Angel", "Gargoyle", "Centaur", "Centaur"]) legion1 = player.markerid_to_legion["Rd01"] legion2 = player.markerid_to_legion["Rd02"] legion1.move(8, False, None, 1) assert not player.teleported legion2.move(200, True, "Angel", 3) assert player.teleported legion2.undo_move() assert not player.teleported
def test_titan_power(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) player.assign_starting_tower(600) player.assign_color("Red") assert len(player.markerids_left) == 12 player.pick_marker("Rd01") assert player.selected_markerid == "Rd01" player.create_starting_legion() legion = player.markerid_to_legion["Rd01"] for creature in legion.creatures: if creature.name == "Titan": titan = creature assert player.score == 0 assert titan.power == 6 assert titan.is_titan player.score = 99 assert titan.power == 6 player.score = 100 assert titan.power == 7 player.score = 10000 assert titan.power == 106
import time from slugathon.util import guiutils from slugathon.game import Game, Player now = time.time() playername = "Player 1" game = Game.Game("g1", playername, now, now, 2, 6) player1 = game.players[0] player1.assign_starting_tower(600) player1.assign_color("Red") player1.pick_marker("Rd01") player1.create_starting_legion() game.active_player = player1 player2 = Player.Player("Player 2", game, 1) player2.assign_starting_tower(500) player2.assign_color("Blue") player2.pick_marker("Bu02") player2.create_starting_legion() game.players.append(player2) caretaker = game.caretaker for unused in xrange(10): caretaker.take_one("Colossus") window = gtk.Window() guicaretaker = GUICaretaker(game, playername) guicaretaker.connect("destroy", guiutils.exit) window.add(guicaretaker) window.show_all()
self.deferred.callback( (self.attacker_legion, self.defender_legion, confirmed)) def failure(self, arg): log.err(arg) if __name__ == "__main__": import time from slugathon.game import Creature, Legion, Player, Game now = time.time() attacker_playername = "Roar!" game = Game.Game("g1", attacker_playername, now, now, 2, 6) attacker_player = Player.Player(attacker_playername, game, 0) attacker_player.color = "Black" attacker_creature_names = [ "Titan", "Colossus", "Serpent", "Hydra", "Archangel", "Angel", "Unicorn" ] attacker_creatures = Creature.n2c(attacker_creature_names) attacker_legion = Legion.Legion(attacker_player, "Bk01", attacker_creatures, 1) defender_playername = "Eek!" defender_player = Player.Player(defender_playername, game, 0) defender_player.color = "Gold" defender_creature_names = ["Ogre", "Centaur", "Gargoyle"] defender_creatures = Creature.n2c(defender_creature_names) defender_legion = Legion.Legion(defender_player, "Rd01",
def cb_destroy(confirmed): print "destroy" graveyard.destroy() gtk.main_quit() def cb_click(self, widget, event): if self.legion.living_creatures: random.choice(self.legion.living_creatures).kill() graveyard.update_gui() creatures = [ Creature.Creature(name) for name in creaturedata.starting_creature_names ] playername = "test" player = Player.Player(playername, None, None) player.color = random.choice(playercolordata.colors) abbrev = player.color_abbrev index = random.randrange(1, 12 + 1) legion = Legion.Legion(player, "%s%02d" % (abbrev, index), creatures, 1) graveyard = Graveyard(legion) graveyard.connect("destroy", guiutils.exit) graveyard.connect("button-press-event", cb_click, graveyard) window = gtk.Window() window.add(graveyard) window.show_all() gtk.main()
def test_available_recruits_and_recruiters(): now = time.time() game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player("p0", game, 0) legion = Legion.Legion( player, "Rd01", Creature.n2c(["Titan", "Gargoyle", "Centaur", "Centaur"]), 1) caretaker = Caretaker.Caretaker() assert legion.available_recruits_and_recruiters("Marsh", caretaker) == [] assert legion.available_recruits_and_recruiters("Desert", caretaker) == [] assert legion.available_recruits_and_recruiters("Plains", caretaker) == [ ("Centaur", "Centaur"), ("Lion", "Centaur", "Centaur") ] assert legion.available_recruits_and_recruiters("Brush", caretaker) == [ ("Gargoyle", "Gargoyle") ] assert legion.available_recruits_and_recruiters("Tower", caretaker) == [ ("Ogre", ), ("Centaur", ), ("Gargoyle", ), ("Warlock", "Titan") ] caretaker.counts["Centaur"] = 0 assert legion.available_recruits_and_recruiters("Plains", caretaker) == [ ("Lion", "Centaur", "Centaur") ] legion2 = Legion.Legion( player, "Rd02", Creature.n2c(["Titan", "Gargoyle", "Gargoyle", "Gargoyle"]), 1) assert legion2.available_recruits_and_recruiters("Tower", caretaker) == [ ("Ogre", ), ("Gargoyle", ), ("Warlock", "Titan"), ("Guardian", "Gargoyle", "Gargoyle", "Gargoyle") ] assert legion2.available_recruits_and_recruiters("Brush", caretaker) == [ ("Gargoyle", "Gargoyle"), ("Cyclops", "Gargoyle", "Gargoyle") ] legion3 = Legion.Legion(player, "Rd03", Creature.n2c(["Colossus"]), 1) assert legion3.available_recruits_and_recruiters("Tundra", caretaker) == [ ("Troll", "Colossus"), ("Warbear", "Colossus"), ("Giant", "Colossus"), ("Colossus", "Colossus") ] assert legion3.available_recruits_and_recruiters( "Mountains", caretaker) == [("Lion", "Colossus"), ("Minotaur", "Colossus"), ("Dragon", "Colossus"), ("Colossus", "Colossus")] assert legion3.available_recruits_and_recruiters("Marsh", caretaker) == [] legion4 = Legion.Legion( player, "Rd04", Creature.n2c(["Behemoth", "Cyclops", "Cyclops", "Cyclops"]), 1) assert legion4.available_recruits_and_recruiters("Brush", caretaker) == [ ("Gargoyle", "Cyclops"), ("Cyclops", "Cyclops"), ("Gorgon", "Cyclops", "Cyclops") ] logging.info(legion4.available_recruits_and_recruiters( "Jungle", caretaker)) assert legion4.available_recruits_and_recruiters("Jungle", caretaker) == [ ("Gargoyle", "Cyclops"), ("Gargoyle", "Behemoth"), ("Cyclops", "Cyclops"), ("Cyclops", "Behemoth"), ("Behemoth", "Cyclops", "Cyclops", "Cyclops"), ("Behemoth", "Behemoth"), ]
self.deferred.callback((self.legion, None, None)) self.destroy() if __name__ == "__main__": import time from slugathon.game import Legion, Player, Game from slugathon.util import guiutils creature_names = ["Titan", "Dragon", "Dragon", "Minotaur", "Minotaur"] creatures = Creature.n2c(creature_names) def my_callback((legion, creature, recruiter_names)): logging.info("%s recruited %s %s", legion, creature, recruiter_names) guiutils.exit() now = time.time() playername = "p0" game = Game.Game("g1", "p0", now, now, 2, 6) player = Player.Player(playername, game, 0) player.color = "Red" legion = Legion.Legion(player, "Rd01", creatures, 1) legion.hexlabel = 1000 masterhex = game.board.hexes[legion.hexlabel] mterrain = masterhex.terrain pickrecruit, def1 = new(playername, legion, mterrain, game.caretaker, None) def1.addCallback(my_callback) pickrecruit.connect("destroy", guiutils.exit) gtk.main()
from slugathon.game import Game, Player, Creature from slugathon.data import creaturedata now = time.time() playername = "p1" creatures = Creature.n2c(creaturedata.starting_creature_names) game = Game.Game("g1", "Player 1", now, now, 2, 6) player1 = game.players[0] player1.assign_starting_tower(600) player1.assign_color("Red") player1.pick_marker("Rd01") player1.create_starting_legion() game.active_player = player1 player2 = Player.Player("Player 2", game, 1) player2.assign_starting_tower(500) player2.assign_color("Blue") player2.pick_marker("Bu02") player2.create_starting_legion() game.players.append(player2) player3 = Player.Player("Player 3", game, 2) player3.assign_starting_tower(400) player3.assign_color("Green") player3.pick_marker("Gr03") player3.create_starting_legion() game.players.append(player3) player4 = Player.Player("Player 4", game, 3) player4.assign_starting_tower(300)