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(Level.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 = Level.parse_item_file(it.text.strip()) player.set_item(item) return player
class Game(pyglet.window.Window): def __init__(self): super(Game, self).__init__(width=SCREEN_WIDTH, height=SCREEN_HEIGHT, fullscreen=FULLSCREEN) pyglet.clock.schedule_interval(self.update, 1 / 60.0) self.level = Level() def update(self, dt): self.push_handlers(keys) self.level.update(dt) def on_draw(self): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) self.level.draw()
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()) # Load level with current game status, foes states, and team self.level_id = int(index) level = Level(level_name, 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)
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() level_name = tree_root.find("level/name").text.strip() 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("defense").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()), int(player.find("position/y").text.strip())) state = player.find("turnFinished").text.strip() inv = [] for it in player.findall("inventory/item"): it_name = it.find("name").text.strip() item = Level.parse_item_file(it_name) inv.append(item) equipments = [] for eq in player.findall("equipments/equipment"): eq_name = eq.find("name").text.strip() eq = Level.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.set_items(inv) p.set_current_hp(current_hp) p.set_pos(pos) if state == "True": p.turn_finished() team.append(p) # Load level with current game status, foes states, and team level = Level(level_name, team, game_status, turn_nb, tree_root.find("level/entities")) self.play(level) save.close() return except FileNotFoundError as err: pass # No saved game self.background_menus.append([self.active_menu, True]) name = "Load Game" entries = [[{ 'type': 'text', 'text': "No saved game.", 'font': ITEM_DESC_FONT }]] width = self.screen.get_width() // 2 self.active_menu = InfoBox(name, "", "imgs/interface/PopUpMenu.png", entries, width, close_button=1)
def load_level(level, team): return Level('maps/level_' + level + '/', team)
def load_level(level, team): return Level('maps/level_' + str(level) + '/', team, level)
def load_level(level, team=None): if team is None: team = [] return Level('maps/level_' + str(level) + '/', level, players=team)
def __init__(self, initial, final, level): self.initial = Value(initial) self.final = Value(final) self.level = Level(level)
def __init__(self): super(Game, self).__init__(width=SCREEN_WIDTH, height=SCREEN_HEIGHT, fullscreen=FULLSCREEN) pyglet.clock.schedule_interval(self.update, 1 / 60.0) self.level = Level()
pg.init() # 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
if __name__ == "__main__": from src.constants import * import pygame as pg pg.init() #Window paramaters screen = pg.display.set_mode((WIN_WIDTH, WIN_HEIGHT), pg.RESIZABLE) pg.display.set_caption('On testing...') clock = pg.time.Clock() fps_font = pg.font.SysFont(None, 20, True) # Use pygame's default font from src.Level import Level # Init the first level level = Level('maps/level_test/') end = False while not (level.is_ended() or end): for e in pg.event.get(): if e.type == pg.QUIT: end = True elif e.type == pg.MOUSEBUTTONUP: if e.button == 1 or e.button == 3: level.click(e.button, e.pos) elif e.type == pg.MOUSEMOTION: level.motion(e.pos) elif e.type == pg.MOUSEBUTTONDOWN: if e.button == 1 or e.button == 3: level.button_down(e.button, e.pos) level.update_state()
# Open the map file to get all of the individual level files in the proper order map_file = open("map.dat", "r") # Initialize a counter i = 0 # For each line of the map file for line in map_file: # Split the line into individual filenames files = line.split() # Create a list to hold the row of levels levelRow = [0] * len(files) # For each file in the line for j in range(0, len(files)): # Add a new level to the row levelRow[j] = Level("maps\\" + files[j], i, j) # Add the row of levels to the level list levels.append(levelRow) # Tick i = i + 1 # Close the map file map_file.close() # Initialize coordinates for the current level currentLevelX = 2 currentLevelY = 1 # Initialize a variable to represent the level currently being drawn currentLevel = levels[1][2] # Initialize the player player = Player(100, 100)
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("defense").text.strip()) res = int(player.find("resistance").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("equipment/*"): eq_name = eq.text.strip() eq = LoadFromXMLManager.parse_item_file(eq_name) equipments.append(eq) skills = [ (LoadFromXMLManager.load_skill(skill.text.strip()) if skill.text.strip() not in LoadFromXMLManager.skills_infos else LoadFromXMLManager.skills_infos[skill.text.strip()]) for skill in player.findall('skills/skill/name') ] # -- 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/' + player_t.find('sprite').text.strip() compl_sprite = player_t.find('complementSprite') if compl_sprite is not None: compl_sprite = 'imgs/' + compl_sprite.text.strip() p = Player(name, sprite, hp, defense, res, strength, [p_class], equipments, race, gold, level, skills, 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)