Menu
CoddyTech

להישאר על המסך

חלק מהיחידה לולאת המשחק במסלול ה-Pygame של Coddy. שיעור 7 מתוך 32.

החזק את מקש החץ ימינה מספיק זמן, והריבוע יצא מהחלון. כדי להשאיר אותו בתוכו, הגבל את x ואת y אחרי שתזיז אותם.

min(a, b) מחזירה את המספר הקטן יותר, ו־max(a, b) את הגדול יותר. יחד הן משאירות מספר בין שני גבולות:

x = max(0, min(x, 480 - 40))

min(x, 440) מונעת מ־x לחרוג מ־440, ו־max(0, ...) מונעת ממנו לרדת מתחת ל־0. למה 440 ולא 480? x הוא הצד השמאלי של הריבוע, ולכן הצד הימני נמצא ב־x + 40. כשהערך הוא 440, הצד הימני נוגע בקצה החלון.

אותו הדבר נכון גם לגבי y, בהתאם לגובה החלון.

challenge icon

אתגר

קל

אחרי ארבע בדיקות החצים ולפני המילוי, השאר את הריבוע בתוך החלון בגודל 480 על 360: הגבל את x לטווח שבין 0 ל־440 ואת y לטווח שבין 0 ל־320.

נסו בעצמכם

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

x, y = 220, 160

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    speed = 4
    if keys[pygame.K_SPACE]:
        speed = 8
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

כל השיעורים ביחידה לולאת המשחק

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