Пример #1
0
    def new_game(self):
        # Init player's team (one character at beginning)
        team = [LoadFromXMLManager.load_player("john"), LoadFromXMLManager.load_player("archer")]

        # Init the first level
        self.level_id = 0
        self.play(StartScreen.load_level(self.level_id, team))
Пример #2
0
 def setUpClass(cls):
     from src.Level import Level
     from src.Character import Character
     from src import LoadFromXMLManager as Loader
     import src.fonts as font
     os.chdir(os.getcwd() + '/..')
     pg.init()
     font.init_fonts()
     cls.level_class = Level
     cls.buttons = []
     cls.buttons.append(
         Rect(NEW_GAME_BUTTON_POS[0], NEW_GAME_BUTTON_POS[1],
              BUTTON_SIZE[0], BUTTON_SIZE[1]))
     cls.buttons.append(
         Rect(LOAD_GAME_BUTTON_POS[0], LOAD_GAME_BUTTON_POS[1],
              BUTTON_SIZE[0], BUTTON_SIZE[1]))
     cls.buttons.append(
         Rect(OPTIONS_BUTTON_POS[0], NEW_GAME_BUTTON_POS[1], BUTTON_SIZE[0],
              BUTTON_SIZE[1]))
     cls.buttons.append(
         Rect(EXIT_GAME_BUTTON_POS[0], NEW_GAME_BUTTON_POS[1],
              BUTTON_SIZE[0], BUTTON_SIZE[1]))
     races = Loader.load_races()
     classes = Loader.load_classes()
     Character.init_data(races, classes)
    def init_player(name):
        # -- Reading of the XML file
        tree = etree.parse("data/characters.xml").getroot()
        player_t = tree.xpath(name)[0]
        player_class = player_t.find('class').text.strip()
        race = player_t.find('race').text.strip()
        lvl = player_t.find('lvl')
        if lvl is None:
            # If lvl is not informed, default value is assumes to be 1
            lvl = 1
        else:
            lvl = int(lvl.text.strip())
        defense = int(player_t.find('initDef').text.strip())
        res = int(player_t.find('initRes').text.strip())
        hp = int(player_t.find('initHP').text.strip())
        strength = int(player_t.find('initStrength').text.strip())
        move = int(player_t.find('move').text.strip())
        sprite = 'imgs/dungeon_crawl/player/' + player_t.find(
            'sprite').text.strip()
        compl_sprite = player_t.find('complementSprite')
        if compl_sprite is not None:
            compl_sprite = 'imgs/dungeon_crawl/player/' + compl_sprite.text.strip(
            )

        equipment = player_t.find('equipment')
        equipments = []
        for eq in equipment.findall('*'):
            equipments.append(
                LoadFromXMLManager.parse_item_file(eq.text.strip()))
        gold = int(player_t.find('gold').text.strip())

        # Creating player instance
        player = Player(name,
                        sprite,
                        hp,
                        defense,
                        res,
                        move,
                        strength, [player_class],
                        equipments,
                        race,
                        gold,
                        lvl,
                        compl_sprite=compl_sprite)

        # Up stats according to current lvl
        player.stats_up(lvl - 1)
        # Restore hp due to lvl up
        player.healed()

        inventory = player_t.find('inventory')
        for it in inventory.findall('item'):
            item = LoadFromXMLManager.parse_item_file(it.text.strip())
            player.set_item(item)

        return player
 def setUpClass(cls):
     super(TestShop, cls).setUpClass()
     pg.init()
     font.init_fonts()
     # Window parameters
     pg.display.set_mode((MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT))
     # Load some data
     races = Loader.load_races()
     classes = Loader.load_classes()
     Character.init_data(races, classes)
    def new_game(self):
        # Init player's team (one character at beginning)
        team = [
            LoadFromXMLManager.load_player("raimund"),
            LoadFromXMLManager.load_player("braern"),
            LoadFromXMLManager.load_player("thokdrum")
        ]

        # Init the first level
        self.level_id = 0
        self.play(StartScreen.load_level(self.level_id, team))
Пример #6
0
 def setUpClass(cls):
     super(TestLevel, cls).setUpClass()
     cls.save_url = "saves/main_save.xml"
     pg.init()
     font.init_fonts()
     # Window parameters
     screen = pg.display.set_mode((MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT))
     cls.start_screen = StartScreen(screen)
     cls.start_screen.display()
     # Load some data
     races = Loader.load_races()
     classes = Loader.load_classes()
     Character.init_data(races, classes)
