Beispiel #1
0
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"]
Beispiel #2
0
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)
Beispiel #3
0
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])
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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"
    ]
Beispiel #9
0
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"
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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)
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #17
0
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"]
Beispiel #18
0
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"
Beispiel #19
0
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
Beispiel #20
0
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
Beispiel #21
0
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
Beispiel #22
0
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
Beispiel #23
0
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
Beispiel #24
0
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
Beispiel #25
0
    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()
Beispiel #26
0
        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",
Beispiel #27
0
    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()
Beispiel #28
0
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"),
    ]
Beispiel #29
0
        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()
Beispiel #30
0
    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)