コード例 #1
0
def test():
    importlib.reload(ants)
    hive = ants.Hive(ants.AssaultPlan())
    dimensions = (2, 9)
    colony = ants.AntColony(None, hive, ants.ant_types(), ants.dry_layout,
                            dimensions)
    # Extensive damage doubling tests
    queen_tunnel, side_tunnel = [[
        colony.places['tunnel_{0}_{1}'.format(i, j)] for j in range(9)
    ] for i in range(2)]
    queen = ants.QueenAnt()
    queen_tunnel[7].add_insect(queen)
    # Turn 0
    thrower = ants.ThrowerAnt()
    fire = ants.FireAnt()
    ninja = ants.NinjaAnt()
    side = ants.ThrowerAnt()
    front = ants.NinjaAnt()
    queen_tunnel[0].add_insect(thrower)
    queen_tunnel[1].add_insect(fire)
    queen_tunnel[2].add_insect(ninja)
    queen_tunnel[8].add_insect(front)
    side_tunnel[0].add_insect(side)
    buffed_ants = [thrower, fire, ninja]
    old_dmgs = [ant.damage for ant in buffed_ants]
    queen.action(colony)
    for ant, dmg in zip(buffed_ants, old_dmgs):
        assert ant.damage == dmg * 2, "{0}'s damage is {1}, but should be {2}".format(
            ant, ant.damage, dmg * 2)
    for ant in [side, front]:
        assert ant.damage == dmg, "{0}'s damage is {1}, but should be {2}".format(
            ant, ant.damage, dmg)
    assert queen.damage == 1, 'QueenAnt damage was modified to {0}'.format(
        ant.damage)
    # Turn 1
    tank = ants.TankAnt()
    guard = ants.BodyguardAnt()
    queen_tank = ants.TankAnt()
    queen_tunnel[6].add_insect(tank)  # Not protecting an ant
    queen_tunnel[1].add_insect(guard)  # Guarding FireAnt
    queen_tunnel[7].add_insect(queen_tank)  # Guarding QueenAnt
    buffed_ants.extend([tank, guard])
    old_dmgs.extend([ant.damage for ant in [tank, guard, queen_tank]])
    queen.action(colony)
    for ant, dmg in zip(buffed_ants, old_dmgs):
        assert ant.damage == dmg * 2, "{0}'s damage is {1}, but should be {2}".format(
            ant, ant.damage, dmg * 2)

    # Turn 2
    thrower1 = ants.ThrowerAnt()
    thrower2 = ants.ThrowerAnt()
    queen_tunnel[6].add_insect(thrower1)  # Add thrower1 in TankAnt
    queen_tunnel[5].add_insect(thrower2)
    buffed_ants.extend([thrower1, thrower2])
    old_dmgs.extend([ant.damage for ant in [thrower1, thrower2]])
    queen.action(colony)
    for ant, dmg in zip(buffed_ants, old_dmgs):
        assert ant.damage == dmg * 2, "{0}'s damage is {1}, but should be {2}".format(
            ant, ant.damage, dmg * 2)
コード例 #2
0
 def test_ninja_deadliness(self):
     error_msg = 'NinjaAnt does not strike all bees in its place'
     test_place = self.colony.places['tunnel_0_0']
     for _ in range(3):
         test_place.add_insect(ants.Bee(1))
     ninja = ants.NinjaAnt()
     test_place.add_insect(ninja)
     ninja.action(self.colony)
     self.assertIs(0, len(test_place.bees), error_msg)
コード例 #3
0
 def test_ninja_does_not_block(self):
     error_msg = 'NinjaAnt blocks bees'
     p0 = self.colony.places['tunnel_0_0']
     p1 = self.colony.places['tunnel_0_1']
     bee = ants.Bee(2)
     p1.add_insect(bee)
     p1.add_insect(ants.NinjaAnt())
     bee.action(self.colony)
     self.assertIs(p0, bee.place, error_msg)
コード例 #4
0
 def test_instance_damage(self):
     error_msg = "Ninja damage not looked up on the instance"
     place = self.colony.places["tunnel_0_0"]
     bee = ants.Bee(900)
     place.add_insect(bee)
     buffNinja = ants.NinjaAnt()
     buffNinja.damage = 500  # Sharpen the sword
     place.add_insect(buffNinja)
     buffNinja.action(self.colony)
     self.assertEqual(400, bee.armor, error_msg)
コード例 #5
0
    def test_mod_damage(self):
        error_msg = 'Ninja damage should not be static'
        place = self.colony.places['tunnel_0_0']
        bee = ants.Bee(900)
        place.add_insect(bee)
        #Amp up damage
        buffNinja = ants.NinjaAnt()
        buffNinja.damage = 500
        place.add_insect(buffNinja)

        buffNinja.action(self.colony)
        self.assertEquals(400, bee.armor, error_msg)
コード例 #6
0
 def test_ninja_parameters(self):
     ninja = ants.NinjaAnt()
     self.assertIs(6, ants.NinjaAnt.food_cost, 'NinjaAnt has wrong cost')
     self.assertIs(1, ninja.armor, 'NinjaAnt has wrong armor')
コード例 #7
0
 def test_ninja_parameters(self):
     ninja = ants.NinjaAnt()
     self.assertEqual(6, ants.NinjaAnt.food_cost, "NinjaAnt has wrong cost")
     self.assertEqual(1, ninja.armor, "NinjaAnt has wrong armor")
コード例 #8
0
ファイル: test.py プロジェクト: anatasiavela/CS61A
import ants, importlib
importlib.reload(ants)
hive = ants.Hive(ants.AssaultPlan())
dimensions = (2, 9)
colony = ants.AntColony(None, hive, ants.ant_types(), ants.dry_layout,
                        dimensions)

queen_tunnel, side_tunnel = [[
    colony.places['tunnel_{0}_{1}'.format(i, j)] for j in range(9)
] for i in range(2)]
queen = ants.QueenAnt()
queen_tunnel[7].add_insect(queen)
print('Turn1----------------------------')
thrower = ants.ThrowerAnt()
fire = ants.FireAnt()
ninja = ants.NinjaAnt()
side = ants.ThrowerAnt()
front = ants.NinjaAnt()
queen_tunnel[0].add_insect(thrower)
queen_tunnel[1].add_insect(fire)
queen_tunnel[2].add_insect(ninja)
queen_tunnel[8].add_insect(front)
side_tunnel[0].add_insect(side)
queen.action(colony)
print('Turn2--------------------------------')
tank = ants.TankAnt()
guard = ants.BodyguardAnt()
queen_tank = ants.TankAnt()
queen_tunnel[6].add_insect(tank)
print("insert tank")
queen_tunnel[1].add_insect(guard)