가운데로 돌아가기
Coddy의 Pygame으로 게임 만들기 코스 레슨. 40개 중 33번째.
플레이어가 공을 놓치면 공이 그쪽 창의 경계를 벗어납니다. 공을 가운데로 되돌린 다음 반대쪽으로 보냅니다.
if ball.right < 0 or ball.left > 600:
ball.center = (300, 200)
vx = -vxball.right < 0은 공 전체가 왼쪽 가장자리를 넘어갔다는 뜻이고, ball.left > 600은 공 전체가 오른쪽 가장자리를 넘어갔다는 뜻입니다. ball.center를 설정하면 Rect의 가운데가 해당 위치에 오도록 이동하며, 크기는 그대로 유지됩니다.
여기서 vx = -vx를 사용하는 것은 안전합니다. 공이 가운데에 있어 어느 패들과도 멀리 떨어져 있기 때문입니다.
챌린지
쉬움공 전체가 왼쪽 또는 오른쪽 가장자리를 지나면 center를 (300, 200)으로 설정하고 vx의 부호를 반전하세요.
직접 해보기
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()
ball = pygame.Rect(293, 193, 14, 14)
vx, vy = 5, 4
left = pygame.Rect(20, 160, 12, 80)
right = pygame.Rect(568, 160, 12, 80)
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_w]:
left.y -= 6
if keys[pygame.K_s]:
left.y += 6
if keys[pygame.K_UP]:
right.y -= 6
if keys[pygame.K_DOWN]:
right.y += 6
left.clamp_ip(screen.get_rect())
right.clamp_ip(screen.get_rect())
ball.x += vx
ball.y += vy
if ball.top <= 0 or ball.bottom >= 400:
vy = -vy
if ball.colliderect(left):
vx = abs(vx)
if ball.colliderect(right):
vx = -abs(vx)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), left)
pygame.draw.rect(screen, (235, 80, 80), right)
pygame.draw.rect(screen, (255, 196, 0), ball)
pygame.display.flip()
clock.tick(60)
pygame.quit()
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Pygame으로 게임 만들기의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드