تبليط الخلفية
جزء من قسم الكائنات والصور في رحلة 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().
التحدي
سهل- بعد
set_mode، حمّلassets/backgrounds/sky.pngباستخدام.convert()إلى متغير اسمهtile. - استبدل
screen.fill(...)بحلقتين ترسمانtileعند كل(x, y)، حيث تكون قيم x ضمنrange(0, 640, 72)وقيم y ضمنrange(0, 480, 72). - واصل رسم السفينة بعد المربعات.
جرّب بنفسك
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()
جميع دروس الكائنات والصور
4الكائنات الرسومية والمجموعات
صنف Spriteالمجموعاتالإزالة باستخدام kill()الالتقاط باستخدام spritecollideمجموعة ضد مجموعة2دوّر واقلب وغيّر الحجم
التدوير حول المركزوجّهها في اتجاه الطيرانغيّر حجم الصورةدوّر انطلاقًا من الصورة الأصلية5تصادمات مثالية على مستوى البكسل
المستطيلات تبدو غير منصفةالأقنعةكائنات Sprite مثالية على مستوى البكسلمناطق التصادم الدائرية6التحريك باستخدام أوراق الرسوم المتحركة
قصّ ورقة الرسوم المتحركةعداد الإطاراتالتحريك باستخدام الوقتانفجار لمرة واحدةتدرّب بنفسك: Playground لـ Pygame