Menu
CoddyTech

Ortaya Geri Dönüş

Coddy'nin Pygame ile Oyun Yap kursunda ders 33 / 41.

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 = -vx

ball.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.

challenge icon

Görev

Kolay

Kaçırılan topu ortaya geri getir.

  1. Topun tamamı sol ya da sağ kenarı geçtiğinde, center değerini (300, 200) olarak ayarla.
  2. Orada vx değerini de tersine çevir.

“Oyna” düğmesine bas ve topu kaçır: top geri gelir ve diğer yöne doğru ilerler. Ardından “Kontrol et” düğmesine bas.

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

Pygame ile Oyun Yap bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground