Ortaya Geri Dön
Coddy'nin Pygame ile Oyun Yap kursunda ders 33 / 40.
Bir oyuncu topu kaçırdığında top, kendi tarafındaki pencereden çıkar. Topu tekrar ortaya getir ve diğer tarafa gönder.
if ball.right < 0 or ball.left > 600:
ball.center = (300, 200)
vx = -vxball.right < 0, topun tamamının sol kenarı geçtiği; ball.left > 600 ise topun tamamının sağ kenarı geçtiği anlamına gelir. ball.center değerini ayarlamak, Rect'in orta noktası bu konumda olacak şekilde onu hareket ettirir; boyutu aynı kalır.
Burada vx = -vx işlemi güvenlidir: top ortadadır ve her iki raketten de uzaktadır.
Görev
KolayTopun tamamı sol veya sağ kenarı geçtiğinde, center değerini (300, 200) yap ve vx değerini tersine çevir.
Kendin dene
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()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Pygame ile Oyun Yap bölümündeki tüm dersler
1Oyun Döngüsü
Bir Pencere AçArka Planı Doldur4İki Oyuncu ve Bir Top
TopSekmeKendi başına pratik yap: Pygame playground