viernes, 16 de octubre de 2015

El gato con bolas


#El siguiente es un pequeño juego de un gato persiguiendo unas pelotas, y
#encontrando algo curioso en cada ocasión.
#Puedes ver el video en: https://youtu.be/7Ho4JpCNwg0
import pygame,time,random
from pygame.locals import *

SCREENRECT = Rect(0,0,840,680)



class Gato(pygame.sprite.Sprite):
    speed = 5
    bounce = 24
    images = []
    frame = 0
    animcycle=12
    def __init__(self):
        pygame.sprite.Sprite.__init__(self,self.containers)
        self.image=self.images[0]
        self.rect = self.image.get_rect()
        self.facing=-1
        self.origtop=self.rect.top
       
    def move(self,horver,direction):
        if horver==1:
            if direction==-1:
                self.image=self.images[0]
                self.rect.move_ip(direction*self.speed,0)
            if direction==1:
                self.image=self.images[1]
#                self.image=self.images[0]
                self.rect.move_ip(direction*self.speed,0)
        if horver==-1:
            if direction==-1:
                self.image=self.images[2]
                self.rect.move_ip(0,direction*self.speed)
            if direction==1:
                self.image=self.images[3]
                self.rect.move_ip(0,direction*self.speed)
#    def update(self):
#        self.frame=self.frame+1
#        self.rect.top=self.origtop-(self.rect.left/self.bounce%2)


    def inf(self):
        print self.speed
        print self.bounce
        print self.images

class Bomb(pygame.sprite.Sprite):
    images=[]
#    x,y=random.randint(1,200),random.randint(1,200)
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self,self.containers)
        self.image=self.images[0]
        self.rect=self.image.get_rect()
        self.x=x
        self.y=y
       
    def update(self):
#        self.rect.move(300,300)
        self.rect.center = (self.x,self.y)

class Explosion(pygame.sprite.Sprite):
    images=[]
    frame=0
    animcycle=3
    defaultlife=20

    def __init__(self,actor):
        pygame.sprite.Sprite.__init__(self,self.containers)
        self.image=self.images[0]
        self.rect=self.image.get_rect()
        self.rect.center=actor.rect.center
        self.life=self.defaultlife

    def update(self):
#        self.frame = self.frame+1
        self.life=self.life-1
        self.image = self.images[self.life/self.animcycle%5]
        if self.life<=0: self.kill()

def main():
    pygame.init()
    clock=pygame.time.Clock()
    windowStyle=0 #FULLSCREEN

    boom = pygame.mixer.Sound('./DataSounds/wahoo.wav')
    meow = pygame.mixer.Sound('./DataSounds/meow.wav')

    bestDepth=pygame.display.mode_ok(SCREENRECT.size,windowStyle,32)
    disp=pygame.display.set_mode(SCREENRECT.size,windowStyle,bestDepth)
    pygame.display.set_caption("!!!! *** Un GATO de verdad!!!!!... *** ")
    pygame.mouse.set_visible(0)

    background= pygame.Surface(SCREENRECT.size)
    img11=pygame.image.load('./DataImgs/cat.png')
    img=pygame.transform.scale(img11,(90,70))
    sheep=pygame.image.load('./DataImgs/ball.png')
    imgExplosion1=pygame.image.load('./DataImgs/frogMio.png')
    imgExplosion=pygame.transform.scale(imgExplosion1,(100,100))
    bgdtile=pygame.image.load('./DataImgs/land.png')
 #   for yT in range(0,500,20):
#        for xT in range(0,SCREENRECT.width,bgdtile.get_width()):
#            background.blit(bgdtile,(xT,yT))
    background.blit(bgdtile,(0,400))
    disp.blit(background,(0,0))
   

    all = pygame.sprite.RenderUpdates()
    Gato.containers = all
    bombs=pygame.sprite.Group()
    explosions=pygame.sprite.Group()
    Bomb.containers = bombs, all
    Explosion.containers=explosions,all

    img2 = pygame.transform.flip(img,1,0)
    #...1,0) equiv ...TrueX, FalseY)
    img3 = pygame.transform.rotate(img,-90)
    img4 = pygame.transform.rotate(img,90)
    Gato.images=[img,img2,img3,img4]
    Bomb.images=[sheep]

    imE2=pygame.transform.rotate(imgExplosion,15)
    imE3=pygame.transform.rotate(imgExplosion,35)
    imE4=pygame.transform.rotate(imgExplosion,45)
    imE5=pygame.transform.rotate(imgExplosion,95)
    imE6=pygame.transform.rotate(imgExplosion,135)
    Explosion.images=[imgExplosion,imE2,imE3,imE4,imE5]

    pygame.display.flip()

    gato = Gato()

    bomb = Bomb(100,200)
    bomb1 = Bomb(40,300)
    bomb2 = Bomb(200,500)

    gato.inf()

#    disp.blit(img,(100,00))

    while True:
        for event in pygame.event.get():
            if event.type==QUIT or \
                    (event.type==KEYDOWN and event.key==K_ESCAPE):
                return
            keystate=pygame.key.get_pressed()      
#                pygame.quit()
       
        all.clear(disp,background)
        all.update()
        if keystate[K_RIGHT]:
            gato.move(1,1)
        if keystate[K_LEFT]:
            gato.move(1,-1)
        if keystate[K_UP]:
            gato.move(-1,-1)
        if keystate[K_DOWN]:
            gato.move(-1,1)
           
#True, remover sprite
        for bomb in pygame.sprite.spritecollide(gato,bombs,True):
            Explosion(gato)
            x,y=random.randint(1,800),random.randint(1,600)
            if (x>1 and y <200) or (x>1 and y>400):
                meow.play()
            exists=random.randint(0,1)
            if exists==0:
                Bomb(x,y)          
            boom.play()

        dirty=all.draw(disp)
        pygame.display.update(dirty)
        clock.tick(40)



if __name__=='__main__': main()




No hay comentarios:

Publicar un comentario