Menu
CoddyTech

Trở lại giữa

Thuộc phần Dự án trong hành trình Pygame của Coddy. Bài học 15 trên 33.

Khi người chơi đánh hụt, bóng bay ra khỏi cửa sổ ở phía của họ. Đưa bóng trở lại giữa rồi đánh bóng về phía bên kia.

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

ball.right < 0 nghĩa là toàn bộ quả bóng đã vượt qua mép trái, còn ball.left > 600 nghĩa là toàn bộ quả bóng đã vượt qua mép phải. Gán giá trị cho ball.center sẽ di chuyển Rect sao cho tâm của nó nằm tại điểm đó; kích thước vẫn giữ nguyên.

Ở đây, vx = -vx an toàn: bóng đang ở giữa, cách xa mọi thanh đỡ.

challenge icon

Thử thách

Dễ

Đưa bóng bị đánh trượt trở lại giữa màn hình.

  1. Khi cả quả bóng vượt qua cạnh trái hoặc cạnh phải, đặt center thành (300, 200).
  2. Đổi dấu vx tại đó nữa.

Nhấn Chơi rồi đánh trượt bóng: bóng quay lại và đi theo hướng ngược lại. Sau đó nhấn Kiểm tra.

Tự làm thử

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()

Tất cả bài học trong Dự án

Tự luyện tập: Playground Pygame