コード例 #1
0
ファイル: dragon.py プロジェクト: alfonsoaranzazu/StepFight
class Dragon(object):
    
    FULL_LIFE = 15.0
    
    ATTACK_CHANCE = 0.4
    DEFENSE_CHANCE = 0.7
    CHARGE_CHANCE = 0.9
    SPELL_CHANCE = 1

    def __init__(self, level):
        #Character images
        self.sprite_attack = Sprite(Consts.DRAGON_ATTACK, 10, 120)
        self.sprite = Sprite(Consts.DRAGON_STILL, 10, 100)
        self.sprite._play(Consts.PLAY_INFINITY)
        
        self.sprite_defense = Sprite(Consts.SPRITE_DEFENSE, 25, 70)
        self.sprite_charge = Sprite(Consts.SPRITE_CHARGE, 11, 90)
        
        #self.sprite_spell = Sprite(Consts.SPELL_DRAGON, 25, 90)
        
        #Attributes
        if(level > 1):
            self.setAttributes(level, level, 5+level)
        else:
            self.setAttributes(1, 1, 5)
            
        #life
        self.life = self.FULL_LIFE
        self.lifebar_rect = pygame.Rect(Consts.DRAGON_POSITION[0]+14,Consts.DRAGON_POSITION[1]+8,225,13)
        
        self.charged = 1
        
    def setAttributes(self, strength, defence, magic):
        self.strength = strength
        self.defence = defence
        self.magic = magic
        
    def update(self):
        self.sprite_attack._update()
        self.sprite._update()
        
        self.sprite_defense._update()
        self.sprite_charge._update()
        
        #self.sprite_spell._update()
        
        
    def render(self, screen):
        #character
        if(self.sprite_attack.is_playing()):
            self.sprite_attack._render(screen, Consts.DRAGON_POSITION)
        else:
            self.sprite._render(screen, Consts.DRAGON_POSITION)
        
        if(self.sprite_defense.is_playing()):
            self.sprite_defense._render(screen, (Consts.DRAGON_POSITION[0]+30, Consts.DRAGON_POSITION[1]+30))
            
        if(self.sprite_charge.is_playing()):
            self.sprite_charge._render(screen, (Consts.DRAGON_POSITION[0]+30,Consts.DRAGON_POSITION[1]+30))
        #if(self.sprite_spell.is_playing()):
        #    self.sprite_spell._render(screen, Consts.CHARACTER_POSITION)
        
            
        #lifebar
        if(self.life>0):
            current_lifebar_rect = pygame.Rect(self.lifebar_rect)
            current_lifebar_rect.width = (self.life/self.FULL_LIFE)*self.lifebar_rect.width
            pygame.draw.rect(screen, Consts.RED_COLOR, current_lifebar_rect)
        pygame.draw.rect(screen, Consts.BLACK_COLOR, self.lifebar_rect, 2)
        
        

    def attack(self):
        self.sprite_attack._play(1)
        
    def defense(self):
        self.sprite_defense._play(1)
            
    def spell(self): pass
        #self.sprite_spell._play(1)
    
    def charge(self):
        self.charged *= 2
        self.sprite_charge._play(1)
        
    def unCharge(self):
        load = self.charged
        self.charged = 1
        return load
        
    def getMovement(self):
        rand = random.random()
        
        result = 0
        if(rand<self.ATTACK_CHANCE):
            result = Consts.ATTACK
        elif(rand<self.DEFENSE_CHANCE):
            result = Consts.DEFENSE
        elif(rand<self.CHARGE_CHANCE):
            result = Consts.SPELL
        else:
            result = Consts.CHARGE
            
        return result
        
    def beHitted(self, damage):
        if(damage>0):
            self.life -= damage
    
    def isDead(self):
        if(self.life<1):
            return True
        return False
コード例 #2
0
class Character(object):

    FULL_LIFE = 10.0
    
    counter = 0

    def __init__(self):
        #Character images
        self.sprite_attack = Sprite(Consts.CHARACTER_ATTACK, 6, 150)
        self.sprite = Sprite(Consts.CHARACTER_STILL, 1, 100)
        
        self.sprite_defense = Sprite(Consts.SPRITE_DEFENSE, 25, 70)
        self.sprite_charge = Sprite(Consts.SPRITE_CHARGE, 11, 90)
        
        self.sprite_spell = Sprite(Consts.SPELL_CHARACTER, 30, 70)
        
        self.sprite_spell_dragon = Sprite(Consts.SPELL_DRAGON, 25, 90)
        
        #Attributes
        self.strength = self.defence = self.magic = 0
        self.setAttributes(1, 1, 0)
        #life
        self.life = self.FULL_LIFE
        self.lifebar_rect = pygame.Rect(Consts.CHARACTER_POSITION[0]-15,Consts.CHARACTER_POSITION[1]+146,150,13)
        
        self.charged = 1
        
        self.level = 1
        
        #self.money = 1000
        
    def setAttributes(self, strength, defence, magic):
        self.strength = strength
        self.defence = defence
        self.magic = magic
        
    def update(self):
        self.sprite._update()
        self.sprite_attack._update()
        
        self.sprite_defense._update()
        self.sprite_charge._update()
        
        self.sprite_spell._update()
        
        self.sprite_spell_dragon._update()
        
    def render(self, screen):
        #character
        if(self.sprite_attack.is_playing()):
            self.sprite_attack._render(screen, (Consts.CHARACTER_POSITION[0]-30,Consts.CHARACTER_POSITION[1]-130))
        else:
            self.sprite._render(screen, Consts.CHARACTER_POSITION)
            
        if(self.sprite_defense.is_playing()):
            self.sprite_defense._render(screen, (Consts.CHARACTER_POSITION[0]-30,Consts.CHARACTER_POSITION[1]-30))
        if(self.sprite_charge.is_playing()):
            self.sprite_charge._render(screen, (Consts.CHARACTER_POSITION[0]-30,Consts.CHARACTER_POSITION[1]-30))
        
        
        if(self.sprite_spell.is_playing()):
            self.sprite_spell._render(screen, (Consts.DRAGON_POSITION[0]+15, Consts.DRAGON_POSITION[1]+60))
        
        if(self.sprite_spell_dragon.is_playing()):
            self.sprite_spell_dragon._render(screen, (Consts.CHARACTER_POSITION[0]-40,Consts.CHARACTER_POSITION[1]-50))
            
        #lifebar
        if(self.life>0):
            current_lifebar_rect = pygame.Rect(self.lifebar_rect)
            current_lifebar_rect.width = (self.life/self.FULL_LIFE)*self.lifebar_rect.width
            pygame.draw.rect(screen, Consts.GREEN_COLOR, current_lifebar_rect)
        pygame.draw.rect(screen, Consts.WHITE_COLOR, self.lifebar_rect,2)
        
        
    def attack(self):
        self.sprite_attack._play(1)
        #self.sprite._play(1)
        
    def defense(self):
        self.sprite_defense._play(1)
            
    def spell(self):
        self.sprite_spell._play(1)
    
    def receive_spell(self):
        self.sprite_spell_dragon._play(1)
    
    def charge(self):
        self.charged *=2
        self.sprite_charge._play(1)
        
    def unCharge(self):
        load = self.charged
        self.charged = 1
        return load
        
    def beHitted(self, damage):
        if(damage>0):
            self.life -= damage
        self.counter+=1
        #print(str(self.counter)+" "+str(damage))
            
    def isDead(self):
        if(self.life<1):
            return True
        return False
    
    def reset(self):
        self.life = self.FULL_LIFE
        self.charged = 1