Beispiel #1
0
def play_game(screen):
    # dungeon
    dungeon = generate_dungeon(tiles)

    # Camera
    camera = Camera(screen)

    # hud
    hud = Hud()

    # console
    console = Console()
    logger = logging.getLogger('console')
    logger.setLevel(logging.DEBUG)
    logger.addHandler(ConsoleLogHandler(console))
    logger.info('Welcome to Dungeons of my Benga')

    # create characters
    hero = Hero()
    wolf = monsters.Wolf()
    dog = monsters.Dog()
    cat = monsters.Cat()
    constrictor_snake = monsters.ConstrictorSnake()

    camera.follow(hero)

    # place hero and monsters
    place_hero(dungeon, hero)
    place_monster(dungeon, wolf)
    place_monster(dungeon, dog)
    place_monster(dungeon, cat)
    place_monster(dungeon, constrictor_snake)

    # create items
    for i in xrange(10):
        place_item(dungeon, Potion())
    place_item(dungeon, Longsword())

    # set character AI
    dog.set_ai(ChaseAI(hero))
    cat.set_ai(RandomAI())
    wolf.set_ai(ChaseAI(hero))

    # add some itens to see inventory
    hero.inventory.add_item(Potion())

    # create view
    inventory_view = InventoryView(hero.inventory)

    # create input handler
    input_handler = InputHandler(hero, inventory_view, camera)

    dungeon_view = DungeonView(dungeon)

    def draw():
        screen.fill((0, 0, 0))
        dungeon_view.draw(screen, camera)
        console.draw(screen)
        inventory_view.draw(screen)
        hud.draw(hero, screen)
        pygame.display.flip()

    try:
        while True:
            run_turn = input_handler.handle_input()
            if run_turn:
                dungeon.run_turn()
            draw()
    except HeroIsDead:
        draw()
        show_death_screen(screen)
    except WolfIsDead:
        draw()
        show_win_screen(screen)