פיקסלים שקופים
חלק מהיחידה ספרייטים ותמונות במסלול ה-Pygame של Coddy. שיעור 5 מתוך 36.
קובץ תמונה הוא תמיד מלבן, אבל ספינת אויב אינה כזאת. הפיקסלים סביבה שקופים: לכל פיקסל בתמונת PNG יש מספר רביעי, ערך האלפא שלו, מ־0 (שקוף) עד 255 (אטום).
קוד הפתיחה טוען את שלושת האויבים באמצעות convert(), שמשליך את ערוץ האלפא: כל פיקסל שקוף הופך לשחור, וכל אויב יושב בתוך תיבה שחורה. convert_alpha() שומר על ערוץ האלפא, כך שרק הפיקסלים האטומים מכסים את החלון. השתמשו בו לכל דבר שאינו מלבן אטום.
ה־Rect עדיין מתאר את המלבן כולו. שרטטו את קווי המתאר שלו כדי לראות את התיבה שהתמונה תופסת:
rect = red.get_rect(topleft=(128, 200))
screen.blit(red, rect)
pygame.draw.rect(screen, (90, 90, 120), rect, 1)המספר האחרון, 1, מצייר קו מתאר בעובי פיקסל אחד במקום למלא את ה־Rect. הסתכלו על המרווחים בין קו המתאר לבין הספינה. שני Rects יכולים לחפוף אף שהתמונות שבתוכם אינן נוגעות זו בזו, ובדיקת התנגשות באמצעות Rects עדיין קובעת שהם פגעו זה בזה. פרק 5 פותר את זה.
אתגר
קל- טענו את שלושת האויבים באמצעות
.convert_alpha()במקום.convert(), כדי שהריבועים השחורים ייעלמו. - אחרי כל אויב, שרטטו קו מתאר סביב ה־Rect שלו בצבע
(90, 90, 120)ובעובי של פיקסל אחד. האויבים נשארים במיקומים(128, 200),(288, 200)ו־(448, 200).
נסו בעצמכם
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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין