מלבנים מרגישים לא הוגנים
חלק מהיחידה ספרייטים ותמונות במסלול ה-Pygame של Coddy. שיעור 21 מתוך 36.
הטיסו את החללית לעבר כדור הקוצים בעזרת מקשי החצים. התנגשויות בין Rect, כמו colliderect, מהירות ופשוטות, אבל הן מטעות כשמדובר בכדור עגול. ה־Rect של הכדור הוא הריבוע שמקיף אותו, כולל הפינות השקופות, ול־Rect של החללית יש שטח ריק לצד האף שלה.
הפכו את הבדיקה לגלויה: שרטטו את קווי המתאר של ה־Rect של הכדור, וצבעו אותם בהתאם למה ש־colliderect אומר.
if ship_rect.colliderect(ball_rect):
colour = (230, 60, 60)
else:
colour = (90, 90, 120)
pygame.draw.rect(screen, colour, ball_rect, 2)אחר כך התקרבו לכדור מצד ימין למטה. קווי המתאר הופכים לאדומים כשעדיין יש רווח ברור של שמיים בין החללית לקוצים: הפינות של שני ה־Rect חופפות, אבל התמונות עצמן לא. במשחק, פירוש הדבר הוא אובדן חיים לשווא, והשחקנים שמים לב לכך.
בשיעורים הבאים נבדוק את התמונות עצמן.
אתגר
קלאחרי ציור הכדור והחללית, תחמו את ball_rect בעובי של 2 פיקסלים: באדום (230, 60, 60) כאשר ship_rect מתנגש בו, ובאפור (90, 90, 120) אחרת. לאחר מכן הטיסו את החללית מהפינה הימנית התחתונה ושימו לב לפינות.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Near Miss")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(topleft=(420, 320))
ball = pygame.image.load("assets/images/spike_ball.png").convert_alpha()
ball_rect = ball.get_rect(center=(320, 240))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 4
if keys[pygame.K_RIGHT]:
ship_rect.x += 4
if keys[pygame.K_UP]:
ship_rect.y -= 4
if keys[pygame.K_DOWN]:
ship_rect.y += 4
screen.fill((20, 22, 40))
screen.blit(ball, ball_rect)
screen.blit(ship, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין