Menu
CoddyTech

Papan Skor

Termasuk bagian Proyek dalam perjalanan Pygame di Coddy. Pelajaran 16 dari 31.

Bola yang keluar di sisi kanan menghasilkan poin untuk pemain kiri, dan sebaliknya. Bagi pengujian menjadi dua, 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, di 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 reset menjadi dua bagian: bola yang melewati tepi kanan menambahkan 1 ke left_score, bola yang melewati tepi kiri menambahkan 1 ke right_score. Keduanya mengembalikan 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 Proyek

Latihan sendiri: Playground Pygame