Menu
CoddyTech

Papan Skor

Pelajaran 34 dari 40 dalam kursus Buat Game dengan Pygame di Coddy.

Bola yang keluar di sebelah kanan menjadi poin untuk pemain kiri, dan sebaliknya. Bagi pengujian menjadi dua bagian agar setiap sisi tahu siapa yang mencetak poin:

if ball.left > 600:
    left_score += 1
    ball.center = (300, 200)
    vx = -vx
if ball.right < 0:
    right_score += 1
    ball.center = (300, 200)
    vx = -vx

Tampilkan kedua skor dalam satu baris di bagian atas, rata tengah: f"{left_score} : {right_score}" menampilkan 2 : 1.

challenge icon

Tantangan

Mudah
  1. Sebelum perulangan, buat font = pygame.font.Font(None, 36), left_score = 0, dan right_score = 0.
  2. Pisahkan pengaturan ulang menjadi dua bagian: bola yang melewati tepi kanan menambahkan 1 ke left_score, bola yang melewati tepi kiri menambahkan 1 ke right_score. Keduanya membawa bola ke tengah dan membalik vx.
  3. Render f"{left_score} : {right_score}" dengan warna (240, 240, 240), di tengah pada posisi (300, 30).

Coba sendiri

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)
    if ball.right < 0 or ball.left > 600:
        ball.center = (300, 200)
        vx = -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()
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Buat Game dengan Pygame

Latihan sendiri: Playground Pygame