Esempio n. 1
0
class TestFlappyBird(QtWidgets.QWidget):
    def __init__(self):
        super(TestFlappyBird, self).__init__()
        self.initUI()
        self.velocity = 0.0

        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(40)

    def initUI(self):

        self.flappyBird = FlappyBird(self)
        self.setFocusPolicy(QtCore.Qt.StrongFocus)  # get key up event
        self.mainLayout = QtWidgets.QVBoxLayout(self)
        self.mainLayout.addWidget(self.flappyBird)

        self.velLabel = QtWidgets.QLabel("0.0")
        self.mainLayout.addWidget(self.velLabel)

    def update(self):
        self.flappyBird.update(0.0, self.velocity)
        self.velLabel.setText(str(self.velocity))

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Up:
            self.velocity += 20
        elif event.key() == QtCore.Qt.Key_Down:
            self.velocity -= 20
        event.accept()
Esempio n. 2
0
    def initUI(self):

        self.flappyBird = FlappyBird(self)
        self.setFocusPolicy(QtCore.Qt.StrongFocus)  # get key up event
        self.mainLayout = QtWidgets.QVBoxLayout(self)
        self.mainLayout.addWidget(self.flappyBird)

        self.velLabel = QtWidgets.QLabel("0.0")
        self.mainLayout.addWidget(self.velLabel)
Esempio n. 3
0
def createGame(name, disable):
    if name == "Flappy Bird":
        return FlappyBird(500, 800, disable)
    else:
        print("Unsupported game")
        return None
Esempio n. 4
0
def Train(config_file):

    game = FlappyBird(500, 800)
    game.Train(config_file)