Пример #7
0
 def setUpClass(cls):
     super(TestStartScreen, cls).setUpClass()
     pg.init()
     font.init_fonts()
     cls.save_url = "saves/main_save.xml"
     cls.level_class = Level
     cls.buttons = []
     cls.buttons.append(
         Rect(NEW_GAME_BUTTON_POS[0], NEW_GAME_BUTTON_POS[1],
              BUTTON_SIZE[0], BUTTON_SIZE[1]))
     cls.buttons.append(
         Rect(LOAD_GAME_BUTTON_POS[0], LOAD_GAME_BUTTON_POS[1],
              BUTTON_SIZE[0], BUTTON_SIZE[1]))
     cls.buttons.append(
         Rect(OPTIONS_BUTTON_POS[0], NEW_GAME_BUTTON_POS[1], BUTTON_SIZE[0],
              BUTTON_SIZE[1]))
     cls.buttons.append(
         Rect(EXIT_GAME_BUTTON_POS[0], NEW_GAME_BUTTON_POS[1],
              BUTTON_SIZE[0], BUTTON_SIZE[1]))
     races = Loader.load_races()
     classes = Loader.load_classes()
     Character.init_data(races, classes)
    def load_game(self):
        try:
            save = open("saves/main_save.xml", "r")

            # Test if there is a current saved game
            if save:
                tree_root = etree.parse("saves/main_save.xml").getroot()
                index = tree_root.find("level/index").text.strip()
                level_name = 'maps/level_' + index + '/'
                game_status = tree_root.find("level/phase").text.strip()
                turn_nb = 0
                if game_status != 'I':
                    turn_nb = int(tree_root.find("level/turn").text.strip())
                team = []
                for player in tree_root.findall("team/player"):
                    name = player.find("name").text.strip()
                    level = int(player.find("level").text.strip())
                    p_class = player.find("class").text.strip()
                    race = player.find("race").text.strip()
                    gold = int(player.find("gold").text.strip())
                    exp = int(player.find("exp").text.strip())
                    hp = int(player.find("hp").text.strip())
                    strength = int(player.find("strength").text.strip())
                    defense = int(player.find("def").text.strip())
                    res = int(player.find("res").text.strip())
                    move = int(player.find("move").text.strip())
                    current_hp = int(player.find("currentHp").text.strip())
                    pos = (int(player.find("position/x").text.strip()) *
                           TILE_SIZE,
                           int(player.find("position/y").text.strip()) *
                           TILE_SIZE)
                    state = player.find("turnFinished").text.strip()
                    inv = []
                    for it in player.findall("inventory/item"):
                        it_name = it.find("name").text.strip()
                        item = LoadFromXMLManager.parse_item_file(it_name)
                        inv.append(item)

                    equipments = []
                    for eq in player.findall("equipments/equipment"):
                        eq_name = eq.find("name").text.strip()
                        eq = LoadFromXMLManager.parse_item_file(eq_name)
                        equipments.append(eq)

                    # -- Reading of the XML file for default character's values (i.e. sprites)
                    tree = etree.parse("data/characters.xml").getroot()
                    player_t = tree.xpath(name)[0]

                    sprite = 'imgs/dungeon_crawl/player/' + player_t.find(
                        'sprite').text.strip()
                    compl_sprite = player_t.find('complementSprite')
                    if compl_sprite is not None:
                        compl_sprite = 'imgs/dungeon_crawl/player/' + compl_sprite.text.strip(
                        )

                    p = Player(name,
                               sprite,
                               hp,
                               defense,
                               res,
                               move,
                               strength, [p_class],
                               equipments,
                               race,
                               gold,
                               level,
                               compl_sprite=compl_sprite)
                    p.earn_xp(exp)
                    p.items = inv
                    p.set_current_hp(current_hp)
                    p.pos = pos
                    if state == "True":
                        p.turn_finished()

                    team.append(p)

                # Load level with current game status, foes states, and team
                self.level_id = int(index)
                level = Level(level_name, team, self.level_id, game_status,
                              turn_nb, tree_root.find("level/entities"))
                self.play(level)
                save.close()
                return
        except FileNotFoundError:
            # No saved game
            self.background_menus.append([self.active_menu, True])

            name = "Load Game"
            entries = [[{
                'type': 'text',
                'text': "No saved game.",
                'font': fonts['MENU_SUB_TITLE_FONT']
            }]]
            width = self.screen.get_width() // 2
            self.active_menu = InfoBox(name,
                                       "",
                                       "imgs/interface/PopUpMenu.png",
                                       entries,
                                       width,
                                       close_button=1)
Пример #9
0
    # Load fonts
    fonts.init_fonts()

    # Window parameters
    pg.display.set_caption("In the name of the Five Cats")
    screen = pg.display.set_mode((MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT))

    # Load constant sprites
    Destroyable.init_constant_sprites()
    Breakable.init_constant_sprites()
    Movable.init_constant_sprites()
    Sidebar.init_constant_sprites()
    Level.init_constant_sprites()

    # Load some data
    races = Loader.load_races()
    classes = Loader.load_classes()
    Character.init_data(races, classes)

    clock = pg.time.Clock()

    start_screen = StartScreen(screen)

    quit_game = False
    while not quit_game:
        for e in pg.event.get():
            if e.type == pg.QUIT:
                quit_game = True
            elif e.type == pg.MOUSEMOTION:
                start_screen.motion(e.pos)
            elif e.type == pg.MOUSEBUTTONUP: