Menu
CoddyTech

تبليط الخلفية

جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 4 من 36.

اللون الواحد يجعل السماء باهتة. assets/backgrounds/sky.png صورة مقاسها 72 × 72 مصممة للتكرار: ضع نسخًا متجاورة، وستلتقي الحواف بلا فواصل. تُسمّى تغطية النافذة بنسخ صورة صغيرة واحدة التبليط.

تُحدّد حلقتان كل زاوية علوية يسرى، صفًا واحدًا من الشبكة في كل مرة:

for x in range(0, 640, 72):
    for y in range(0, 480, 72):
        screen.blit(tile, (x, y))

تعطي range(0, 640, 72) القيم 0 و72 و144 وما إلى ذلك حتى 576. تصل النسخة عند 576 إلى 648، متجاوزةً الحافة: يرسم pygame الجزء الواقع داخل النافذة ويتجاهل الباقي، لذا يُقصّ العمود الأخير بشكل نظيف.

تغطي البلاطات النافذة بأكملها، لذا فهي تحل محل screen.fill: ارسمها أولًا، ثم ارسم كل شيء آخر فوقها. لا تحتوي هذه الصورة على بكسلات شفافة، لذا حمّلها باستخدام .convert()، وهي النسخة المخصصة للصور المعتمة من convert_alpha().

challenge icon

التحدي

سهل
  1. بعد set_mode، حمّل assets/backgrounds/sky.png باستخدام .convert() إلى متغير اسمه tile.
  2. استبدل screen.fill(...) بحلقتين ترسمان tile عند كل (x, y)، حيث تكون قيم x ضمن range(0, 640, 72) وقيم y ضمن range(0, 480, 72).
  3. واصل رسم السفينة بعد المربعات.

جرّب بنفسك

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sky Tiles")
clock = pygame.time.Clock()

ship = pygame.image.load("assets/images/ship.png").convert_alpha()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    screen.blit(ship, (288, 360))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

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

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