Pygame -obrazok bez pozadia – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pygame -obrazok bez pozadia – Python – Fórum – Programujte.comPygame -obrazok bez pozadia – Python – Fórum – Programujte.com

 

Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #1
-
0
-

Zdravím,potrebujem pomoc,ako do PyGame importujem obrázok,nar. loptu,no potrebujem ju bez pozadia,cisto loptu,lebo ten obrazok je stvorec takze mam biely stvorec na modrom pozadi s loptou vo vnutri :-) Diky

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #2
-
0
-

#1 Tinux
Ahoj, použij key color. Pygame potom nebude vykreslovat Pixely oné barvy, musíš si ale zjistit, jaký kód má ta barva pozadí

Ukázkový kód:

# pokud má obrázek červené pozadí, tak ta červená se nezobrazí
image = pygame.image.load("some_image.png").convert()
image.set_colorkey((255, 0, 0))
Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #3
-
0
-

Niekde som to uz videl ale nevedel som naco to je :-)) alebo v skicari to prefarbim(pozadie)na nejaku farbu a kod opisem:-)) btw nevedel by si mi pomoct este s uhlami? :-))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #4
-
0
-

#3 Tinux
Jasně, per to do mě, snad budu vědět :D

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #5
-
0
-

Robim tu hru kde mas dole ten obdlznik s ktorym hybes a gulickou nicis tie hore,po grafickej stranke to mam,jedine co mi chyba je uhol odrazu :P Ak chces kod tak ti ho poslem do spravy...lebo som uz aj videl ako vyratat uhol medzi 2 bodmi ale neviem to zakomponovat do mojho kodu

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #6
-
0
-

#5 Tinux
Dobře, můžeš :)

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #7
-
0
-

To asi nepojde ,neviem preco :P aj ked som sa prihlasil ,ok dam ti ho sem,keby cokolvek pytaj sa,trochu som to spravil kedze chlapik mi poradil na stacku ze proste len zmenim os ak narazim zboku co ale nie je optimalne riesenie podla mna :P

import pygame
import sys
scr_w=640
scr_h=480
scr=pygame.display.set_mode((scr_w,scr_h))
sprites_group=pygame.sprite.Group()
blocks_group=pygame.sprite.Group()
main_block_group=pygame.sprite.Group()
 
class blockToDestroy(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()
        self.blockToDestroy_w=35
        self.blockToDestroy_h=15
        self.img=pygame.image.load("C:\Python34\locktodes.png").convert()
        self.image=pygame.Surface([self.blockToDestroy_w,self.blockToDestroy_h])

        self.rect=self.image.get_rect()
        self.image.blit(self.img,(0,0))
                
                
                
                

        
class Block(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.block_w=80
        self.block_h=20
        
        self.img=pygame.image.load("C:\Python34\ock.png").convert()
        self.image=pygame.Surface([self.block_w,self.block_h])
        
        self.rect=self.image.get_rect()
        self.image.blit(self.img,(0,0))
        
        self.rect.y=400
        self.rect.x=scr_w/2
        
        self.speed_block_x=1
 
    
        
 
class Ball(pygame.sprite.Sprite):
    def __init__(self):
        block=Block()
        super().__init__()
        self.ball_w=30
        self.speed_ball_y=0
        self.speed_ball_x=0
        
        self.img=pygame.image.load("C:\Python34\kocka.png").convert()
        
        self.image=pygame.Surface([self.ball_w,self.ball_w])
       
 
        self.rect=self.image.get_rect()
        self.image.blit(self.img,(0,0))
        
        self.rect.x=350
        self.rect.y=block.rect.y-self.ball_w
 
class Game():
    def __init__(self):
        self.jump=-10
        self.background=pygame.image.load("C:\Python34\images.png").convert()
        self.running=True
        self.block=Block()
        self.lopta=Ball()
        
        sprites_group.add(self.block)
        main_block_group.add(self.block)
        sprites_group.add(self.lopta)
        self.onGround=True
 
    def checkBounds(self):
        if self.block.rect.x<0:
            self.block.rect.x=0
 
        if self.block.rect.x>scr_w-self.block.block_w:
            self.block.rect.x=scr_w-self.block.block_w
        if self.lopta.rect.x<0:
            self.lopta.speed_ball_x*=-1
        if self.lopta.rect.x+self.lopta.ball_w>scr_w:
            self.lopta.speed_ball_x*=-1

        

    
    def spriteCollision(self):
        if pygame.sprite.spritecollide(self.lopta,blocks_group,True):
            self.lopta.speed_ball_y*=-1
            

    def checkMainBlock(self):
        if pygame.sprite.spritecollide(self.lopta,main_block_group,False):
            self.lopta.speed_ball_y*=-1
    def gameOver(self):
        if self.lopta.rect.y>400:
            sys.exit()
            pygame.quit()
            quit()
    def event(self):
        
        self.keys=pygame.key.get_pressed()
        for e in pygame.event.get():
            if e.type==pygame.QUIT:
                self.running=False
        if self.keys[pygame.K_RIGHT]:
            self.block.rect.x+=self.block.speed_block_x
        elif self.keys[pygame.K_LEFT]:
            self.block.rect.x-=self.block.speed_block_x
        elif self.keys[pygame.K_UP] and self.onGround:
            self.lopta.speed_ball_y=-1
            self.lopta.speed_ball_x=-1
        self.lopta.rect.y+=self.lopta.speed_ball_y
        self.lopta.rect.x+=self.lopta.speed_ball_x
        if self.lopta.rect.y<0:
            self.lopta.speed_ball_y=1
        self.checkBounds()
        if self.lopta.rect.y==370:
            self.onGround=True
        else:
            self.onGround=False
        
        

    def makeBlocks(self):
        for i in range(0,120,20):
            for j in range(0,640,40):
                self.btd=blockToDestroy()
                self.btd.rect.x=j
                self.btd.rect.y=i
                blocks_group.add(self.btd)
                sprites_group.add(self.btd)
        
    
        
 
 
    def main(self):
        self.makeBlocks()
                
    
                
		
        while self.running:
            
            self.event()
            scr.blit(self.background,(0,0))
            self.spriteCollision()
            self.checkMainBlock()
            self.gameOver()
            sprites_group.draw(scr)
            pygame.display.flip()

           

newGame=Game()
newGame.main()
pygame.quit()
quit()


nie je to bohvieako upravené,mozu tam byt nejake drobnosti :-))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #8
-
0
-

