Menu
CoddyTech

غيّر حجم الصورة

جزء من قسم الكائنات والصور في رحلة 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) إلى وضع الزعيم الكبير بعيدًا عن المركز.

challenge icon

التحدي

سهل
  1. كبّر boss بمقدار 2 قبل الحلقة، ثم أنشئ boss_rect من الصورة المكبّرة، واجعل مركزها عند (320, 150).
  2. أنشئ icon: السفينة بعد تغيير حجمها إلى (32, 32).
  3. ارسم 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()

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

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