מיקום באמצעות Rect
חלק מהיחידה ספרייטים ותמונות במסלול ה-Pygame של Coddy. שיעור 2 מתוך 36.
חישוב ידני של הפינה השמאלית העליונה דורש חיבור עבור כל תמונה שמציבים. כל Surface יכול לספק Rect בגודל שלו:
ship_rect = ship.get_rect(center=(320, 400))get_rect() לבדו הוא Rect(0, 0, 64, 64). מילת מפתח ממקמת אותו: center, midbottom, topleft או כל נקודה אחרת שיש ל-Rect. כאן מרכז הספינה ממוקם ב-(320, 400), ו-pygame מחשב את הפינה: (288, 368).
ציירו את התמונה ב-Rect והיא תופיע בפינה השמאלית העליונה של ה-Rect:
screen.blit(ship, ship_rect)כעת ה-Rect הוא המיקום של הספינה. שנו את ship_rect.x או את ship_rect.centery, ובפריים הבא הספינה תצויר שם. כך מזיזים כל תמונה במשחק: שומרים Rect, משנים את Rect ומציירים ב-Rect. זה גם ה-Rect שבו משתמשים לבדיקת התנגשויות, כמו ביחידה 2.
אתגר
קל- אחרי טעינת
ship, צרו אתship_rect = ship.get_rect(center=(320, 400)). - הציגו את
shipבמיקוםship_rectבמקום בנקודה קבועה.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Space Images")
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, 208))
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין