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()
이벤트 타입 | 뜻 |
---|---|
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 = pygame.Rect(x위치, y위치, 가로 변 길이, 세로 변 길이)
pygame.draw.rect(화면 이름, 색상, 사각형 객체(rect))
#사각형과 달리 바로 그릴 수 있다.
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(텍스트 객체, 위치)