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 أنهما اصطدما. يعالج الفصل 5 ذلك.

challenge icon

التحدي

سهل
  1. حمّل الأعداء الثلاثة باستخدام .convert_alpha() بدلًا من .convert()، لكي تختفي المربعات السوداء.
  2. بعد كل عدو، ارسم إطارًا حول مستطيله باللون (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اختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الكائنات والصور

تدرّب بنفسك: Playground لـ Pygame