Menu
CoddyTech

Devriye Gemisi

Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 29 / 36.

Tam bir oyun yapma zamanı: Star Patrol. Düşman gemi dalgaları ekranın üst kısmından aşağı doğru uçar. Geminiz pencerenin alt kısmında devriye gezer; sağa ve sola hareket edip yukarı lazerler ateşler. Kazanmak için her dalgayı yok edin; üç düşmanın geçmesine izin verirseniz veya onlara çarparsanız oyun biter.

Oyundaki her nesne bir sprite olacak: oyuncu, lazerleri, düşmanlar ve patlamaları. 4. bölümde olduğu gibi önce oyuncu gelir:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = ship_image
        self.rect = self.image.get_rect(midbottom=(320, 470))

Pencereyi oluşturduktan sonra ship_image öğesini bir kez yükleyin. update yöntemi, ok tuşlarıyla Rect'i hareket ettirir ve onu pencerenin içinde tutar. Ana döngü player.update() çağrısını yapar ve gemiyi çizer.

Bu bölümde aynı program ders ders geliştirilir; bu nedenle görevlerde verilen adları kullanın: denetimler oyunun parçalarını bu adlarla bulur.

challenge icon

Görev

Orta
  1. assets/images/ship.png dosyasını ship_image içine yükle.
  2. class Player(pygame.sprite.Sprite) yaz: görsel olarak ship_image kullan, alt orta noktası (320, 470) olan bir Rect ayarla ve sol ile sağ tuşlarıyla kare başına 6 piksel hareket ettiren, pencere sınırları içinde tutan bir update yaz.
  3. player = Player() oluştur; her karede player.update() çağır ve doldurma işleminden sonra player.image görselini player.rect konumuna blit et.

Kendin dene

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((12, 14, 30))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Sprite'lar ve Görseller bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground