Saltelli brevi
Fa parte della sezione Mondi del percorso Pygame di Coddy. Lezione 12 di 35.
Nella maggior parte dei platform, un tocco rapido dà un piccolo balzo e una pressione prolungata produce un salto completo. Questo permette al giocatore di scegliere l'altezza di ogni salto.
Quando il tasto del salto viene rilasciato, arriva un evento KEYUP. Se il giocatore sta ancora salendo velocemente, rallenta la salita:
elif event.type == pygame.KEYUP and event.key in (pygame.K_SPACE, pygame.K_UP):
if vel_y < -4:
vel_y = -4Un tasto tenuto premuto non invia mai KEYUP durante la salita, quindi il salto raggiunge la sua altezza massima. Un tocco lo invia un fotogramma dopo, la velocità scende a -4 e la gravità fa invertire la direzione al giocatore dopo pochi fotogrammi.
Il controllo vel_y < -4 è importante. Vicino al punto più alto, o mentre sta cadendo, vel_y è superiore a -4 e impostarlo a -4 in quel punto spingerebbe il giocatore di nuovo verso l'alto.
Sfida
Facile- Quando si verifica un
KEYUPdella barra spaziatrice o della freccia su, sevel_yè minore di -4, impostavel_y = -4. - Lascia invariato il salto con
KEYDOWN.
Provalo tu
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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Mondi
1Mappe dal testo
Un livello in testoRighe e colonneLettere con significatoDove inizia il giocatoreUna schermata alla volta4Collisioni con le piattaforme
Muri a sinistra e a destraAtterrare sulle piattaformeBattere la testaCadere fuori dal livelloUn asse alla volta5Una telecamera a scorrimento
Un offset della telecameraSegui il giocatoreMantieni la telecamera all'internoParallasse3Gravità e salto
Cadere con la gravitàSaltare da terraSaltelli breviUna velocità massima di cadutaBuffer del saltoEsercitati da solo: Playground Pygame