Menu
CoddyTech

Kazan ya da Kaybet

Coddy'nin Pygame ile Oyun Yap kursunda ders 15 / 40.

Bir oyun sona erer. Burada can sayısı 0'a ulaştığında kaybedersin, puan 10'a ulaştığında kazanırsın. Bunlardan hiçbiri gerçekleşmediği sürece oyun devam eder.

Oyun sona erdiğinde durmaları için hareket eden her şeyi tek bir koşulun altına yerleştir:

if lives > 0 and score < 10:
    # tuşlar, sepet, blok, yakalamalar ve kaçırmalar

Çizim bu if koşulunun dışında kalır: ekran hâlâ son kareyi, üstünde de sonucu gösterir.

if lives == 0:
    message = font.render("Game over", True, (240, 240, 240))
    screen.blit(message, message.get_rect(center=(240, 160)))

message.get_rect(center=(240, 160)), metin görselinin ortası (240, 160) noktasına yerleştirilmiş Rect'idir. Bir Rect'e blit işlemi, sol üst köşesini kullanır; bu nedenle metin ortalanır.

challenge icon

Görev

Orta
  1. Hareket eden her şeyi (tuşları, sepeti, bloğu, yakalamaları ve kaçırmaları) if lives > 0 and score < 10: altına girintileyin.
  2. Skoru ve canları çizdikten sonra, lives == 0 olduğunda Game over veya score == 10 olduğunda You win! mesajını (240, 160) konumunda ortalanmış şekilde gösterin.

Kendin dene

import random
import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)
score = 0
lives = 3

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_LEFT]:
        basket.x -= 8
    if keys[pygame.K_RIGHT]:
        basket.x += 8
    basket.clamp_ip(screen.get_rect())

    block.y += 3
    if block.top > 360:
        block.y = -20
        block.x = random.randint(0, 460)
        lives -= 1
    if block.colliderect(basket):
        block.y = -20
        block.x = random.randint(0, 460)
        score += 1

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    pygame.draw.rect(screen, (235, 80, 80), block)
    score_text = font.render(f"Score: {score}", True, (240, 240, 240))
    screen.blit(score_text, (10, 10))
    lives_text = font.render(f"Lives: {lives}", True, (240, 240, 240))
    screen.blit(lives_text, (370, 10))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconKendini test et

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

Kendi başına pratik yap: Pygame playground