Example #1
0
def main():
    # create dungeon with a single NxN level
    N = 3  # must be >= 2
    testDungeon = Dungeon.Dungeon()
    testLevel = Dungeon.DungeonLevel()
    testLevel.make_grid(N, N)
    testDungeon.add_level(testLevel)

    assert (len(testDungeon.dLevels) == 1)
    assert (testLevel.tile_at(testLevel.maxX, testLevel.maxY))
    assert (not testLevel.tile_at(N, 0))
    assert (testLevel.tile_at(0, 0) == testLevel.get_neighbor(
        testLevel.tile_at(1, 1), 'nw'))
    try:
        testLevel.get_neighbor(testLevel.tile_at(0, 0), 'n')  # should fail
        assert (False)
    except Dungeon.DungeonLevelError:
        # failed as expected, so continue
        pass
    print 'Dungeon creation passed'

    # create hero and place at (1, 1)
    testHero = Mob.Hero('tester', 'female', 'archeologist', 'dwarf', 'chaotic')
    testHero.set_dungeon_level(testLevel)
    testHero.set_location(testLevel.tile_at(1, 1))
    assert (testHero.get_location().x == 1 and testHero.get_location().y == 1)
    print 'Hero creation passed'

    # place food ration at (1, 0) and have hero pick up
    testComestible = Item.FoodRation()
    testLevel.tile_at(1, 0).add_item(testComestible)
    assert (len(testLevel.tile_at(1, 0).items) == 1)
    testHero.move('n')
    assert (testHero.get_location() == testLevel.tile_at(1, 0))
    assert (len(testLevel.tile_at(1, 1).mobs) == 0)
    assert (testLevel.tile_at(1, 0).mobs[0] == testHero)
    testHero.pick_up(testComestible)
    assert (len(testLevel.tile_at(1, 0).items) == 0)
    assert (testHero.inventory[0] == testComestible)
    assert (testHero.get_weight_carried() == testComestible.get_weight())
    print 'Hero movement and pickup passed'

    # have hero eat food ration
    heroNutritionBefore = testHero.get_nutrition()
    testHero.eat(testComestible)
    heroNutritionAfter = testHero.get_nutrition()
    assert (len(testHero.inventory) == 0)
    assert (heroNutritionAfter -
            heroNutritionBefore == testComestible.get_nutrition_value())
    assert (testHero.get_weight_carried() == 0)
    print 'Hero eating passed'

    return testDungeon