Menu
CoddyTech

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

שיעור 7 מתוך 41 בקורס צרו משחקים עם Pygame של Coddy.

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

  1. אחרי ארבע בדיקות החצים, ולפני פעולת המילוי, יש להגביל את x לטווח שבין 0 ל־440.
  2. יש להגביל את 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

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