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