Kembali ke Tengah
Pelajaran 33 dari 40 dalam kursus Buat Game dengan Pygame di Coddy.
Saat pemain meleset, bola keluar dari jendela di sisi mereka. Kembalikan bola ke tengah dan arahkan ke sisi lainnya.
if ball.right < 0 or ball.left > 600:
ball.center = (300, 200)
vx = -vxball.right < 0 berarti seluruh bola sudah melewati tepi kiri, sedangkan ball.left > 600 berarti seluruh bola sudah melewati tepi kanan. Mengatur ball.center memindahkan Rect sehingga bagian tengahnya berada di titik tersebut; ukurannya tetap sama.
vx = -vx di sini aman: bola berada di tengah, jauh dari paddle mana pun.
Tantangan
MudahSaat seluruh bola melewati tepi kiri atau kanan, atur center-nya ke (300, 200) dan balikkan vx.
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)
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()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Buat Game dengan Pygame
1Perulangan Game
Buka JendelaIsi Latar4Dua Pemain dan Sebuah Bola
BolanyaMemantulLatihan sendiri: Playground Pygame