안녕하세요. 낌준희 (Youtube & Instagram : kkimjunhee)입니다.
챗GPT 열풍이 시작한지 꽤 됐는데, 오늘은 gpt와 파이썬만을 활용해서, 1분만에 게임 만드는 방법을 보여드리겠습니다.
★실제 제가 만드는데는, 파이썬의 이해도가 거의 없는 상태에서 진행하는거였어서, 10분 정도 소요된거 같은데, 제가 알려드리는 가이드에 따라서 그냥 하시기만 한다면, 정말 1분만에 가능합니다.. (*에러만 안 난다면 10초도 가능할듯..)
★대신 GPT 계정이 있고, 파이썬이 설치돼있다는 가정하에 입니다!
1. 먼저, GPT에 로그인해서, 바로 "플래피 버드 게임 코드 만들어줘"라는 입력을 합니다.
그럼 위와 같이 GPT가 알아서, 코딩을 해주고요.
2. 해당 코드를, 파이썬에 복사해서 넣어주기만 하면되는데요, 우선 "pygame"이라는 폴더명으로 새 파일을 만들어서 파이썬 코딩 입력창을 활성화시키고, 코드를 복사해서, "F5"를 실행하면 pygame 모듈이 없다는 에러가 뜰겁니다.
3. 그러면, pygame 모듈만 설치를 해주면 되는데, 제 Visual studio code 버전은, 상단에 빨간 네모 정지를 눌렀더니, 터미널이 알아서 실행되면서 모듈을 설치해주네요.
자동 설치가 안되시는 분들은, 하단 "TERMINAL"에서, "pip install pygame' 명령어를 넣어줘 직접 실행시켜주시면 모듈이 다운로드 될겁니다.
4. 오류가 발생한게, 저같은 경우는 "bird.png"를 따로 넣어줘야만 코드가 실행되게끔 지정이 됐는데, 저는 그럼 아무 png 그림 파일을 "pygame" 폴더 경로에 업로드해서 실행시켜보겠습니다.
5. 이전 실행 때는 바로 됐는데, gpt가 이번엔 좀 다르게 코딩을 해줘서 인지, "name 'GREEN' is not defined" 에러가 발생해서, 해당 에러에 대해서 해결 방법을 물어본 뒤, "전체 코딩"을 다시 해달라고 해서, 다시 받아, 파이썬에 복사했습니다.
Space 키로 점프가 활성화되는, 플래피버드 게임 만들기 끄읕~!
제가 지정한 풀 코드를 참고로 하단에 넣어두겠습니다. 참고해서 코딩해보시길 바랍니다~!
import pygame
import sys
import random
# Constants
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 600
GRAVITY = 0.25
FLAP_SPEED = -4
PIPE_GAP = 150
PIPE_WIDTH = 60
PIPE_VELOCITY = -2
BIRD_WIDTH = 40
BIRD_HEIGHT = 30
FPS = 60
# Colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
class Bird:
def __init__(self):
self.x = 50
self.y = SCREEN_HEIGHT // 2
self.velocity = 0
self.alive = True
self.image = pygame.image.load('bird.png').convert_alpha()
def flap(self):
self.velocity = FLAP_SPEED
def update(self):
self.velocity += GRAVITY
self.y += self.velocity
def draw(self, screen):
screen.blit(self.image, (self.x, self.y))
def check_collision(self, pipes):
if self.y < 0 or self.y + BIRD_HEIGHT > SCREEN_HEIGHT:
self.alive = False
for pipe in pipes:
if (self.x + BIRD_WIDTH > pipe.x and self.x < pipe.x + PIPE_WIDTH) and (
self.y < pipe.gap_top or self.y + BIRD_HEIGHT > pipe.gap_bottom
):
self.alive = False
class Pipe:
def __init__(self, x):
self.x = x
self.gap_top = random.randint(50, SCREEN_HEIGHT - PIPE_GAP - 50)
self.gap_bottom = self.gap_top + PIPE_GAP
def update(self):
self.x += PIPE_VELOCITY
def draw(self, screen):
pygame.draw.rect(screen, GREEN, (self.x, 0, PIPE_WIDTH, self.gap_top))
pygame.draw.rect(screen, GREEN, (self.x, self.gap_bottom, PIPE_WIDTH, SCREEN_HEIGHT - self.gap_bottom))
def main():
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption('Flappy Bird')
clock = pygame.time.Clock()
bird = Bird()
pipes = []
score = 0
font = pygame.font.Font(None, 36)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE and bird.alive:
bird.flap()
if bird.alive:
bird.update()
# Create new pipes
if len(pipes) == 0 or pipes[-1].x < SCREEN_WIDTH - 200:
pipes.append(Pipe(SCREEN_WIDTH))
# Remove off-screen pipes
if pipes[0].x + PIPE_WIDTH < 0:
pipes.pop(0)
for pipe in pipes:
pipe.update()
# Check for collisions
bird.check_collision(pipes)
# Check for score
if pipes and bird.x > pipes[0].x + PIPE_WIDTH:
score += 1
pipes.pop(0)
screen.fill(BLACK)
# Draw pipes
for pipe in pipes:
pipe.draw(screen)
# Draw bird
bird.draw(screen)
# Draw score
score_text = font.render(f'Score: {score}', True, WHITE)
screen.blit(score_text, (10, 10))
pygame.display.update()
clock.tick(FPS)
if __name__ == '__main__':
main()