Beş Sayıya İlk Ulaşan
Coddy'nin Pygame ile Oyun Yap kursunda ders 37 / 40.
5 puana ulaşan ilk oyuncu kazanır. Kazananın adını, Python'da henüz hiçbir şey olmadığını belirten None ile başlayan bir değişkende tut:
winner = None
if left_score == 5:
winner = "Left player wins!"
elif right_score == 5:
winner = "Right player wins!"winner is None veya winner is not None ile test et. Biri kazandıktan sonra top beklemeye devam eder: Boşluk tuşu yalnızca winner is None iken servis atar.
Kazananı, servis mesajının yerine (300, 120) konumunda ortalanmış olarak göster.
Görev
Orta- Döngüden önce
winner = Noneayarla. - Puanlamadan sonra,
left_score == 5olduğundawinnerdeğerini"Left player wins!"olarak,right_score == 5olduğunda ise"Right player wins!"olarak ayarla. - Space yalnızca
winner is Noneiken servis atar. - Kazanan olduğunda,
Press Space to serveyerine onu(300, 120)koordinatlarında ortalanmış olarak göster.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 36)
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)
left_score = 0
right_score = 0
waiting = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
waiting = 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())
if not waiting:
ball.x += vx
ball.y += vy
if ball.top <= 0 or ball.bottom >= 400:
vy = -vy
if ball.colliderect(left):
vx = abs(vx)
vy = (ball.centery - left.centery) // 6
if ball.colliderect(right):
vx = -abs(vx)
vy = (ball.centery - right.centery) // 6
if ball.left > 600:
left_score += 1
ball.center = (300, 200)
vx = -vx
waiting = True
if ball.right < 0:
right_score += 1
ball.center = (300, 200)
vx = -vx
waiting = True
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)
score = font.render(f"{left_score} : {right_score}", True, (240, 240, 240))
screen.blit(score, score.get_rect(center=(300, 30)))
if waiting:
message = font.render("Press Space to serve", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(300, 360)))
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