PyGame - pomoc s jednoduchými vecami

Programovacie jazyky, rady, poradňa...
sliziky
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 223
Registrovaný: 29 júl 2012, 13:22

PyGame - pomoc s jednoduchými vecami

Príspevok od používateľa sliziky »

Zdravím ,našiel by sa tu nejaký "odborník" na pygame ? Nebudem tu hadzať kod pretoze je viacej veci ktore ma zaujimaju,ale v podstate ide len o jednoduche nejake animacie,nepriatelia,strielanie a pod. Ak sa taký ochotný človek nájde tak mi napíš prosím ťa,ďakujem :-))
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: PyGame - pomoc s jednoduchými vecami

Príspevok od používateľa xadman »

Najlepšie by bolo napísať tu. Ja som robil v pygame pár pokusov, hádam si niečo z toho pamätám.
sliziky
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 223
Registrovaný: 29 júl 2012, 13:22

Re: PyGame - pomoc s jednoduchými vecami

Príspevok od používateľa sliziky »

Momentalne mam problem ze ked skocim tak sa mi nehybe do stran a neviem ako to spravit tak aby ked skocim som sa hybal aj do stran a taktiez ako spomalit skakanie lebo to je celkom rychle a plynulejsie pohyby kocky :-)) Kod:

Kód: Vybrať všetko

import pygame
class App():
    def __init__(self):
        pygame.init()
        self.clock=pygame.time.Clock()
        pygame.key.set_repeat(50,50) #drzi klavesu a pohybuje sa
        self.window_height=480 #velkost okna
        self.window_width=640 #velkost okna
        self.screen=pygame.display.set_mode((self.window_width,self.window_height))
        
        
        self._y=400 #y suradnice
        self._x=100 #x suradnice
        self.ground_height=40 #vyska zeme
        self.ground_width=1000 #sirka zeme
        self.rect_width=40 #strana "hraca"-kocky
        self.rect_height=40
        
        self.white=(255,255,255) #farby RGB
        self.black=(0,0,0)
        self.red=(255,0,0)
        self.green=(0,255,0)
        self.blue=(0,0,255)
        
        self.FPS=30
        self.isOnGround=True #ci je kocka na "zemi"
        self.running=True #kvoli main
        self.speed=-10 #ako vysoko skoci
         
    def checkBound(self,x,y): ##kontroluje ci je stvorec vo vnutri okna
        if x<0:
            self._x=0
        if y<0:
            self._y=0
        if x>self.window_width-self.rect_width:
            self._x=self.window_width-self.rect_width
        if y>self.window_height-self.rect_height-self.ground_height:
            self._y=self.window_height-self.rect_height-self.ground_height
    def jump(self): ##skok
        
        self.isOnGround=False
        while self.isOnGround==False:
            
            self._y+=self.speed
            self.speed+=1
            
            
            print(self._y)
            if self._y>=self.window_height-self.ground_height-self.rect_height: #refresni 
                
                
                self._y=self.window_height-self.ground_height-self.rect_height
                self.speed=-10
                self.isOnGround=True
            self.update() #update scrn
            

            
            
        
        
        
    def event(self): #stlacanie klaves
        self.keys=pygame.key.get_pressed()
        for e in pygame.event.get():
            if e.type==pygame.QUIT:
                self.running=False
            if e.type==pygame.KEYDOWN:
                if self.keys[pygame.K_RIGHT]:
                    self._x+=10
                if self.keys[pygame.K_LEFT]:
                    self._x-=10
                if e.key==pygame.K_SPACE and self.isOnGround:
                    self.jump()
                    
                
    def update(self): #update okna
        self.screen.fill((self.white))
        self.checkBound(self._x,self._y)
        pygame.draw.rect(self.screen,(self.blue),(0,self.window_height-self.ground_height,self.ground_width,self.ground_height))
        pygame.draw.rect(self.screen,(self.red),(self._x,self._y,self.rect_width,self.rect_height))
        pygame.display.update()
    def main(self): #main
        while self.running:
            self.clock.tick(self.FPS) #kvoli FPS
            self.event()
            self.update()
    
            
myApp=App()
myApp.main()
pygame.quit()
quit()
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: PyGame - pomoc s jednoduchými vecami

Príspevok od používateľa xadman »

No, to je preto, lebo tam máš ten while, v ktorom potom samozrejme nemôžeš kontrolovať doprava/dolava.
Navrhujem aby si pri stlačení medzery len nastavil že jumping = True a potom v update pripočítaval y nejakým štýlom
Sær
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 53
Registrovaný: 17 dec 2013, 15:10

Re: PyGame - pomoc s jednoduchými vecami

Príspevok od používateľa Sær »

Navrhujem si radšej pozrieť základy lineárnej algebry a implementovať rýchlosť pomocou 2D vektora, napr. tu: http://blog.wolfire.com/2009/07/linear- ... rs-part-1/
japaja
Guru wannabe
Guru wannabe
Príspevky: 2424
Registrovaný: 18 jan 2012, 18:57

Re: PyGame - pomoc s jednoduchými vecami

Príspevok od používateľa japaja »

xadman
keď stlačiš 2x medzernik zrobiš dvojitý skok = treba podmienku aby to bolo false keď už je vo vzduchu
Napísať odpoveď