שינוי גודל של תמונה
חלק מהיחידה ספרייטים ותמונות במסלול ה-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) ימקם את הבוס הגדול מחוץ למרכז.
אתגר
קל- שנו את גודל הבוס פי 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()
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין