Menu
CoddyTech

פיקסלים שקופים

חלק מהיחידה ספרייטים ותמונות במסלול ה-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 פותר את זה.

challenge icon

אתגר

קל
  1. טענו את שלושת האויבים באמצעות .convert_alpha() במקום .convert(), כדי שהריבועים השחורים ייעלמו.
  2. אחרי כל אויב, שרטטו קו מתאר סביב ה־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()
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה ספרייטים ותמונות

תרגלו בעצמכם: Pygame אונליין