pygame 기초 틀

import pygame
import sys
import random
import time
from pygame.locals import *

# Pygame 초기화
pygame.init()

# 화면 크기 설정
WIDTH = 1000
HEIGHT = 600

# 디스플레이 생성 및 설정
display = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Title")
clock = pygame.time.Clock()

# 게임 실행 여부 플래그
run = True

# 메인 게임 루프
while run:
    # 프레임 레이트 설정 (60 FPS)
    clock.tick(60)
    # 화면 초기화
    display.fill((0, 0, 0))
    
    # 이벤트 처리
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False  # 게임 종료
    
    #----------------여기 사이에 본인이 원하는 코드 작성-------------------
    
    # 화면 업데이트
    pygame.display.update()

# 게임 종료 처리
pygame.quit()
sys.exit()

pygame 이벤트 모음

이벤트 타입
QUIT 게임창의 닫기버튼을 눌렀을 때
ACTIVEEVENT 마우스가 게임창에 들어가거나 나갔을 때
KEYDOWN 키보드 키를 눌렀을 때
KEYUP 키보드 키를 땠을 때
MOUSEMOTION 마우스를 움직일 때
MOUSEBUTTONUP 마우스 버튼을 뗄 때
MOUSEBUTTONDOWN 마우스 버튼을 눌렀을 때
JOYAXISMOTION 조이스틱의 축이 움직일 때
JOYBALLMOTION 조이스틱의 트랙볼이 움직일 때
JOYHATMOTION 조이스틱의 HAT 스위치 상태가 변경될 때
JOYBUTTONUP 조이스틱 버튼을 땔 때
JOYBUTTONDOWN 조이스틱 버튼을 눌렀을 때
VIDEORESIZE 게임 창의 크기를 조정할 때
VIDEOEXPOSE 게임 창이 다시 그려질 필요가 있을 때
USEREVENT 사용자가 임의로 정의한 이벤트
for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == KEYDOWN:
                if event.key == K_LEFT:
                    xpos -= 10
                if event.key == K_RIGHT:
                    xpos += 10
                if event.key == K_UP:
                    ypos -= 10
                if event.key == K_DOWN:
                    ypos += 10
                #이런 식으로 어떤 키를 눌렀는지도 확인 가능
                #K_W, K_A 이런 식의 문자 키,
                #K_0, K_1 같은 숫자 키도 가능

스프라이트를 원하는 위치에 그리기

#생략

#그리고자 하는 오브젝트의 위치를 저장하는 배열을 만들고,
#도형을 그리는 함수의 인자로 넣어준다.
#이는 추후에 이미지를 불러올 때도 같은 방식으로 사용할 수 있다.
pos = [0,0]

#중간 생략

	pygame.draw.circle(display, (255, 0, 0), (int(pos[0]), int(pos[1])), size)
	#혹은
	wall_rect = pygame.Rect(int(wall[0]), int(wall[1]), wall[2], wall[2])
	pygame.draw.rect(display, (255, 255, 255), wall_rect)

도형 그리기 함수

사각형 (rect)

#다름 도형과 다르게, 사각형은 사각형의 정보을 가진 객체(rect)를 선언 후, 그릴 수 있다.
rect = pygame.Rect(x위치, y위치, 가로 변 길이, 세로 변 길이)
pygame.draw.rect(화면 이름, 색상, 사각형 객체(rect))

원 (circle)

#사각형과 달리 바로 그릴 수 있다.
pygame.draw.circle(화면 이름, 색상, (x, y), 반지름)

사각형 충돌 판정

#게임 1에서의 충돌 판정 코드
# 공과 벽의 충돌 감지
ball_rect = pygame.Rect(int(ball_pos[0] - ball_size), int(ball_pos[1] - ball_size), ball_size * 2, ball_size * 2)
if ball_rect.colliderect(wall_rect):
	time.sleep(1)  # 충돌 시 잠시 대기 
	run = False  # 게임 종료

만약 사각형과 사각형 사이 충돌을 감지했다면, 해당 함수의 반환값이 True가 된다. 따라서 if 문 속 명령어들이 작동된다.

텍스트 렌더링

    #게임 1에서의 포인트 출력 코드
    font = pygame.font.SysFont(None, 30)
    score_text = font.render(str(point), True, (255, 255, 255))
    display.blit(score_text, (100, 100))
    
    #구조
    #폰트 설정, 여러 폰트 객체를 만들어, 마음대로 사용해도 된다.
    font = pygame.font.SysFont(글씨체(설정 필요 없으면 None으로 지정), 폰트 크기)
    #텍스트 객체 만들기
    score_text = font.render(글의 내용, True, 색상)
    #텍스트 객체 랜더링
    display.blit(텍스트 객체, 위치)