3. Pygame hra

3.4. OOP

import pygame
pygame.init()

okno = pygame.display.set_mode((500,480))

pygame.display.set_caption("Prvá hra")

kracaDoprava = [pygame.image.load('doprava1.png'), pygame.image.load('doprava2.png'), pygame.image.load('doprava3.png'), pygame.image.load('doprava4.png'), pygame.image.load('doprava5.png'), pygame.image.load('doprava6.png'), pygame.image.load('doprava7.png'), pygame.image.load('doprava8.png'), pygame.image.load('doprava9.png')]

kracaDolava = [pygame.image.load('dolava1.png'), pygame.image.load('dolava2.png'), pygame.image.load('dolava3.png'), pygame.image.load('dolava4.png'), pygame.image.load('dolava5.png'), pygame.image.load('dolava6.png'), pygame.image.load('dolava7.png'), pygame.image.load('dolava8.png'), pygame.image.load('dolava9.png')]

pozadieObr = pygame.image.load('pozadie.jpg')

postavaStoji = pygame.image.load('postavaStoji.png')

clock = pygame.time.Clock()

class hrac(object):

  def __init__(self,x,y,sirka,vyska):
        self.x = x
        self.y = y
        self.sirka = sirka
        self.vyska = vyska
        self.posun = 5
        self.jeVoVyskoku = False
        self.otocenaVlavo = False
        self.otocenaVpravo = False
        self.pocetKrokov = 0
        self.skokPocet = 10

    def vykresliPostavu(self, okno):
        if self.pocetKrokov + 1 >= 27:
            self.pocetKrokov = 0

        if self.otocenaVlavo:
            okno.blit(kracaDolava[self.pocetKrokov//3], (self.x,self.y))
            self.pocetKrokov += 1
        elif self.otocenaVpravo:
            okno.blit(kracaDoprava[self.pocetKrokov//3], (self.x,self.y))
            self.pocetKrokov +=1
        else:
            okno.blit(postavaStoji, (self.x,self.y))
            
def prekresliHerneOkno():
    okno.blit(pozadieObr, (0,0))  
    hrac1.vykresliPostavu(okno)
    pygame.display.update() 
    
hrac1 = hrac(200, 410, 64,64)
spustena = True

while spustena:
    clock.tick(27)

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

    klavesy = pygame.key.get_pressed()
    
    if klavesy[pygame.K_LEFT] and hrac1.x > hrac1.posun: 
        hrac1.x -= hrac1.posun
        hrac1.otocenaVlavo = True
        hrac1.otocenaVpravo = False

    elif klavesy[pygame.K_RIGHT] and hrac1.x < 500 - hrac1.posun - hrac1.sirka:  
        hrac1.x += hrac1.posun
        hrac1.otocenaVlavo = False
        hrac1.otocenaVpravo = True
        
    else: 
        hrac1.otocenaVlavo = False
        hrac1.otocenaVpravo = False
        hrac1.pocetKrokov = 0
        
    if not(hrac1.jeVoVyskoku):
        if klavesy[pygame.K_SPACE]:
            hrac1.jeVoVyskoku = True
            hrac1.otocenaVlavo = False
            hrac1.otocenaVpravo = False
            hrac1.pocetKrokov = 0
    else:
        if hrac1.skokPocet >= -10:
            hrac1.y -= (hrac1.skokPocet * abs(hrac1.skokPocet)) * 0.5
            hrac1.skokPocet -= 1
        else: 
            hrac1.skokPocet = 10
            hrac1.jeVoVyskoku = False

    prekresliHerneOkno() 
    
    
pygame.quit()