떨어지는 블록
Coddy의 Pygame으로 게임 만들기 코스 레슨. 41개 중 10번째.
떨어지는 물체는 프레임마다 y 값이 커지는 물체입니다. 블록도 Rect로 만들고, 루프가 반복될 때마다 y 값을 더하세요:
block = pygame.Rect(220, 0, 20, 20)
while running:
# 이벤트와 키
block.y += 3
# 채우기, 그리기초당 60프레임일 때 프레임당 3픽셀은 초당 180픽셀입니다. 창의 높이는 360픽셀이므로 블록이 바닥에 도달하는 데 2초가 걸립니다.
이 게임은 Move a Square에서처럼 dt가 아니라 프레임 단위로 움직입니다. Rect에는 정수만 저장되므로 0.6픽셀과 같은 이동량은 0으로 잘리고 Rect는 움직이지 않습니다. Rect를 시간에 따라 움직이는 게임에서는 Vector2에 위치를 저장한 다음 Rect에 복사합니다.
블록은 창을 벗어난 뒤에도 계속 떨어집니다. 아직 블록을 멈추는 것은 없습니다. 다음 수업에서 블록을 다시 돌아오게 합니다.
챌린지
쉬움위쪽에서 블록을 떨어뜨리세요.
- 바구니 아래에
block = pygame.Rect(220, 0, 20, 20)을 만드세요. - 루프에서 바구니가 움직인 다음
block.y에 3을 더하세요. - 바구니 다음에 블록을 빨간색
(235, 80, 80)으로 그리세요.
‘플레이’를 누르세요. 빨간 블록이 위쪽에서 떨어집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
basket = pygame.Rect(200, 330, 80, 16)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Pygame으로 게임 만들기의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드