본문 바로가기

Minding's Programming/Pygame

[Pygame] 11. 게임오버 화면 추가 및 게임 종료하기

728x90
반응형

목표

  • 공이 바닥에 닿았을 때 게임오버 텍스트 출력하기
  • 텍스트 출력 후 자동으로 게임 종료시키기

펑고게임 코드에 적용시키기

기존 펑고게임 코드에 게임오버 텍스트 및 게임 종료코드를 적용시키고자 한다.

기존코드가 이미 꽤 길어진 편이기에, 추가시킬 부분만 따로 보도록 하겠다.

 

# 게임 오버 텍스트 추가
gameover_font = pygame.font.SysFont('g마켓산스ttfmedium', 80)
gameover_text = gameover_font.render('GAME OVER',True,(255,0,0))

# Gameover 텍스트의 사이즈 가져오기 (화면 가운데 배치시키기 위해)
size_text_width = gameover_text.get_rect().size[0]
size_text_height = gameover_text.get_rect().size[1]

# gameover의 좌표를 화면 가운데 배치
x_pos_gameover = size_bg_width/2-size_text_width/2
y_pos_gameover = size_bg_height/2-size_text_height/2

이전에 배웠던 점수 텍스트처럼 게임오버 텍스트도 폰트를 설정해준다.

게임오버는 'GAME OVER'라는 텍스트가 언제든 동일하기 때문에 굳이 while문 안에 넣을 필요없이 미리 render해도 된다.

 

필자는 GAME OVER를 화면 가운데에 배치하고자 했기 때문에, 다른 이미지 위치를 배치할 때 처럼

text의 사이즈를 변수로 저장한 다음 배경화면의 크기와 계산해 가운데로 배치하도록 좌표를 미리 설정했다.

 

# 공이 바닥에 부딪힐 때
    elif y_pos_ball >= size_bg_height-size_ball_height:
        background.blit(gameover_text, (x_pos_gameover, y_pos_gameover))
        pygame.display.update()
        pygame.time.delay(2000) # 약 2초동안 GAME OVER 화면 유지
        play = False

이전 코드를 살펴보면 공이 벽에 튕기게 하기 위해서 만들었던 코드가 있다.

그 중 바닥에 부딪히는 코드가 있는데, 그 부분의 if문만 고쳐주면 게임 종료가 가능하다.

 

이전에는 공의 방향을 바꿔주는 코드였다면, 이제는 GAMEOVER가 출력되고(blit & display.update())

바로 게임이 종료되면 GAME OVER라는 텍스트를 못 볼수도 있기 때문에 2초 뒤 play=False를 통해

while의 반복이 종료되고 게임이 종료되는 방식이다.

 

시연 영상

 

 

728x90