Example #1
0
    def __init__(self, screen, gameLevel=1):
        print("********** Init StageOneScene **********")
        self.allSprites = pygame.sprite.Group()  #allSprites 객체 생성
        self.now = "stageOne"
        self.screen = screen
        self.screenX, self.screenY = pygame.display.get_surface().get_size()
        self.enemyList = []
        self.stageStartTime = pygame.time.get_ticks()  # 스테이지 시작 시간
        self.gameClear = Object(self.screenX / 2, self.screenY / 2,
                                "assets/images/gameClear.png")
        self.stageClearYn = False
        self.gameLevel = gameLevel
        self.sceneManager = sceneManager.SceneManager()
        self.lastTime = 1600.0
        # 일반 적이 출현하는 정보를 적어놓는 리스트
        # Tuple 값 해석
        # 튜플 요소 0번째: 적이 출현하는 시간대 (초 단위)
        # 튜플 요소 1번째: 적의 Type (0: 일반 적, 1: 보스)
        # 튜플 요소 2번째: 적이 출현하는 x 좌표
        # 튜플 요소 3번째: 적이 출현하는 y 좌표
        self.enemyGenInfoList = [
            (1.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (1.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (5.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (8.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (9.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (9.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (12.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (14.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (15.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (15.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (17.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (18.5, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (20.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (22.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (22.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (23.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (28.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (31.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (32.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (32.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (35.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (37.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (38.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (38.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (40.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (41.5, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (43.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (45.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (45.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (46.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (49.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (50.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (50.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (52.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (55.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (56.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0),
            (56.0, 1, self.screenX / 2.0, -15.0),
        ]

        self.initializeBackground()
        self.initializeBGM()
        self.initializePlayer()
        self.initializeItem()
Example #2
0
class StageThreeBossEnemyHpBar:
    def __init__(self, spriteGroup, enemy):
        self.enemy = enemy
        self.enemyPrevHp = enemy.hp
        self.spriteGroup = spriteGroup

        self.hpGuageBarBg = Object(0, 0, "assets/images/hp_bar_guage2.png")
        self.hpGuageBar = Object(0, 0, "assets/images/hp_bar_guage.png")
        self.hpGuageBar2 = Object(0, 0, "assets/images/hp_bar_guage3.png")
        self.hpGuageBar3 = Object(0, 0, "assets/images/hp_bar_guage4.png")
        self.originalHpGuageBarImage = self.hpGuageBar.image
        self.originalHpGuageBar2Image = self.hpGuageBar2.image
        self.originalHpGuageBar3Image = self.hpGuageBar3.image
        self.hpGuageBarEdge = Object(0, 0, "assets/images/hp_bar_edge.png")

        screenSize = pygame.display.get_surface().get_size()
        self.hpGuageBarBg.x = screenSize[0] / 2 + 17
        self.hpGuageBarBg.y = 55
        self.hpGuageBar.x = screenSize[0] / 2 + 17
        self.hpGuageBar2.x = screenSize[0] / 2 + 17
        self.hpGuageBar3.x = screenSize[0] / 2 + 17
        self.originalHpGuageBarX = self.hpGuageBar.x
        self.hpGuageBar.y = 55
        self.hpGuageBar2.y = 55
        self.hpGuageBar3.y = 55
        self.hpGuageBarEdge.x = screenSize[0] / 2
        self.hpGuageBarEdge.y = 55

        self.spriteGroup.add(self.hpGuageBarBg)
        self.spriteGroup.add(self.hpGuageBar)
        self.spriteGroup.add(self.hpGuageBar2)
        self.spriteGroup.add(self.hpGuageBar3)
        self.spriteGroup.add(self.hpGuageBarEdge)
        self.hpGuageBarBg.update()
        self.hpGuageBar.update()
        self.hpGuageBar2.update()
        self.hpGuageBar3.update()
        self.hpGuageBarEdge.update()

    def __del__(self):
        self.spriteGroup.remove(self.hpGuageBarBg)
        self.spriteGroup.remove(self.hpGuageBar)
        self.spriteGroup.remove(self.hpGuageBar2)
        self.spriteGroup.remove(self.hpGuageBar3)
        self.spriteGroup.remove(self.hpGuageBarEdge)

    def update(self):
        # 적 Hp에 변화가 생겼다면
        if self.enemyPrevHp is not self.enemy.hp:
            if self.enemy.hp >= 105:
                hpGuageBarWidth = int(
                    self.lerp(self.originalHpGuageBar3Image.get_rect().width,
                              0, 1.0 - (self.enemy.hp - 105) / 75))
                self.hpGuageBar3.image = pygame.transform.scale(
                    self.originalHpGuageBar3Image,
                    (hpGuageBarWidth,
                     self.originalHpGuageBar3Image.get_rect().height))
                self.hpGuageBar3.x = self.originalHpGuageBarX - (
                    self.originalHpGuageBar3Image.get_rect().width -
                    self.hpGuageBar3.image.get_rect().width) / 2
            elif self.enemy.hp >= 30:
                hpGuageBarWidth = int(
                    self.lerp(self.originalHpGuageBar2Image.get_rect().width,
                              0, 1.0 - (self.enemy.hp - 30) / 75))
                self.hpGuageBar2.image = pygame.transform.scale(
                    self.originalHpGuageBar2Image,
                    (hpGuageBarWidth,
                     self.originalHpGuageBar2Image.get_rect().height))
                self.hpGuageBar2.x = self.originalHpGuageBarX - (
                    self.originalHpGuageBar2Image.get_rect().width -
                    self.hpGuageBar2.image.get_rect().width) / 2
            else:
                hpGuageBarWidth = int(
                    self.lerp(self.originalHpGuageBarImage.get_rect().width, 0,
                              1.0 - self.enemy.hp / 30))
                self.hpGuageBar.image = pygame.transform.scale(
                    self.originalHpGuageBarImage,
                    (hpGuageBarWidth,
                     self.originalHpGuageBarImage.get_rect().height))
                self.hpGuageBar.x = self.originalHpGuageBarX - (
                    self.originalHpGuageBarImage.get_rect().width -
                    self.hpGuageBar.image.get_rect().width) / 2
            self.enemyPrevHp = self.enemy.hp

    def lerp(self, fromValue, toValue, t):
        return fromValue + (toValue - fromValue) * t
Example #3
0
    def update(self):
        if self.image is not None:
            self.rect = self.image.get_rect()
            self.rect.center = (self.x * 0.5, self.y * 0.5)

        self.mousePos = pygame.mouse.get_pos()
        click = pygame.mouse.get_pressed()

        if self.sceneManager.gameLevel == 1:
            self.selectOption.x = self.menu[0].x + 150
            self.selectOption.y = self.menu[0].y
        elif self.sceneManager.gameLevel == 2:
            self.selectOption.x = self.menu[1].x + 150
            self.selectOption.y = self.menu[1].y
        elif self.sceneManager.gameLevel == 3:
            self.selectOption.x = self.menu[2].x + 150
            self.selectOption.y = self.menu[2].y
        self.selectOption.update()

        for i in range(4):
            if i == 0:
                if 155 < self.mousePos[0] < 325 and 260 < self.mousePos[
                        1] < 310:
                    self.menu[i] = (Object(
                        0, 0, "assets/images/buttonOptionsEasyHover.png"))

                    if click[0] == 1:
                        self.sceneManager.gameLevel = 1
                else:
                    self.menu[i] = (Object(0, 0, self.buttonImage1))
            elif i == 1:
                if 57 < self.mousePos[0] < 423 and 370 < self.mousePos[1] < 420:
                    self.menu[i] = (Object(
                        0, 0, "assets/images/buttonOptionsNormalHover.png"))

                    if click[0] == 1:
                        self.sceneManager.gameLevel = 2
                else:
                    self.menu[i] = (Object(0, 0, self.buttonImage2))
            elif i == 2:
                if 173 < self.mousePos[0] < 307 and 480 < self.mousePos[
                        1] < 530:
                    self.menu[i] = (Object(
                        0, 0, "assets/images/buttonOptionsHardHover.png"))

                    if click[0] == 1:
                        self.sceneManager.gameLevel = 3
                else:
                    self.menu[i] = (Object(0, 0, self.buttonImage3))
            else:
                if 173 < self.mousePos[0] < 307 and 580 < self.mousePos[
                        1] < 630:
                    self.menu[i] = (Object(
                        0, 0, "assets/images/buttonQuitHover.png"))

                    if click[0] == 1:
                        self.sceneManager.setScene(
                            titleScene.TitleScene(self.screen))
                else:
                    self.menu[i] = (Object(0, 0, self.buttonImage4))

            self.menu[i].x = 0.5 * self.screenX
            self.menu[i].y = 0.35 * self.screenY + i * 110
            self.menu[i].update()