קפיצות קצרות
חלק מהיחידה עולמות במסלול ה-Pygame של Coddy. שיעור 12 מתוך 35.
ברוב משחקי הפלטפורמה, הקשה קצרה גורמת לקפיצה קטנה, ולחיצה ממושכת גורמת לקפיצה מלאה. כך השחקן יכול לבחור את גובהה של כל קפיצה.
כשמשחררים את מקש הקפיצה, מתקבל אירוע KEYUP. אם השחקן עדיין עולה במהירות, האטו את העלייה:
elif event.type == pygame.KEYUP and event.key in (pygame.K_SPACE, pygame.K_UP):
if vel_y < -4:
vel_y = -4מקש שמוחזק לחוץ לא שולח KEYUP במהלך העלייה, ולכן הקפיצה מגיעה לגובה המלא שלה. הקשה קצרה שולחת את האירוע כעבור פריים אחד, המהירות יורדת ל־-4, וכעבור כמה פריימים כוח הכבידה גורם לשחקן להסתובב ולרדת.
התנאי vel_y < -4 חשוב. סמוך לשיא הקפיצה או בזמן נפילה, vel_y גדול מ־-4, והגדרתו ל־-4 בשלב הזה תדחוף את השחקן בחזרה למעלה.
אתגר
קל- בעת שחרור מקש הרווח או החץ למעלה, כאשר
vel_yקטן מ־-4, יש להגדירvel_y = -4. - יש להשאיר את הקפיצה בעת
KEYDOWNכפי שהיא.
נסו בעצמכם
import pygame
TILE = 36
FLOOR = 324
GRAVITY = 1
JUMP = -15
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Short Hops")
clock = pygame.time.Clock()
background = pygame.image.load("assets/backgrounds/clouds.png").convert_alpha()
grass_img = pygame.image.load("assets/images/grass.png").convert_alpha()
player_img = pygame.image.load("assets/images/player.png").convert_alpha()
player = player_img.get_rect(topleft=(264, 40))
vel_y = 0
on_ground = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key in (pygame.K_SPACE, pygame.K_UP):
if on_ground:
vel_y = JUMP
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
vel_y += GRAVITY
player.y += vel_y
on_ground = False
if player.bottom > FLOOR:
player.bottom = FLOOR
vel_y = 0
on_ground = True
for y in range(0, 360, 72):
for x in range(0, 576, 72):
screen.blit(background, (x, y))
for x in range(0, 576, TILE):
screen.blit(grass_img, (x, FLOOR))
screen.blit(player_img, player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה עולמות
תרגלו בעצמכם: Pygame אונליין