PyGame Skakanie aj do x aj do y – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

PyGame Skakanie aj do x aj do y – Python – Fórum – Programujte.comPyGame Skakanie aj do x aj do y – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Pararam
~ Anonymní uživatel
5 příspěvků
18. 7. 2015   #1
-
0
-

Zdravim ,mam mensi problem v PyGame ,teda skor otazku
 

import pygame
class App():
    def __init__(self):
        pygame.init()
        self.clock=pygame.time.Clock()
        
        self.window_height=480
        self.window_width=640
        self._y=400
        self._x=100
        self.ground_height=40
        self.ground_width=1000
        self.isOnGround=True
        pygame.key.set_repeat(50,50)
        self.rect_width=40
        self.rect_height=40
        self.running=True
        self.speed=-10
        self.screen=pygame.display.set_mode((self.window_width,self.window_height))
    def checkBound(self,x,y):
        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):
        
        self.isOnGround=False
        while self.isOnGround==False:
            
            self._y+=self.speed
            self.speed+=1
            
            
            print(self._y,self.window_height-self.ground_height-self.rect_height)
            if self._y>=self.window_height-self.ground_height-self.rect_height:
                
                
                self._y=self.window_height-self.ground_height-self.rect_height
                self.speed=-10
                self.isOnGround=True

            self.update()
            

            
            
        
        
        
    def event(self):
        for e in pygame.event.get():
            if e.type==pygame.QUIT:
                self.running=False
            if e.type==pygame.KEYDOWN:
                if e.key==pygame.K_UP:
                    self._y-=10
                if e.key==pygame.K_DOWN:
                    self._y+=10
                if e.key==pygame.K_RIGHT:
                    self._x+=10
                if e.key==pygame.K_LEFT:
                    self._x-=10
                if e.key==pygame.K_SPACE and self.isOnGround:
                    self.jump()
                    
                
    def update(self):
        self.screen.fill((255,255,255))
        self.checkBound(self._x,self._y)
        pygame.draw.rect(self.screen,(0,0,255),(0,self.window_height-self.ground_height,self.ground_width,self.ground_height))
        pygame.draw.rect(self.screen,(255,0,0),(self._x,self._y,self.rect_width,self.rect_height))
        pygame.display.update()
    def main(self):
        while self.running:
            self.clock.tick(30)
            self.event()
            self.update()
    
            
myApp=App()
myApp.main()
pygame.quit()
quit()

Otazka znie asi takto,ked sa hybem doprava ci dolava a skocim tak sa zastavim a skocim,no a ako iste viete moja otazka znie ako zariadim aby ked skocim sa posuval aj na osi x ..Dakujem velmi pekne:-))
 

Nahlásit jako SPAM
IP: 78.98.31.–
Reklama
Reklama
gcx110
Návštěvník
20. 7. 2015   #2
-
+1
-
Zajímavé

#1 Pararam
Ahoj, zkus si udělat stavy jednotlivých pohybů, např. STANDING, WALKING_LEFT, JUMPING_UP, FALLING_RIGHT a tak podobně. http://gameprogrammingpatterns.com/state.html

Například pokud bude hráč stát na místě (stav STANDING), a ty zmáčkneš A a W, tak se nastaví stav na JUMPING_RIGHT, podle stavu potom v kódu, který ovládá pohyb, posuneš hráče

Dále můžeš využít pygame.KEYUP, tenhle event se spouští, když hráč klávesu pustí. Hráč půjde doleva (stav WALKING_LEFT) a pustí klávesu K_LEFT, tak mu nastavíš stav na STANDING

Něco podobného už jsem řešil:

https://github.com/gcx11/GameEngineTest/blob/master/main.py

Doufám, že jsem to podal aspoň trochu srozumitelně

Nahlásit jako SPAM
IP: 46.23.54.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 127 hostů

Podobná vlákna

Pygame a ikona — založil Polarski

Pygame Linux — založil Anonymní uživatel

Pygame instalace — založil Akimi Keita

Pygame problem — založil rAdo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý