[파이썬] 지렁이게임 만들기 - pygame

[파이썬] 지렁이게임 만들기 - pygame

Chat GPT를 활용하여 지렁이 게임을 만들어 보았다. 

 

Chat GPT에게 

pygame을 활용하여 지렁이 게임을 만드는 코드를 알려줘

라고 요청하면, 

아래와 같은 코드를 알려준다. (매번 조금씩 바뀐다)

 

1. chat GPT에게 지렁이게임 코드 물어보기

2. 파이썬에 pygame 설치하기

pip install pygame

3. 아래의 코드를 파이썬에 붙여넣는다. 

4. 화면사이즈, 색깔, 방향 등을 내가 원하는 값으로 변경해 주었다.

import pygame # 1. pygame 선언
import random
from datetime import datetime
from datetime import timedelta
 
pygame.init() # 2. pygame 초기화
 
# 3. pygame에 사용되는 전역변수 선언
WHITE = (255,255,255)
BLACK = (0,0,0)
RED = (255,0,0)
GRAY = (150,150,150)

size = [980,980]
screen = pygame.display.set_mode(size)
 
done= False
clock= pygame.time.Clock()
last_moved_time = datetime.now()
 
KEY_DIRECTION = {
    pygame.K_UP: 'up',
    pygame.K_DOWN: 'down', 
    pygame.K_LEFT: 'left', 
    pygame.K_RIGHT: 'right',
}
 
def draw_block(screen, color, position):
    block = pygame.Rect((position[1] * 20, position[0] * 20),
                        (20, 20))
    pygame.draw.rect(screen, color, block)
 
class Snake:
    def __init__(self):
        self.positions = [(0,2),(0,1),(0,0)]  # 뱀의 위치
        self.direction = ''
 
    def draw(self):
        for position in self.positions: 
            draw_block(screen, WHITE, position)
 
    def move(self):
        head_position = self.positions[0]
        y, x = head_position
        if self.direction == 'up':
            self.positions = [(y - 1, x)] + self.positions[:-1]
        elif self.direction == 'down':
            self.positions = [(y + 1, x)] + self.positions[:-1]
        elif self.direction == 'left':
            self.positions = [(y, x - 1)] + self.positions[:-1]
        elif self.direction == 'right':
            self.positions = [(y, x + 1)] + self.positions[:-1]
 
    def grow(self):
        tail_position = self.positions[-1]
        y, x = tail_position
        if self.direction == 'up':
            self.positions.append((y - 1, x))
        elif self.direction == 'down':
            self.positions.append((y + 1, x))
        elif self.direction == 'left':
            self.positions.append((y, x - 1))
        elif self.direction == 'right':
            self.positions.append((y, x + 1))    
 
 
class Apple:
    def __init__(self, position=(5, 5)):
        self.position = position
 
    def draw(self):
        draw_block(screen, RED, self.position)
 
# 4. pygame 무한루프
def runGame():
    global done, last_moved_time
    #게임 시작 시, 뱀과 사과를 초기화
    snake = Snake() 
    apple = Apple()
 
    while not done:
        clock.tick(10)
        screen.fill(BLACK)
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done=True
            if event.type == pygame.KEYDOWN:
                if event.key in KEY_DIRECTION:
                    snake.direction = KEY_DIRECTION[event.key]
 
        if timedelta(seconds=0.1) <= datetime.now() - last_moved_time:
            snake.move()
            last_moved_time = datetime.now()
 
        if snake.positions[0] == apple.position:
            snake.grow()    
            apple.position = (random.randint(0, 33), random.randint(0, 23))
        
        if snake.positions[0] in snake.positions[1:]:
            done = True
 
 
        snake.draw()
        apple.draw()
        pygame.display.update()
 
runGame()
pygame.quit()

 

반응형