예제 #1
0
 def create_level(self):
     """ Creates a new player and restarts level sprites. """
     self._paused = False
     self._game.ui.clear()
     self._player = PlayerCtrl()
     self._level = Level('level_1.tmx', self._player, self)
     self._timer = Timer()
    def load_game(self, game_id):
        try:
            save = open(f"saves/save_{game_id}.xml", "r")

            # Test if there is a current saved game
            if save:
                tree_root = etree.parse(save).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)
예제 #3
0
 def test_move_entity(self):
     level = Level(self.config).create_empty_tiles()
     level.tiles[0][0].set_type('floor')
     level.tiles[1][0].set_type('floor')
     entity = Entity(0, 0)
     entity.move(1, 0, level)
     self.assertEqual((1, 0), (entity.x, entity.y))
예제 #4
0
파일: main.py 프로젝트: Fuyingxue/game1
    def __init__(self, hud):
        super(GameLayer, self).__init__()
        # 添加板子和球
        self.is_on_exiting = True
        self.paddle = Paddle('images/paddle.png')
        self.add(self.paddle.sprite)
        self.ball = Ball('images/ball.png')
        self.ball.reset_position = (320, self.paddle.sprite.height + self.ball.sprite.height / 2)
        self.add(self.ball.sprite)
        # hud 用于记录,更新关卡,死亡,金币数据
        self.hud = hud
        # 生成关卡
        self.level = Level()
        self.level.levels = self.hud.levels

        self.add(self.hud.gold_hud)
        self.add(self.hud.level_hud)
        self.add(self.hud.death_hud)

        # 添加按键状态
        self.key_pressed_left = False
        self.key_pressed_right = False
        self.key_pressed_up = False
        self.key_pressed_down = False

        self.reset()

        # 定期调用 self.update 函数
        # FPS frame per second 每秒帧数
        self.schedule(self.update)
예제 #5
0
 def setup_level(self):
     level = Level(self.config).create_empty_tiles()
     for x in range(0, level.width):
         for y in range(0, level.height):
             level.tiles[x][y].set_type('floor')
     for column in level.tiles:
         level.flattened_tiles.extend(column)
     return level
예제 #6
0
    def __init__(self) -> None:
        """
        Creates a data model which is used for a graphic representation of
        Sokoban level (QGraphics View framework). QGraphicsScene.keyPressEvent()
        is implemented to process various player input.
        """

        super().__init__()
        self._level = Level("levels/01/01")
        self.setSceneRect(
            QRectF(QPointF(0, 0), QPointF(self._level.width,
                                          self._level.height)))
        [
            self.addItem(item) for item in self._level.tiles +
            self._level.boxes + tuple([self._level.player])
        ]
        self._level.player.moveFinished.connect(self.unlockGame)
        self._gameLock = False
예제 #7
0
파일: editor.py 프로젝트: Fuyingxue/game1
    def reset_blocks(self):
        level = Level()
        level.levels = self.save_as

        # 通过文件生成块
        level.reset()
        # 删除已存在的块
        for b in self.blocks:
            self.remove(b.sprite)

        # 清空存储的块和坐标
        self.blocks.clear()
        # self.props.clear()

        # 添加新的块
        for b in level.blocks:
            self.add(b.sprite)
            self.blocks.append(b)
예제 #8
0
    def enter(self, app):
        self.app = app
        self.view = app.view

        self.palette = []
        for name in get_all('entities'):
            newtype = entities.get(name)
            self.palette.append(newtype)

        self.level = Level(app)

        self.mode = 't'
        self.mark = None
        self.delmark = None
        self.markmat = entities.get('mark')
        self.ground = entities.get('ground')

        print "CURRENT BRUSH:", self.brush
예제 #9
0
    def __init__(self, game_info, sound_manager):
        GameState.__init__(self, GameState.STATE_GAME, GameState.STATE_LOAD)

        self.game_info = game_info
        self.sound_manager = sound_manager

        self.game_info.set_timer_in_seconds(300)

        self.mario_game_time = -1
        self.world_shift = 0

        self.player = Player(self.sound_manager, game_info)

        self.active_sprite_list = pygame.sprite.Group()
        self.active_sprite_list.add(self.player)

        self.level = Level(game_info, self.player, self.sound_manager)

        if constants.DEBUG:
            self.debug_overlay = DebugOverlay(self.game_info, self.player)

        self.sound_manager.play_music(constants.MUSIC_MAIN_THEME)
 def load_level(level, team=None):
     if team is None:
         team = []
     return Level('maps/level_' + str(level) + '/', level, players=team)
예제 #11
0
 def test_move_entity_gets_stuck_on_unwalkable_tile(self):
     level = Level(self.config).create_empty_tiles()
     level.tiles[0][0].set_type('floor')
     entity = Entity(0, 0)
     entity.move(1, 0, level)
     self.assertEqual((0, 0), (entity.x, entity.y))
예제 #12
0
 def test_default_update_just_returns_true(self):
     self.assertTrue(Entity(0, 0).update(Level(self.config)))
예제 #13
0
Including my hygienic proclivities.''')

hallway = Room(
    'hallway', '''I stepped out of my house, and... what's this???
Instead of my front yard, I walk into a hallway that seems to extend forever.
Each side of the hallway is lined with room doors just like mine!
My hangover suddenly gave way to a sick stomach and wobbly knees.
... What's going on here???

To the west, I spotted an elevator that looks too old to function.
But it seemed to be the only thing that would get me out of this nightmare.''')

elevator = Room(
    'elevator',
    '''This elevator is operated with a steel lever.\nQuite old school.''')

spa = Room(
    'spa', '''I pulled the lever and headed down.
The counter kept counting, counting, counting down.
In God-knows-how-long, I exit the elevator,
and I'm greeted by a friendly Velociraptor in a tuxedo and a bow-tie.
"Welcome, Sirmadam!"''')

bedRoom.set_east(kitchen)
bedRoom.set_south(living)
bedRoom.set_north(hallway)
hallway.set_west(elevator)
elevator.set_south(spa)

level_one = Level(bedRoom)
예제 #14
0
 def on_click(self):
     self.window.show_view(Level(1))
예제 #15
0
def debug():
    cwd = os.getcwd()
    level1 = Level('../levels/007.xml')
    start(level1)
    print('stop')
예제 #16
0
 def setUp(self):
     self.level = Level({'width': 10, 'height': 10})
     self.collision_controller = CollisionController(self.level)