غيّر حجم الصورة
جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 8 من 36.
ينبغي أن يبدو زعيم المرحلة كبيرًا، بينما تحتاج عدّادات الأرواح إلى سفن صغيرة. يمكن استخدام الملفات نفسها لكليهما: إذ ينشئ تغيير الحجم نسخةً معدّلة الأبعاد.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))تضرب scale_by(image, 2) كلا البُعدين في 2: فيصبح الزعيم ذو الأبعاد 64 في 64 بحجم 128 في 128. أما scale(image, (w, h)) فيجعله بالضبط بعرض w وارتفاع h بكسل، حتى لو أدى ذلك إلى تمديده.
تغيير الحجم بطيء مقارنةً بعملية blit، وكل نسخة جديدة تجعل البكسلات أكثر ضبابية أو تكتلًا قليلًا. غيّر الحجم مرة واحدة قبل الحلقة، انطلاقًا من الملف الأصلي، وارسم النسخة التي غُيّر حجمها في كل إطار.
أنشئ Rect بعد تغيير الحجم. فـ Rect الذي يُنشأ من الصورة ذات الأبعاد 64 في 64 سيكون بالحجم القديم، وسيؤدي center=(320, 150) إلى وضع الزعيم الكبير بعيدًا عن المركز.
التحدي
سهل- كبّر
bossبمقدار 2 قبل الحلقة، ثم أنشئboss_rectمن الصورة المكبّرة، واجعل مركزها عند(320, 150). - أنشئ
icon: السفينة بعد تغيير حجمها إلى(32, 32). - ارسم
iconثلاث مرات، بحيث تكون زاويته العلوية اليسرى عند(10, 10)و(50, 10)و(90, 10).
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()
boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
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(boss, boss_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
جميع دروس الكائنات والصور
4الكائنات الرسومية والمجموعات
صنف Spriteالمجموعاتالإزالة باستخدام kill()الالتقاط باستخدام spritecollideمجموعة ضد مجموعة2دوّر واقلب وغيّر الحجم
التدوير حول المركزوجّهها في اتجاه الطيرانغيّر حجم الصورةدوّر انطلاقًا من الصورة الأصلية5تصادمات مثالية على مستوى البكسل
المستطيلات تبدو غير منصفةالأقنعةكائنات Sprite مثالية على مستوى البكسلمناطق التصادم الدائرية6التحريك باستخدام أوراق الرسوم المتحركة
قصّ ورقة الرسوم المتحركةعداد الإطاراتالتحريك باستخدام الوقتانفجار لمرة واحدةتدرّب بنفسك: Playground لـ Pygame