라이브러리 가져오기 및 초기화
python
Copy code
import pygame, sys
from pygame.locals import *
pygame.init()
pygame
과 sys
라이브러리를 가져옵니다.pygame.init()
으로 Pygame 모듈을 초기화합니다.기본 설정
WIDTH = 700
HEIGHT = 600
DISPLAYSF = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Title")
clock = pygame.time.Clock()
DISPLAYSF
라는 Surface 객체로 화면을 그릴 준비를 합니다.pygame.time.Clock()
을 이용해 clock
객체를 생성해 게임 루프의 프레임 속도를 제어할 수 있습니다.변수 초기화
col_arr = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]
col = 0
run = True
ball_pos = [0, 500]
jump = False
t = 0
col_arr
는 사각형의 색상 배열입니다. 각 색상은 빨강, 초록, 파랑으로 순환합니다.col
은 현재 색상의 인덱스를 저장하며, cam_pos
와 ball_pos
는 카메라와 공의 위치를 나타냅니다.jump
는 점프 상태를 추적하고, t
는 공이 점프할 때 시간 경과를 나타냅니다.메인 루프
python
Copy code
while run:
clock.tick(900)
DISPLAYSF.fill((0, 0, 0))
while run:
루프는 프로그램이 실행 중일 때 지속됩니다.clock.tick(900)
은 프레임 속도를 초당 900 프레임으로 설정합니다. 높은 값을 사용하여 중력 계산이 더 부드럽게 동작하도록 했습니다.DISPLAYSF.fill((0, 0, 0))
은 검은색 배경으로 화면을 초기화합니다.점프 상태와 중력 적용
if ball_pos[1] >= 500-100:
jump = False
pygame.draw.line(DISPLAYSF, (255, 255, 255), (0, 500), (700, 500))
ball_pos[1]
의 값이 500 이상이면 (바닥에 닿으면) jump
상태를 False
로 설정해 공이 다시 점프할 수 있도록 합니다.pygame.draw.line
으로 바닥 위치를 시각적으로 표시합니다.이벤트 처리
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN col += 1
if jump == False:
t = 0
jump = True
pygame.QUIT
이벤트가 발생하면 run = False
로 설정해 프로그램을 종료합니다.KEYDOWN
이벤트가 발생할 때마다 col
값이 1 증가하여 색상을 바꾸고, jump
가 False
일 때만 점프 상태로 변경합니다.점프와 중력 구현
if jump == True:
t += 0.017
ball_pos[1] = 500 - 100 + 0.5 * 9.8 * t**2 + (-100) * t
jump
가 True
일 때, t
는 0.017씩 증가하여 시간 경과를 시뮬레이션합니다.ball_pos[1]
은 물리 공식을 사용하여 공의 위치를 계산합니다:
0.5 * 9.8 * t**2
는 중력에 의한 낙하 거리,100 * t
는 초기 속도(위 방향)입니다.사각형 공 그리기 및 화면 업데이트
rect = pygame.Rect(ball_pos[0], ball_pos[1], 100, 100)
pygame.draw.rect(DISPLAYSF, col_arr[col % 3], rect)
pygame.display.update()
ball_pos
위치에 사각형을 생성하고, col_arr
색상 배열을 순환하여 색상을 바꿉니다.pygame.display.update()
로 화면을 업데이트해 새로 그린 이미지를 보여줍니다.종료 처리
pygame.quit()
sys.exit()
pygame.quit()
으로 Pygame을 종료하고, sys.exit()
로 프로그램을 완전히 종료합니다.이 코드는 마우스 클릭 시 공이 점프하는 간단한 중력 애니메이션을 보여줍니다. ball_pos
의 y
위치는 중력 가속도와 초기 속도로 계산되며, col
값을 순환해 공의 색상이 매번 바뀝니다.