示例#1
0
    def should_remember_objects(self):
        dungeon = game.Dungeon(MockGenerator(), UNATCOAgent)
        dungeon.go_to_level('top', connected_passage='basement')
        self.assertEqual(dungeon.current_level, dungeon.levels['top'])

        dungeon.rogue.pos = Point(1, 1)
        dungeon.current_level.visit(dungeon.rogue.pos)
        dungeon.rogue.pos = Point(2, 6)

        self.assertTrue(
            dungeon.is_remembered(dungeon.current_level.rooms.cell((0, 0))))
        self.assertFalse(
            dungeon.is_remembered(dungeon.current_level.rooms.cell((1, 0))))
        self.assertTrue(
            dungeon.is_remembered(dungeon.current_level.tunnels[0],
                                  additional=Point(3, 1)))
        self.assertFalse(
            dungeon.is_remembered(dungeon.current_level.tunnels[1],
                                  additional=Point(11, 4)))
        self.assertTrue(dungeon.is_remembered(Point(2, 1)))
        self.assertTrue(dungeon.is_remembered(Point(3, 1)))
        self.assertFalse(dungeon.is_remembered(Point(5, 1)))
        self.assertFalse(dungeon.is_remembered(Point(8, 2)))

        dungeon.god.vision = True
        self.assertTrue(
            dungeon.is_remembered(dungeon.current_level.rooms.cell((1, 0))))
        self.assertTrue(
            dungeon.is_remembered(dungeon.current_level.tunnels[1],
                                  additional=Point(11, 4)))
        self.assertTrue(dungeon.is_remembered(Point(5, 1)))
        self.assertTrue(dungeon.is_remembered(Point(8, 2)))
示例#2
0
    def should_move_monster(self):
        dungeon = game.Dungeon(MockGenerator(), UNATCOAgent)
        dungeon.go_to_level('top', connected_passage='basement')
        dungeon.rogue.pos = Point(9, 3)
        pistol = StealthPistol()
        dungeon.rogue.inventory.append(pistol)

        mj12 = MJ12Trooper()
        mj12.pos = Point(8, 3)
        dungeon.current_level.monsters.append(mj12)

        vacuum = VacuumCleaner()
        vacuum.pos = Point(8, 2)
        dungeon.current_level.monsters.append(vacuum)

        events = dungeon.move_monster(mj12, Point(7, 3))
        self.assertEqual(mj12.pos, Point(7, 3))
        self.assertEqual(events, [])

        events = dungeon.move_monster(mj12, Point(6, 3), with_tunnels=False)
        self.assertEqual(mj12.pos, Point(7, 3))
        self.assertEqual(events,
                         [game.Event.BumpIntoTerrain(mj12, Point(6, 3))])

        events = dungeon.move_monster(mj12, Point(8, 3))
        self.assertEqual(mj12.pos, Point(8, 3))
        self.assertEqual(events, [])

        events = dungeon.move_monster(mj12, Point(8, 2))
        self.assertEqual(mj12.pos, Point(8, 3))
        self.assertEqual(events, [game.Event.BumpIntoMonster(mj12, vacuum)])

        events = dungeon.move_monster(mj12, Point(9, 3))
        self.assertEqual(mj12.pos, Point(8, 3))
        self.assertEqual(events,
                         [game.Event.AttackMonster(mj12, dungeon.rogue, 3)])
        self.assertEqual(dungeon.rogue.hp, 97)

        dungeon.rogue.hp = 3
        events = dungeon.move_monster(mj12, Point(9, 3))
        self.assertEqual(mj12.pos, Point(8, 3))
        self.assertEqual(events, [
            game.Event.AttackMonster(mj12, dungeon.rogue, 3),
            game.Event.MonsterDied(dungeon.rogue),
            game.Event.MonsterDroppedItem(dungeon.rogue, pistol),
        ])
        self.assertFalse(dungeon.rogue.is_alive())
        self.assertEqual(dungeon.current_level.items, [(Point(9, 3), pistol)])
示例#3
0
    def should_locate_in_maze(self):
        dungeon = game.Dungeon(MockGenerator(), UNATCOAgent)
        dungeon.go_to_level('top', connected_passage='basement')
        self.assertEqual(dungeon.current_level, dungeon.levels['top'])

        dungeon.rogue.pos = Point(1, 1)
        self.assertEqual(dungeon.current_room,
                         dungeon.current_level.rooms.cell((0, 0)))
        self.assertIsNone(dungeon.current_tunnel)

        dungeon.rogue.pos = Point(3, 1)
        self.assertEqual(dungeon.current_room,
                         dungeon.current_level.rooms.cell((0, 0)))
        self.assertEqual(dungeon.current_tunnel,
                         dungeon.current_level.tunnels[0])

        dungeon.rogue.pos = Point(5, 1)
        self.assertIsNone(dungeon.current_room)
        self.assertEqual(dungeon.current_tunnel,
                         dungeon.current_level.tunnels[0])
示例#4
0
 def should_use_stairs(self):
     dungeon = game.Dungeon(MockGenerator(), UNATCOAgent)
     dungeon.go_to_level('top', connected_passage='basement')
     dungeon.use_stairs(dungeon.current_level.objects[1][1])
     self.assertEqual(dungeon.current_level, dungeon.levels['roof'])
     self.assertEqual(dungeon.rogue.pos, Point(1, 1))
示例#5
0
 def should_move_to_level(self):
     dungeon = game.Dungeon(MockGenerator(), UNATCOAgent)
     dungeon.go_to_level('top', connected_passage='basement')
     self.assertEqual(dungeon.current_level, dungeon.levels['top'])
     self.assertEqual(dungeon.rogue.pos, Point(1, 1))