스푸79 기록 보관소

운석 피하기 게임 개발(2)- 기본화면 (feat. ChatGPT) 본문

게임개발

운석 피하기 게임 개발(2)- 기본화면 (feat. ChatGPT)

스푸79 2024. 8. 19. 08:00

pygame으로 운석 피하기 게임은 ChatGPT와 함께할 생각이다.

느낌상 거의 ChatGPT가 다 작성해 줄 것 같은 느낌이 든다.

 

화면설계에 따라 800 x 800 사이즈 pygame 코드로 창을 만들어 달라고 요청했다.

 

답변 받은 코드를 복사해서 실행해 보았다.

 

보통 pygame 예제가 main class를 만들지 않고 이렇게 작성한 예시가 많은 것 같다.

간단한 게임이라면 위의 코드로 충분히 커버가 되지만

클래스로 기본 화면을 만들어 두지 않으면 여러 개의 다른 파일과 연계할 때 문제가 있을 수 있다.

 

ChatGPT님께서 작성해 주신 코드를 아래와 같이 수정을 했다.

추가적로 윈도우 창에 아이콘 표시도 넣어 보았다.

 

게임이 실행되는 위치에 따라 상대 경로 문제로 이미지파일을 못 찾는 문제를 사전 방지하기 위해

os.path.dirname 을 이용하여 현재 .py가 실행되는 위치(=게임기본경로)를 가져오도록 처리했다.

import os

GAME_DIR = os.path.dirname(os.path.abspath(__file__))

 

전체코드

import pygame
import sys
import os

# .py 실행하는 위치에 따라 게임 경로를 가져와서 image를 못찾는 문제를 해결하기 위해 처리
GAME_DIR = os.path.dirname(os.path.abspath(__file__))

class Main():
    def __init__(self):        
        self.screen = pygame.display.set_mode((800, 800))
        pygame.display.set_caption("Meteor Dodger")
        # 게임 화면 창에 아이콘 추가
        icon = pygame.image.load(GAME_DIR + "/meteor_dodger.ico")
        pygame.display.set_icon(icon)

    def play(self):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()

            self.screen.fill((0, 0, 0))
            pygame.display.flip()


if __name__ == "__main__":
    #게임 화면 실행인 경우 gameMain 객체 생성 후 play() 메서드 호출 처리
    gameMain = Main()
    gameMain.play()

 

 

윈도우 아이콘을 설정해 두면 아래와 같이 작업 표시줄에서 표시가 된다.

 

VSCODE에 Explorer 창이다.

01.basic 폴더를 하나 별도로 만들었다.

포스트가 올릴때마다 02, 03, .. 넘버를 붙여서 폴더를 생성하면서 완성해 갈 예정이다.

아이콘이 포함된 소스코드를 업로드한다.

01. basic.zip
0.00MB