Yeniden Oyna
Coddy'nin Pygame Journey'sinin Oyun Döngüsü bölümünün bir parçası. Ders 31 / 32.
Oyun sona erdikten sonra oyuncunun programı yeniden başlatması gerekmemeli. Yeni bir oyun başlatmak için R tuşuna basılsın: değişen her değeri başladığı hâle döndür.
elif event.key == pygame.K_r and (lives == 0 or score == 10):
score = 0
lives = 3
basket.x = 200
block.y = -20
block.x = random.randint(0, 460)Koşul önemlidir. (lives == 0 or score == 10) olmadan R, oyun devam ederken skoru sıfırlar. Parantezler iki bitiş koşulunu gruplar; böylece and her ikisine de uygulanır.
Oyuncuya hangi tuşa basacağını söyle: sonucun altında Press R to play again mesajını göster.
Görev
Orta- KEYDOWN dalında, tuş
pygame.K_rolduğunda ve oyun sona erdiğinde, skoru 0, canları 3,basket.xdeğerini 200 olarak ayarla ve rastgele bir x konumundany = -20değerinde yeni bir blok düşür. - Oyun sona erdiğinde,
Press R to play againmetnini(240, 200)konumunda ortalanmış şekilde de göster.
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
paused = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_p:
paused = not paused
if lives > 0 and score < 10 and not paused:
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))
if lives == 0:
message = font.render("Game over", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 160)))
elif score == 10:
message = font.render("You win!", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 160)))
if paused:
message = font.render("Paused", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 160)))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Oyun Döngüsü bölümündeki tüm dersler
1Bir Kareyi Hareket Ettir
Bir Pencere AçArka Planı Doldur2Şekiller ve Renkler
Daireler, Çizgiler, ÇokgenlerKonturlar ve KöşelerŞekillerden Oluşan Bir SahneDeğişen Renkler5Blokları Yakala
SepetDüşen Bir BlokKendi başına pratik yap: Pygame playground