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()
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario