Dikdörtgenler Haksız Hissettiriyor
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 21 / 36.
Ok tuşlarıyla gemiyi dikenli topa doğru uçur. Rect çarpışmaları, colliderect, hızlı ve basittir; ancak yuvarlak bir top söz konusu olduğunda yanlış sonuç verir. Topun Rect'i, etrafındaki karedir; şeffaf köşeleri de buna dahildir. Geminin Rect'inde ise burnunun yanında boş alan vardır.
Testi görünür hâle getir: topun Rect'inin çevresini çiz ve colliderect sonucuna göre bu çizginin rengini değiştir.
if ship_rect.colliderect(ball_rect):
colour = (230, 60, 60)
else:
colour = (90, 90, 120)
pygame.draw.rect(screen, colour, ball_rect, 2)Ardından topa sağ alttan yaklaş. Gemiyle dikenler arasında hâlâ belirgin bir gökyüzü boşluğu varken çizgi kırmızıya döner: İki Rect'in köşeleri üst üste biner, görseller ise binmez. Bir oyunda bu, boş yere can kaybetmek demektir ve oyuncular bunu fark eder.
Sonraki derslerde görsellerin kendileri sınanacak.
Görev
KolayTopu ve gemiyi çizdikten sonra ball_rect'in dış çizgisini 2 piksel kalınlığında çiz: ship_rect onunla çarpışırken kırmızı (230, 60, 60), aksi hâlde gri (90, 90, 120). Ardından gemiyi sağ alttan içeri uçur ve köşelere dikkat et.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Near Miss")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(topleft=(420, 320))
ball = pygame.image.load("assets/images/spike_ball.png").convert_alpha()
ball_rect = ball.get_rect(center=(320, 240))
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]:
ship_rect.x -= 4
if keys[pygame.K_RIGHT]:
ship_rect.x += 4
if keys[pygame.K_UP]:
ship_rect.y -= 4
if keys[pygame.K_DOWN]:
ship_rect.y += 4
screen.fill((20, 22, 40))
screen.blit(ball, ball_rect)
screen.blit(ship, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
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şı Grup2Dö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