Menu
CoddyTech

מלבנים מרגישים לא הוגנים

חלק מהיחידה ספרייטים ותמונות במסלול ה-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 חופפות, אבל התמונות עצמן לא. במשחק, פירוש הדבר הוא אובדן חיים לשווא, והשחקנים שמים לב לכך.

בשיעורים הבאים נבדוק את התמונות עצמן.

challenge icon

אתגר

קל

אחרי ציור הכדור והחללית, תחמו את 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()

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

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