Lazerleri Ateşle
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 30 / 36.
Gemi lazerleri dümdüz yukarı ateşler. Lazer, geminin burnundan başlayıp her karede 10 piksel uçan ve pencerenin dışına çıktığında kendini silen bir grafiktir:
class Laser(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = laser_image
self.rect = self.image.get_rect(midbottom=(x, y))
def update(self):
self.rect.y -= 10
if self.rect.bottom < 0:
self.kill()Geminin burnu üst kenarının ortasıdır; bu nedenle yeni bir lazer Laser(player.rect.centerx, player.rect.top) olur: alt orta noktası bu noktaya denk gelir.
Tüm lazerler tek bir grupta, lasers, bulunur. Boşluk tuşuna basılması, olay döngüsünde gruba bir lazer ekler; böylece her basışta bir kez ateş edilir. Grup hepsini günceller ve çizer; geminin burnunun altından çıkmaları için onları gemiden önce çizin.
Görev
Ortaassets/images/laser.pngdosyasınılaser_imageiçine yükle ve yukarıdakiLasersınıfını yaz.lasers = pygame.sprite.Group()oluştur.- Space için bir
KEYDOWNolayı gerçekleştiğindeLaser(player.rect.centerx, player.rect.top)nesnesinilasersgrubuna ekle. - Her karede
lasers.update()çağrısı yap ve gemiden öncelasersgrubunu çiz.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()
ship_image = pygame.image.load("assets/images/ship.png").convert_alpha()
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 6
if keys[pygame.K_RIGHT]:
self.rect.x += 6
self.rect.clamp_ip(screen.get_rect())
player = Player()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
player.update()
screen.fill((12, 14, 30))
screen.blit(player.image, player.rect)
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.
Sprite'lar ve Görseller bölümündeki tüm dersler
4Sprite'lar ve Gruplar
Sprite SınıfıGruplarkill() ile Kaldırmaspritecollide ile YakalamaGruba Karşı Grup7Yıldız Devriyesi
Devriye GemisiLazerleri Ateşle2Döndür, Yansıt, Ölçekle
Merkez Etrafında DöndürUçtuğun Yöne DönBir Görseli ÖlçekleOrijinalinden Döndür5Piksel Hassasiyetinde Çarpışmalar
Dikdörtgenler Haksız HissettiriyorMaskelerPiksel Hassasiyetinde Sprite'larDaire Hitbox'ları3Oyun Nesneleri için Sınıflar
İlk SınıfınızMetotlarSelf Nesnenin KendisidirNesneler ListesiGörselli NesnelerBir Alt Sınıf6Sprite Sheet'lerden Animasyon
Bir Sprite Sheet'i KesmekBir Kare SayacıZamanla AnimasyonTek Seferlik Bir PatlamaKendi başına pratik yap: Pygame playground