Piksel Tembus Pandang
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 5 dari 36.
File gambar selalu berbentuk persegi panjang, tetapi kapal musuh tidak. Piksel di sekelilingnya transparan: setiap piksel PNG memiliki angka keempat, yaitu alpha, dari 0 (tembus pandang) hingga 255 (pekat).
Starter memuat ketiga musuh dengan convert(), yang membuang alpha: setiap piksel tembus pandang berubah menjadi hitam, dan setiap musuh berada dalam kotak hitam. convert_alpha() mempertahankan alpha, sehingga hanya piksel pekat yang menutupi jendela. Gunakan ini untuk apa pun yang bukan persegi panjang pekat.
Rect tetap merupakan keseluruhan persegi panjang. Buat garis tepinya untuk melihat kotak yang ditempati gambar:
rect = red.get_rect(topleft=(128, 200))
screen.blit(red, rect)
pygame.draw.rect(screen, (90, 90, 120), rect, 1)Angka terakhir, 1, menggambar garis tepi setebal 1 piksel alih-alih mengisi Rect. Perhatikan celah antara garis tepi dan kapal. Dua Rect dapat saling tumpang tindih meskipun gambar di dalamnya tidak bersentuhan, dan pengujian tabrakan dengan Rect tetap menyatakan bahwa keduanya bertabrakan. Bab 5 akan memperbaikinya.
Tantangan
Mudah- Muat ketiga musuh dengan
.convert_alpha(), bukan.convert(), agar kotak hitamnya hilang. - Setelah setiap musuh, gambar garis tepi Rect dengan
(90, 90, 120), selebar 1 piksel. Musuh tetap berada di(128, 200),(288, 200), dan(448, 200).
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Three Enemies")
clock = pygame.time.Clock()
red = pygame.image.load("assets/images/enemy_red.png").convert()
green = pygame.image.load("assets/images/enemy_green.png").convert()
yellow = pygame.image.load("assets/images/enemy_yellow.png").convert()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(red, (128, 200))
screen.blit(green, (288, 200))
screen.blit(yellow, (448, 200))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Sprite dan Gambar
1Memuat Gambar
Muat GambarTempatkan dengan RectPindahkan GambarBuat Latar BerulangPiksel Tembus Pandang2Putar, Cerminkan, Ubah Skala
Putar Mengelilingi Titik TengahHadap ke Arah TerbangmuUbah Skala GambarPutar dari Gambar Asli3class untuk object game
class pertamamumethodself adalah objectlist berisi objectobject dengan gambarsubclass6Animasi dari Sprite Sheet
Memotong Sprite SheetPenghitung FrameMenganimasikan dengan WaktuLedakan Sekali JalanLatihan sendiri: Playground Pygame