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. שנו את גודל הבוס פי 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()

כל השיעורים ביחידה ספרייטים ותמונות

תרגלו בעצמכם: Pygame אונליין