Menu
CoddyTech

가운데로 돌아가기

Coddy의 Pygame으로 게임 만들기 코스 레슨. 41개 중 33번째.

플레이어가 공을 놓치면 공이 그쪽 창의 경계를 벗어납니다. 공을 가운데로 되돌린 다음 반대쪽으로 보냅니다.

if ball.right < 0 or ball.left > 600:
    ball.center = (300, 200)
    vx = -vx

ball.right < 0은 공 전체가 왼쪽 가장자리를 넘어갔다는 뜻이고, ball.left > 600은 공 전체가 오른쪽 가장자리를 넘어갔다는 뜻입니다. ball.center를 설정하면 Rect의 가운데가 해당 위치에 오도록 이동하며, 크기는 그대로 유지됩니다.

여기서 vx = -vx를 사용하는 것은 안전합니다. 공이 가운데에 있어 어느 패들과도 멀리 떨어져 있기 때문입니다.

challenge icon

챌린지

쉬움

놓친 공을 가운데로 되돌리세요.

  1. 공 전체가 왼쪽이나 오른쪽 가장자리를 지나면 공의 center를 (300, 200)으로 설정하세요.
  2. 그때 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 플레이그라운드