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