3. Pygame hra

3.2. Skákanie

Udalosť na ohraničenie pohybu ku krajom obrazovky
while spustena:
    #...
    
    if klávesy[pygame.K_LEFT] and x > posun:
        x -= posun

    if klávesy[pygame.K_RIGHT] and x < 500 - posun - sirka:
        x += posun

    if klávesy[pygame.K_UP] and y > posun:
        y -= posun

    if klávesy[pygame.K_DOWN] and y < 500 - height - vyska:
        y += posun
   
   #...
Skákanie vytvoríme nové premenné, ktoré budú uchovávať stav, či sme vo výskoku a o koľko vyskočíme. Premenné vytvoríme mimo hernej slučky. V hernej slucke upravime podmienky s pohybom
while spustena:
  #...x,y,sirka, vyska, posun
    
  jeVoVyskoku = False
  skokPocet = 10
   
  while spustena: 
      #...
      if klavesy[pygame.K_LEFT] and x > posun: 
        x -= posun

      if klavesy[pygame.K_RIGHT] and x < 500 - posun - sirka:  
        x += posun
        
      if not(jeVoVyskoku): 
        if klavesy[pygame.K_UP] and y > posun: 
            y -= posun

        if klavesy[pygame.K_DOWN] and y < 500 - vyska - posun:
            y += posun

        if klavesy[pygame.K_SPACE]:
            jeVoVyskoku = True
    else:
        # co sa stane ked skaceme

Do časti else pridáme, čo sa stane, keď skáčeme
else:
 	if skokPocet >= -10:
   	y -= (skokPocet * abs(skokPocet)) * 0.5
   	skokPocet -= 1
	else: 
    skokPocet = 10
    jeVoVyskoku = False
Celý kód:
import pygame
pygame.init()

okno = pygame.display.set_mode((500,500))
pygame.display.set_caption("Prvá hra")

x = 50
y = 50
sirka = 40
vyska = 60
posun = 5

jeVoVyskoku = False
skokPocet = 10

spustena = True

while spustena:
    pygame.time.delay(100)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            spustena = False

    klávesy = pygame.key.get_pressed()
    
    if klávesy[pygame.K_LEFT] and x > posun: :
        x -= posun

    if klávesy[pygame.K_RIGHT]  and x < 500 - posun - sirka: :
        x += posun
		
    if not(jeVoVyskoku): 
    		if klávesy[pygame.K_UP] and y > posun:
       		 y -= posun

    		if klávesy[pygame.K_DOWN] and y < 500 - vyska - posun:
       		 y += posun
    
        if klávesy[pygame.K_SPACE]:
            jeVoVyskoku = True
    else:
        if skokPocet >= -10:
            y -= (skokPocet * abs(skokPocet)) * 0.5
            skokPocet -= 1
        else: 
            skokPocet = 10
            jeVoVyskoku = False        
   
    okno.fill((0,0,0))  
    pygame.draw.rect(okno, (255,0,0), (x, y, width, height))   
    pygame.display.update() 
    
pygame.quit()