예제 #1
0
    def loadStage(self, number):
        self.eraseStage()
        self.currentStage = [[] for i in range(0, len(self.mapData[number]))]
        self.blankList = []
        self.step = 0
        goalNum = 0
        self.nextButton.setEnabled(False)
        if number == 0:
            self.backButton.setEnabled(False)
        else:
            self.backButton.setEnabled(True)

        gc.collect()

        self.stageText.setText('Stage: ' + str(number + 1))
        self.stepText.setText('Step: ' + str(self.step))
        self.currentLevel = number

        # 게임 화면을 중앙으로
        x = (self.width - Object.size * len(self.mapData[number][0])) * 0.5
        y = (self.height - Object.size * len(self.mapData[number])) * 0.5
        Object.setPositionOffset(x, y + 40)

        for y in range(0, len(self.mapData[number])):
            for x in range(0, len(self.mapData[number][y])):
                # 일단 모든 맵을 공백으로 채운다. blankList에 blank를 추가한다.
                print(type(self.mapData[number][y][x]), type(EObjects.EPlayer),
                      y, x)
                if self.mapData[number][y][x] != EObjects.EBlankWithNoGlass:
                    if randomPercent(0.1):
                        blank = Blank(x, y, self.blankPixmap1)
                    elif randomPercent(0.05):
                        blank = Blank(x, y, self.blankPixmap2)
                    elif randomPercent(0.02):
                        blank = Blank(x, y, self.blankPixmap3)
                    else:
                        blank = Blank(x, y, self.blankPixmap0)
                    self.blankList.append(blank)
                    blank.lower()
                    # pass
                    self.background.stackUnder(blank)

                if self.mapData[number][y][x] == EObjects.EBox:
                    box = Box(x, y, self.boxPixmap)
                    self.currentStage[y].append(box)
                    box.raise_()
                elif self.mapData[number][y][x] == EObjects.EPlayer:
                    playerStartX = x
                    playerStartY = y
                    print('Player found!')

                    blank = Blank(x, y, self.blankPixmap0)
                    self.currentStage[y].append(blank)
                    blank.erase()
                elif self.mapData[number][y][x] == EObjects.EWall:
                    self.currentStage[y].append(Wall(x, y, self.wallPixmap))
                elif self.mapData[number][y][x] == EObjects.EButton:
                    goalNum += 1
                    self.currentStage[y].append(Button(x, y,
                                                       self.buttonPixmap))
                elif self.mapData[number][y][
                        x] == EObjects.EBlank or self.mapData[number][y][
                            x] == EObjects.EBlankWithNoGlass:
                    blank = Blank(x, y, self.blankPixmap0)
                    self.currentStage[y].append(blank)
                    blank.erase()

        self.goal = goalNum
        self.goalText.setText('Goal: ' + str(self.goal))

        # ordering을 위해 player는 마지막에 생성한다!
        App.player = Player(playerStartX, playerStartY, self.playerPixmap)