From 1c7d7b60cf0115d68b86de769fb8fe7beaee4d0d Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20Mart=C3=ADnez=20Mart=C3=AD?= Date: Tue, 10 Jun 2008 16:12:42 +0200 Subject: [PATCH] Mejoras al sistema de render de fondos y textos. --- qwesprites.py | 52 ++++++++++++++++++++++++++++++++++++++++------------ stage.py | 27 +++++++++++++++++++++++---- taju.py | 2 +- 3 files changed, 64 insertions(+), 17 deletions(-) diff --git a/qwesprites.py b/qwesprites.py index cf2cf91..79db730 100644 --- a/qwesprites.py +++ b/qwesprites.py @@ -42,13 +42,14 @@ class qweSprite(pygame.sprite.Sprite): fcount=0 SOLID=True FSOLID=True - + Layer=1 Item="?" ItemTime=0 def __init__(self, stage): pygame.sprite.Sprite.__init__(self) - stage.sprites+=[self] + if self.Layer==1: stage.sprites+=[self] + if self.Layer==2: stage.background_sprites+=[self] def move(self,x,y): self.x+=x @@ -60,7 +61,7 @@ class qweSprite(pygame.sprite.Sprite): return self.image def die(self,screen): - Life(screen,(int(self.x),int(self.y)),self.DIE_IMG,self.MaxLife/4.0) + Life(screen,(int(self.x),int(self.y)),self.DIE_IMG,self.MaxLife/10.0) def draw(self,screen,list_rects=None): @@ -183,10 +184,18 @@ class qweSprite(pygame.sprite.Sprite): stage.checkPortal() else: if char=='Z' and self.Item=='z' and stage.getCh(x,y-1)==' ': - stage.setCh(x,y-1,'z') - stage.checkPortal() - self.ItemTime=1000 - self.Item='' + testrect=pygame.Rect(x*32,(y-1)*32,32,32) + + put_in_place=True + for sprite in stage.sprites: + if sprite.FSOLID and sprite.rect.colliderect(testrect): + put_in_place=False + + if put_in_place: + stage.setCh(x,y-1,'z') + stage.checkPortal() + self.ItemTime=1000 + self.Item='' def checkcell(self,stage,px,py): @@ -344,6 +353,8 @@ class qweText(qweSprite): LifeCollisionSpriteCost=0 ShowLife=0 RADIUS=0 + MAX_ACCUMMS=0 + MAX_ACCUMDIST=0 def __init__(self, stage,x,y,txt,font,color): @@ -380,6 +391,7 @@ class qweTextBasic(qweText): qweTextBasic_font=pygame.font.Font(None,15) color=(0,255,0) + self.Layer=2 qweText.__init__(self,stage,x,y,txt,qweTextBasic_font,color) class qweTextBIG(qweText): @@ -689,23 +701,39 @@ class Hacha(qweShoot): if char=='B' and x>self.psx and self.dx>0 \ and stage.getCh(x+1,y)==' ' and stage.getCh(x+1,y+1)!=' ': - stage.setCh(x,y,' ') - stage.setCh(x+1,y,'B') self.Life-=1 + testrect=pygame.Rect((x+1)*32,(y)*32,32,32) + put_in_place=True + for sprite in stage.sprites: + if sprite.FSOLID and sprite.rect.colliderect(testrect): + put_in_place=False + + if put_in_place: + stage.setCh(x,y,' ') + stage.setCh(x+1,y,'B') + if char=='B' and x