Esempio n. 5
0
    def __init__(self):
        SceneBase.__init__(self)

        self.dead_bgm = pygame.mixer.Sound('./Assets/You_Are_My_Girl_cut.wav')
        self.jump_bgm = pygame.mixer.Sound('./Assets/jump.wav')
        self.start_bgm = pygame.mixer.Sound('./Assets/start.wav')

        self.background = pygame.image.load('./Assets/ingame_background.png')
        self.background = pygame.transform.scale(self.background,
                                                 (SCREEN_WIDTH, SCREEN_HEIGHT))
        self.background_size = self.background.get_size()
        self.background_rect = self.background.get_rect()
        self.screen = pygame.display.set_mode(self.background_size)
        self.w, h = self.background_size

        self.first_bg_x = 0
        self.second_bg_x = self.w

        self.cover = pygame.image.load('./Assets/cafebene_bg.png')
        self.cover = pygame.transform.scale(self.cover,
                                            (SCREEN_WIDTH, SCREEN_HEIGHT))
        self.tit_ready = pygame.image.load('./Assets/ready.png')
        self.tit_ready = pygame.transform.scale(self.tit_ready,
                                                (TITLE_WIDTH, TITLE_HEIGHT))
        self.tit_gameover = pygame.image.load('./Assets/gameover.png')
        self.tit_gameover = pygame.transform.scale(self.tit_gameover,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))
        self.tit_cafebene = pygame.image.load('./Assets/cafebene.png')
        self.tit_cafebene = pygame.transform.scale(self.tit_cafebene,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))

        self.sprite_sheet = SpriteSheet.SpriteSheet('./Assets/pipe.png')
        self.top_pipe = self.sprite_sheet.get_image2(28, 0, 26, 160)
        self.top_pipe = pygame.transform.scale(self.top_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        self.bot_pipe = self.sprite_sheet.get_image2(0, 0, 26, 160)
        self.bot_pipe = pygame.transform.scale(self.bot_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        self.top_pipe_size = self.top_pipe.get_size()
        self.top_pipe_rect = self.top_pipe.get_rect()
        self.bot_pipe_size = self.bot_pipe.get_size()
        self.bot_pipe_rect = self.bot_pipe.get_rect()

        self.flappybird = FlappyBird()

        self.ranking_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.mini_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.big_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 150)

        self.game_loop = True
        self.in_game_loop = False
        self.isStart = False
        self.isMusic = False
        self.isAlive = True

        self.pipe_y = random.randint(0, BETWEEN_PIPE_MIN_HEIGHT) * (-1)
        self.movement_cnt = 0
        self.movement_score = 0

        self.is_next_stage = False
        self.is_response_ranking = False
        self.response_ranking = []
Esempio n. 6
0
class GameScene(SceneBase, pygame.sprite.Sprite):
    def __init__(self):
        SceneBase.__init__(self)

        self.dead_bgm = pygame.mixer.Sound('./Assets/You_Are_My_Girl_cut.wav')
        self.jump_bgm = pygame.mixer.Sound('./Assets/jump.wav')
        self.start_bgm = pygame.mixer.Sound('./Assets/start.wav')

        self.background = pygame.image.load('./Assets/ingame_background.png')
        self.background = pygame.transform.scale(self.background,
                                                 (SCREEN_WIDTH, SCREEN_HEIGHT))
        self.background_size = self.background.get_size()
        self.background_rect = self.background.get_rect()
        self.screen = pygame.display.set_mode(self.background_size)
        self.w, h = self.background_size

        self.first_bg_x = 0
        self.second_bg_x = self.w

        self.cover = pygame.image.load('./Assets/cafebene_bg.png')
        self.cover = pygame.transform.scale(self.cover,
                                            (SCREEN_WIDTH, SCREEN_HEIGHT))
        self.tit_ready = pygame.image.load('./Assets/ready.png')
        self.tit_ready = pygame.transform.scale(self.tit_ready,
                                                (TITLE_WIDTH, TITLE_HEIGHT))
        self.tit_gameover = pygame.image.load('./Assets/gameover.png')
        self.tit_gameover = pygame.transform.scale(self.tit_gameover,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))
        self.tit_cafebene = pygame.image.load('./Assets/cafebene.png')
        self.tit_cafebene = pygame.transform.scale(self.tit_cafebene,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))

        self.sprite_sheet = SpriteSheet.SpriteSheet('./Assets/pipe.png')
        self.top_pipe = self.sprite_sheet.get_image2(28, 0, 26, 160)
        self.top_pipe = pygame.transform.scale(self.top_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        self.bot_pipe = self.sprite_sheet.get_image2(0, 0, 26, 160)
        self.bot_pipe = pygame.transform.scale(self.bot_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        self.top_pipe_size = self.top_pipe.get_size()
        self.top_pipe_rect = self.top_pipe.get_rect()
        self.bot_pipe_size = self.bot_pipe.get_size()
        self.bot_pipe_rect = self.bot_pipe.get_rect()

        self.flappybird = FlappyBird()

        self.ranking_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.mini_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.big_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 150)

        self.game_loop = True
        self.in_game_loop = False
        self.isStart = False
        self.isMusic = False
        self.isAlive = True

        self.pipe_y = random.randint(0, BETWEEN_PIPE_MIN_HEIGHT) * (-1)
        self.movement_cnt = 0
        self.movement_score = 0

        self.is_next_stage = False
        self.is_response_ranking = False
        self.response_ranking = []

    def ProcessInput(self, events, pressed_keys):
        for event in events:
            if event.type == pygame.QUIT:
                self.game_loop = False
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if self.isAlive:
                    if self.in_game_loop:
                        self.jump_bgm.play()
                    if not self.in_game_loop:
                        self.start_bgm.play()
                        self.in_game_loop = True
                        self.isStart = True
                        #[3] 2-4 클릭하면 점프한다
                        self.flappybird.permitJump()

                    #[3] 2-2 가만있으면 떨어진다
                    self.flappybird.action()

                elif not self.isAlive:
                    """
                    if not self.is_next_stage:
                        global UserName
                        url = "/gameover"
                        params = { 'ID': UserName,
                                    'Score': self.movement_score        
                        }
                        r = requests.post(url, params=params)
                        print(r.status_code, r.reason)
                        url = "/ranking"
                        r = requests.get(url)
                        print(r.status_code, r.reason)
                        self.response_ranking = json.loads(r.text)
                        self.is_next_stage = True
                        self.is_response_ranking = True
                    else:
                    """
                    #[3] 4-1 죽은 뒤, 클릭하면 타이틀 화면으로 !!
                    self.dead_bgm.stop()
                    self.SwitchToScene(TitleScene())

    def Render(self, screen):
        if self.game_loop:
            if self.in_game_loop:
                #[3] 3-2 점수판 점수가 증가한다
                self.movement_cnt += 1
                if self.movement_cnt > 10:
                    self.movement_score += 2
                    self.movement_cnt = 0

                #[3] 1-1 왼쪽으로 이동한다
                self.second_bg_x -= 5
                self.first_bg_x -= 5
                if self.first_bg_x < -self.w:
                    self.first_bg_x = self.w
                    #[3] 4-2 파이프 위치가 바뀐다
                    self.pipe_y = random.randint(
                        0, BETWEEN_PIPE_MIN_HEIGHT) * (-1)
                if self.second_bg_x < -self.w:
                    self.second_bg_x = self.w

            self.str_score = str(self.movement_score)
            self.mini_score_rend = self.mini_score_font.render(
                self.str_score, True, (255, 255, 255))
            self.big_score_rend = self.big_score_font.render(
                self.str_score, True, (255, 255, 255))

            #[3] 2-1 새가 보인다
            self.flappybird.update()

            #[3] 2-5 파이프에 부딪히면 새가 죽는다
            if pygame.Rect(self.first_bg_x, self.pipe_y, PIPE_WIDTH,
                           PIPE_HEIGHT).colliderect(
                               self.flappybird.get_rect()):
                self.FlappyBirdDie()

            #[3] 2-5 파이프에 부딪히면 새가 죽는다
            if pygame.Rect(self.first_bg_x,
                           self.pipe_y + BETWEEN_PIPE + PIPE_HEIGHT,
                           PIPE_WIDTH, PIPE_HEIGHT).colliderect(
                               self.flappybird.get_rect()):
                self.FlappyBirdDie()

            if self.flappybird.get_rect().y > SCREEN_HEIGHT + 10:
                self.FlappyBirdDie()
                self.flappybird.stop()

        if self.in_game_loop:
            self.screen.blit(self.background, (self.first_bg_x, 0))
            self.screen.blit(self.background, (self.second_bg_x, 0))
            self.screen.blit(
                self.top_pipe,
                (self.first_bg_x, self.pipe_y + BETWEEN_PIPE + PIPE_HEIGHT))
            self.screen.blit(self.bot_pipe, (self.first_bg_x, self.pipe_y))

        #[3] 2-1 새가 보인다
        self.screen.blit(self.flappybird.image,
                         (self.flappybird.rect.x, self.flappybird.rect.y))

        #[3] 3-1 점수판이 보인다
        if self.isStart and self.isAlive:
            self.screen.blit(self.mini_score_rend, (10, 10))

        #[3] 2-3 시작 전 화면
        if not self.isStart:
            self.screen.blit(self.cover, (0, 0))
            self.screen.blit(self.tit_ready, (25, SCREEN_HEIGHT // 4))

        #[3] 2-3 죽은 뒤 화면
        if not self.isAlive:
            self.screen.blit(self.cover, (0, 0))
            self.screen.blit(self.tit_gameover, (25, SCREEN_HEIGHT // 4))
            self.screen.blit(self.tit_cafebene, (25, SCREEN_HEIGHT // 4 * 3))
            #[3] 3-3 점수판이 보인다
            self.screen.blit(self.big_score_rend,
                             (SCREEN_WIDTH // 3, (SCREEN_HEIGHT // 2) - 20))
        """
        #[3] 2-3 죽은 뒤 화면
        if not self.isAlive:
            self.screen.blit(self.cover,(0,0))
            if not self.is_response_ranking:
                self.screen.blit(self.tit_gameover,(25,SCREEN_HEIGHT//4))
                self.screen.blit(self.tit_cafebene,(25,SCREEN_HEIGHT//4*3))
                ##3-2 점수판이 보인다
                self.screen.blit(self.big_score_rend, (SCREEN_WIDTH //3, (SCREEN_HEIGHT//2)-20))
            else:
                i = 0
                for id, score in self.response_ranking:
                    font_id = self.ranking_font.render(id, True, (255, 255, 255))
                    font_score = self.ranking_font.render(str(score), True, (255, 255, 255))
                    font_title = self.ranking_font.render("Top 5", True, (252, 159, 73))
                    self.screen.blit(font_title,(50,100))
                    self.screen.blit(font_id,(40,180+60*i))
                    self.screen.blit(font_score,(SCREEN_WIDTH //2+70,180+60*i))
                    i += 1
        """

    def FlappyBirdDie(self):
        if not self.isMusic:
            self.dead_bgm.play()
            self.isMusic = True
        self.in_game_loop = False
        self.isAlive = False
        self.flappybird.dead()
Esempio n. 7
0
    def __init__(self):
        SceneBase.__init__(self)
        # 죽었을때, 점프할때, 시작할때 음악파일 불러옴
        self.dead_bgm = pygame.mixer.Sound('./Assets/You_Are_My_Girl_cut.wav')
        self.jump_bgm = pygame.mixer.Sound('./Assets/jump.wav')
        self.start_bgm = pygame.mixer.Sound('./Assets/start.wav')

        # 배경화면 불러와서 게임화면에 맞게 조정
        self.background = pygame.image.load('./Assets/ingame_background.png')
        self.background = pygame.transform.scale(self.background,
                                                 (SCREEN_WIDTH, SCREEN_HEIGHT))

        # 배경화면 크기와 위치 저장
        self.background_size = self.background.get_size()
        self.background_rect = self.background.get_rect()

        # 게임화면에 맞게 크기 지정
        self.screen = pygame.display.set_mode(self.background_size)
        self.w, h = self.background_size

        # 첫번째 배경과 두번째 배경의 x 좌표 지정
        self.first_bg_x = 0
        self.second_bg_x = self.w

        # 게임 화면 시작 전, 후 커버 불러와서 화면에 맞게 조정
        self.cover = pygame.image.load('./Assets/cafebene_bg.png')
        self.cover = pygame.transform.scale(self.cover,
                                            (SCREEN_WIDTH, SCREEN_HEIGHT))

        # 시작 전 대기 타이틀 불러와서 화면에 맞게 조정
        self.tit_ready = pygame.image.load('./Assets/ready.png')
        self.tit_ready = pygame.transform.scale(self.tit_ready,
                                                (TITLE_WIDTH, TITLE_HEIGHT))
        # 죽은 후 게임오버 타이틀 불러와서 화면에 맞게 조정
        self.tit_gameover = pygame.image.load('./Assets/gameover.png')
        self.tit_gameover = pygame.transform.scale(self.tit_gameover,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))
        # 죽은 후 카페베네 타이틀 불러와서 화면에 맞게 조정
        self.tit_cafebene = pygame.image.load('./Assets/cafebene.png')
        self.tit_cafebene = pygame.transform.scale(self.tit_cafebene,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))

        # 파이프 이미지 불러옴
        self.sprite_sheet = SpriteSheet.SpriteSheet('./Assets/pipe.png')
        # 28, 0 좌표에서 너비 26, 높이 160만큼 잘라서 위쪽 파이프로 지정
        self.top_pipe = self.sprite_sheet.get_image2(28, 0, 26, 160)
        self.top_pipe = pygame.transform.scale(self.top_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        # 0,0 좌표에서 너비 26, 높이 160만큼 잘라서 아래쪽 파이프로 지정
        self.bot_pipe = self.sprite_sheet.get_image2(0, 0, 26, 160)
        self.bot_pipe = pygame.transform.scale(self.bot_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        # 각 파이프의 크기와 위치 지정
        self.top_pipe_size = self.top_pipe.get_size()
        self.top_pipe_rect = self.top_pipe.get_rect()
        self.bot_pipe_size = self.bot_pipe.get_size()
        self.bot_pipe_rect = self.bot_pipe.get_rect()

        # 플래피버드 생성(초기화)
        self.flappybird = FlappyBird()

        # 랭킹 보여줄 때, 작은 점수, 큰 점수 폰트 스타일과 크기 지정
        self.ranking_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.mini_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.big_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 150)

        # 게임 진행에 필요한 ON / OFF 스위치 지정
        self.game_loop = True  # 메인 게임루프 스위치
        self.in_game_loop = False  # 작은 게임루프 스위치
        self.isStart = False  # 시작 전 스위치
        self.isMusic = False  # 음악 스위치 (중복 실행 방지)
        self.isAlive = True  # 플래피버드 생존여부 스위치
        self.is_next_stage = False  # 다음 스테이지 이동 스위치
        self.is_response_ranking = False  # 랭킹 점수 스위치
        self.response_ranking = []
        # 랭킹 점수 리스트

        # 초기에 파이프 높이 랜덤 지정
        self.pipe_y = random.randint(0, BETWEEN_PIPE_MIN_HEIGHT) * (-1)

        # 움직이는 카운트와 점수 초기화
        self.movement_cnt = 0
        self.movement_score = 0
Esempio n. 8
0
class GameScene(SceneBase, pygame.sprite.Sprite):
    def __init__(self):
        SceneBase.__init__(self)
        # 죽었을때, 점프할때, 시작할때 음악파일 불러옴
        self.dead_bgm = pygame.mixer.Sound('./Assets/You_Are_My_Girl_cut.wav')
        self.jump_bgm = pygame.mixer.Sound('./Assets/jump.wav')
        self.start_bgm = pygame.mixer.Sound('./Assets/start.wav')

        # 배경화면 불러와서 게임화면에 맞게 조정
        self.background = pygame.image.load('./Assets/ingame_background.png')
        self.background = pygame.transform.scale(self.background,
                                                 (SCREEN_WIDTH, SCREEN_HEIGHT))

        # 배경화면 크기와 위치 저장
        self.background_size = self.background.get_size()
        self.background_rect = self.background.get_rect()

        # 게임화면에 맞게 크기 지정
        self.screen = pygame.display.set_mode(self.background_size)
        self.w, h = self.background_size

        # 첫번째 배경과 두번째 배경의 x 좌표 지정
        self.first_bg_x = 0
        self.second_bg_x = self.w

        # 게임 화면 시작 전, 후 커버 불러와서 화면에 맞게 조정
        self.cover = pygame.image.load('./Assets/cafebene_bg.png')
        self.cover = pygame.transform.scale(self.cover,
                                            (SCREEN_WIDTH, SCREEN_HEIGHT))

        # 시작 전 대기 타이틀 불러와서 화면에 맞게 조정
        self.tit_ready = pygame.image.load('./Assets/ready.png')
        self.tit_ready = pygame.transform.scale(self.tit_ready,
                                                (TITLE_WIDTH, TITLE_HEIGHT))
        # 죽은 후 게임오버 타이틀 불러와서 화면에 맞게 조정
        self.tit_gameover = pygame.image.load('./Assets/gameover.png')
        self.tit_gameover = pygame.transform.scale(self.tit_gameover,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))
        # 죽은 후 카페베네 타이틀 불러와서 화면에 맞게 조정
        self.tit_cafebene = pygame.image.load('./Assets/cafebene.png')
        self.tit_cafebene = pygame.transform.scale(self.tit_cafebene,
                                                   (TITLE_WIDTH, TITLE_HEIGHT))

        # 파이프 이미지 불러옴
        self.sprite_sheet = SpriteSheet.SpriteSheet('./Assets/pipe.png')
        # 28, 0 좌표에서 너비 26, 높이 160만큼 잘라서 위쪽 파이프로 지정
        self.top_pipe = self.sprite_sheet.get_image2(28, 0, 26, 160)
        self.top_pipe = pygame.transform.scale(self.top_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        # 0,0 좌표에서 너비 26, 높이 160만큼 잘라서 아래쪽 파이프로 지정
        self.bot_pipe = self.sprite_sheet.get_image2(0, 0, 26, 160)
        self.bot_pipe = pygame.transform.scale(self.bot_pipe,
                                               (PIPE_WIDTH, PIPE_HEIGHT))
        # 각 파이프의 크기와 위치 지정
        self.top_pipe_size = self.top_pipe.get_size()
        self.top_pipe_rect = self.top_pipe.get_rect()
        self.bot_pipe_size = self.bot_pipe.get_size()
        self.bot_pipe_rect = self.bot_pipe.get_rect()

        # 플래피버드 생성(초기화)
        self.flappybird = FlappyBird()

        # 랭킹 보여줄 때, 작은 점수, 큰 점수 폰트 스타일과 크기 지정
        self.ranking_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.mini_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 50)
        self.big_score_font = pygame.font.Font("./Assets/BRLNSB.ttf", 150)

        # 게임 진행에 필요한 ON / OFF 스위치 지정
        self.game_loop = True  # 메인 게임루프 스위치
        self.in_game_loop = False  # 작은 게임루프 스위치
        self.isStart = False  # 시작 전 스위치
        self.isMusic = False  # 음악 스위치 (중복 실행 방지)
        self.isAlive = True  # 플래피버드 생존여부 스위치
        self.is_next_stage = False  # 다음 스테이지 이동 스위치
        self.is_response_ranking = False  # 랭킹 점수 스위치
        self.response_ranking = []
        # 랭킹 점수 리스트

        # 초기에 파이프 높이 랜덤 지정
        self.pipe_y = random.randint(0, BETWEEN_PIPE_MIN_HEIGHT) * (-1)

        # 움직이는 카운트와 점수 초기화
        self.movement_cnt = 0
        self.movement_score = 0

    def ProcessInput(self, events, pressed_keys):
        for event in events:
            if event.type == pygame.QUIT:
                self.game_loop = False
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if self.isAlive:
                    # 게임 시작 후에 클릭 시 점프 음악 재생
                    if self.in_game_loop:
                        self.jump_bgm.play()

                    if not self.in_game_loop:
                        # 게임 시작 전에 클릭 시 출발 음악 재생
                        self.start_bgm.play()
                        # 작은 게임 시작 루프 재생
                        self.in_game_loop = True
                        self.isStart = True
                        # 클릭 시 플래피버드가 점프하도록 허용
                        self.flappybird.permitJump()

                    # 플래피버드가 날개짓을 시작하고 가만있으면 떨어지도록
                    self.flappybird.action()

                elif not self.isAlive:
                    if not self.is_next_stage:
                        # 글로벌 변수 사용 선언
                        global UserName
                        # gameover 시 서버에 유저가 LoginScene에서 입력한 이름과 현재 점수를 보냄
                        url = "http://donzurewebtesting0530.azurewebsites.net/gameover"
                        params = {'ID': UserName, 'Score': self.movement_score}
                        r = requests.post(url, params=params)
                        # 제대로 정상 처리되었는지 반환 코드와 결과 출력(200코드는 정상)
                        print(r.status_code, r.reason)
                        # 현재 TOP 5 랭커의 점수들을 요청
                        url = "http://donzurewebtesting0530.azurewebsites.net/ranking"
                        r = requests.get(url)
                        # 제대로 정상 처리되었는지 반환 코드와 결과 출력(200코드는 정상)
                        print(r.status_code, r.reason)
                        # 반환 결과 값을 저장
                        self.response_ranking = json.loads(r.text)
                        # 다음 장면으로 넘어갈 수있도록 허용
                        self.is_next_stage = True
                        # 랭킹 점수 보여주도록 허용
                        self.is_response_ranking = True
                    else:
                        # 죽은 뒤 재생되던 음악 정지
                        self.dead_bgm.stop()
                        # 다음화면으로 이동
                        self.SwitchToScene(TitleScene())

    def Render(self, screen):
        if self.game_loop:
            if self.in_game_loop:
                # 너무 빠르게 점수가 올라가지 않도록 연기(Delay) 시킴
                self.movement_cnt += 1
                # movement_cnt가 10을 채울때마다 점수를 2점 올리고 movement_cnt를 0으로 초기화
                if self.movement_cnt > 10:
                    self.movement_score += 2
                    self.movement_cnt = 0

                # 첫번째와 두번째 배경화면 왼쪽으로 5포인트씩 이동
                self.second_bg_x -= 5
                self.first_bg_x -= 5

                # 왼쪽으로 첫번째 배경화면이 넘어가면 다시 오른쪽으로 넘겨줌
                if self.first_bg_x < -self.w:
                    self.first_bg_x = self.w
                    # 파이프 간격 위치를 랜덤으로 조정
                    self.pipe_y = random.randint(
                        0, BETWEEN_PIPE_MIN_HEIGHT) * (-1)
                # 왼쪽으로 두번째 배경화면이 넘어가면 다시 오른쪽으로 넘겨줌
                if self.second_bg_x < -self.w:
                    self.second_bg_x = self.w

            # 현재 점수를 스트링으로 만듬
            self.str_score = str(self.movement_score)
            # 작은 점수(게임 중)와 큰 점수(게임 오버)의 값을 입력하고 색깔(흰색, RGB: 255/255/255) 입력
            self.mini_score_rend = self.mini_score_font.render(
                self.str_score, True, (255, 255, 255))
            self.big_score_rend = self.big_score_font.render(
                self.str_score, True, (255, 255, 255))

            # 플래피버드의 애니메이션 갱신
            self.flappybird.update()

            # 위 파이프에 플래피버드가 부딪히면 죽음 처리
            if pygame.Rect(self.first_bg_x, self.pipe_y, PIPE_WIDTH,
                           PIPE_HEIGHT).colliderect(
                               self.flappybird.get_rect()):
                self.FlappyBirdDie()

            # 아래 파이프에 플래피버드가 부딪히면 죽음 처리
            if pygame.Rect(self.first_bg_x,
                           self.pipe_y + BETWEEN_PIPE + PIPE_HEIGHT,
                           PIPE_WIDTH, PIPE_HEIGHT).colliderect(
                               self.flappybird.get_rect()):
                self.FlappyBirdDie()

            # 게임 화면 아래로 내려가면 죽음 처리
            if self.flappybird.get_rect().y > SCREEN_HEIGHT + 10:
                self.FlappyBirdDie()
                self.flappybird.stop()
            # 게임 화면 위로 올라가면 죽음 처리
            if self.flappybird.get_rect().y < -50:
                self.FlappyBirdDie()

        if self.in_game_loop:
            # 첫번째와 두번째 배경화면 다시 그리기
            self.screen.blit(self.background, (self.first_bg_x, 0))
            self.screen.blit(self.background, (self.second_bg_x, 0))
            # 위 파이프와 아래 파이프 다시 그리기
            self.screen.blit(
                self.top_pipe,
                (self.first_bg_x, self.pipe_y + BETWEEN_PIPE + PIPE_HEIGHT))
            self.screen.blit(self.bot_pipe, (self.first_bg_x, self.pipe_y))

        # 플래피버드를 다시 그리기
        self.screen.blit(self.flappybird.image,
                         (self.flappybird.rect.x, self.flappybird.rect.y))

        # 게임 중이고 플래피버드가 살아있을 때, 작은 점수 그리기
        if self.isStart and self.isAlive:
            self.screen.blit(self.mini_score_rend, (10, 10))

        # 게임 시작 전에 커버와 게임 대기 타이틀 표시
        if not self.isStart:
            self.screen.blit(self.cover, (0, 0))
            self.screen.blit(self.tit_ready, (25, SCREEN_HEIGHT // 4))

        #[3] 2-3 죽은 뒤 화면
        if not self.isAlive:
            # 죽었을 때 커버 그리기
            self.screen.blit(self.cover, (0, 0))
            if not self.is_response_ranking:
                # 게임오버 타이틀과 카페베네 배너 다시 그리기
                self.screen.blit(self.tit_gameover, (25, SCREEN_HEIGHT // 4))
                self.screen.blit(self.tit_cafebene,
                                 (25, SCREEN_HEIGHT // 4 * 3))
                # 큰 점수 표시
                self.screen.blit(self.big_score_rend,
                                 (SCREEN_WIDTH // 3,
                                  (SCREEN_HEIGHT // 2) - 20))
            else:
                i = 0
                for id, score in self.response_ranking:
                    # Top 5 타이틀 내용과 색깔(흰색, RGB: 252/159/73) 지정
                    font_title = self.ranking_font.render(
                        "Top 5", True, (252, 159, 73))
                    # 사용자의 아이디(이름) 내용과 색깔(흰색, RGB: 255/255/255) 지정
                    font_id = self.ranking_font.render(id, True,
                                                       (255, 255, 255))
                    # 사용자의 점수 내용과 색깔(흰색, RGB: 255/255/255) 지정
                    font_score = self.ranking_font.render(
                        str(score), True, (255, 255, 255))

                    # Top 5 타이틀 내용과 좌표(50,100)으로 그리기
                    self.screen.blit(font_title, (50, 100))
                    # 사용자의 이름 내용과 좌표(40,180+60*i)으로 그리기
                    self.screen.blit(font_id, (40, 180 + 60 * i))
                    # 사용자의 점수 내용과 좌표(SCREEN_WIDTH //2+70,180+60*i)으로 그리기
                    self.screen.blit(font_score,
                                     (SCREEN_WIDTH // 2 + 70, 180 + 60 * i))
                    # 다음 랭커의 정보 받아오도록
                    i += 1

    def FlappyBirdDie(self):
        # 현재 음악 재생중이 아닐때
        if not self.isMusic:
            # 죽은 음악 실행
            self.dead_bgm.play()
            # 현재 음악 재생 중 스위치 ON
            self.isMusic = True
        # 작은 게임 루프 스위치 OFF
        self.in_game_loop = False

        # 플래피버드가 죽었으므로 스위치 OFF
        self.isAlive = False
        self.flappybird.dead()