#7 Tinux
Takže to už funguje? :)

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #9
-
0
-

No "funguje" ale nie tak ako by som chcel ,ja by som to chcel proste tak ze pod akym uhlom dopadne pod takým sa odrazí na opačnú stranu :P

Nahlásit jako SPAM
IP: 78.98.31.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #10
-
0
-

   

Ako original :-)

Nahlásit jako SPAM
IP: 78.98.31.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #11
-
0
-

Ono zalezi samozrejme aj na aku stranu dopadne ak na tu z kade prichadza lopta tak ju vrati na tu istu ale ak z druhej strany tak naopak ak chapes :-))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #12
-
0
-

#11 Tinux
Nemůžeš mi poslat ty assety, abych to mohl sputit?

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #13
-
0
-

A kam ti to mam poslat?:-))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #14
-
0
-

#13 Tinux
gcx11@seznam.cz

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #15
-
0
-

Teraz ale neviem ze co konkretne chces:-))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #16
-
0
-

#15 Tinux
Ty obrázky :D Abych to mohl sputit :D

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #17
-
0
-

Aha no jasné :-)))

Nahlásit jako SPAM
IP: 78.98.31.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #18
-
0
-

Mas to tam ak ti to nepojde poslem ti to kazde zvlášť:))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
20. 7. 2015   #19
-
0
-

#18 Tinux
Stačí, když na to mrknu zítra? Dneska už to nedám :)

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
20. 7. 2015   #20
-
0
-

Jasné pohode :))

Nahlásit jako SPAM
IP: 78.98.31.–
Tinux
~ Anonymní uživatel
14 příspěvků
21. 7. 2015   #21
-
0
-

Dokoncil som to nejak ,poslem ti to na mail:-))

Nahlásit jako SPAM
IP: 78.98.31.–
gcx110
Návštěvník
21. 7. 2015   #22
-
0
-

#21 Tinux

Dobře, můžeš :)

Nahlásit jako SPAM
IP: 46.23.54.–
gcx110
Návštěvník
21. 7. 2015   #23
-
0
-

#21 Tinux
Celkem dobrá práce, akorát míček se odraží od "pálky" divně a navíc máš pevnou cestu k obrázkům :)

Načítání obrázků se dá vyřešit takto:

path = os.path.dirname(os.path.realpath(__file__))

def load_image(name):
    return pygame.image.load(os.path.join(path, name)).convert()


#v kódu při načítání obrázků stačí napsat
img = load_image("image.png") 

Obrázky musí být ve stejné složce jako je hra

Nahlásit jako SPAM
IP: 46.23.54.–
Tinux
~ Anonymní uživatel
14 příspěvků
21. 7. 2015   #24
-
0
-
Nahlásit jako SPAM
IP: 78.98.31.–
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, 18 hostů

 

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