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.
Görev
Orta- Hareket eden her şeyi (tuşları, sepeti, bloğu, yakalamaları ve kaçırmaları)
if lives > 0 and score < 10:altına girintileyin. - Skoru ve canları çizdikten sonra,
lives == 0olduğundaGame overveyascore == 10olduğundaYou 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()
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
2Olaylar ve Çarpışmalar
SepetDüşen Bir BlokKendi başına pratik yap: Pygame playground