コード例 #1
0
    def update(self, hero, fps):
        # TODO : L'IA DU CORBEAU ICI
        if self.y > self.min_y:
            self.jump()
        if self.left:
            self.moveLeft()
            Animated.changeState(self, "RmoveLeft")
        else:
            self.moveRight()
            Animated.changeState(self, "RmoveRight")

        if self.x < 50 and self.left:
            self.left = False
            self.right = True
        elif self.x + self.rect.width > self.windowWidth - 100 and self.right:
            self.left = True
            self.right = False

        atkEffect = self.atkList[0].launch(self.x + self.rect.width / 2,
                                           self.y + self.rect.height, 1,
                                           self.strength, self.speed_x)
        if atkEffect is not None:
            self.atkEffectList.append(atkEffect)

        Mob.update(self, hero, fps)
コード例 #2
0
 def update(self, hero, fps):
     if self.duration > 0:
         self.duration = self.duration - (1000 / fps)
         self.speed_y += self.weight
         self.x += self.speed_x
         self.y += self.speed_y
         Animated.update(self, hero, fps)
コード例 #3
0
	def set_hp(self, dmg):
		Charac.set_hp(self, dmg)
		if self.hp <= 0:
			if self.facing == 1:
				Animated.changeState(self, "DRight")
			else:
				Animated.changeState(self, "DLeft")
			self.baseJumpForce = 0
			self.speed_x = 0
			self.baseAcc_x = 0
			self.currAcc_x = 0
コード例 #4
0
 def testAtkEffect(self, atkEffect):
     if self.x + self.rect.width - 15 > atkEffect.get_x1(
     ) and self.x + 15 < atkEffect.get_x2():
         if self.y + self.rect.height >= atkEffect.get_y1(
         ) and self.y <= atkEffect.get_y2():
             self.speed_x += atkEffect.get_knockBack_x()
             self.speed_y += atkEffect.get_knockBack_y()
             if self.onGround and self.speed_y > 0:
                 self.speed_y = atkEffect.get_knockBack_y() * -0.5
             self.onGround = False
             self.set_hp(atkEffect.get_dmg())
             atkEffect.delete()
             if self.facing == 1:
                 Animated.changeState(self, "OdmgRight")
             else:
                 Animated.changeState(self, "OdmgLeft")
コード例 #5
0
 def __init__(self, x, y, width, height, images, weight, baseAcc_x,
              baseJumpForce, maxSpeed_x, windowWidth, hp, atkList):
     Animated.__init__(self, x, y, width, height, images)
     self.weight = weight
     self.facing = 1
     self.onGround = False
     self.speed_x = 0
     self.speed_y = 0
     self.baseAcc_x = baseAcc_x
     self.currAcc_x = 0
     self.baseJumpForce = -1 * baseJumpForce
     self.maxSpeed_x = maxSpeed_x
     self.friction = 1
     self.windowWidth = windowWidth
     self.hpMax = hp
     self.hp = hp
     self.atkList = atkList
     self.atkEffectList = []
コード例 #6
0
 def update(self, hero, fps):
     if self.x < self.windowWidth / 2 - 30:
         Animated.changeState(self, "RmoveRight")
         self.moveRight()
     elif self.x > self.windowWidth / 2 + 30:
         Animated.changeState(self, "RmoveLeft")
         self.moveLeft()
     else:
         if self.x > hero.get_x2():
             Animated.changeState(self, "RidleLeft")
         else:
             Animated.changeState(self, "RidleRight")
         self.stop()
     Mob.update(self, hero, fps)
コード例 #7
0
    def update(self, hero, fps):
        # Bloc de gestion de la vitesse en x
        self.speed_x += self.currAcc_x
        if self.speed_x > self.maxSpeed_x:
            self.speed_x = self.maxSpeed_x
        elif self.speed_x < -self.maxSpeed_x:
            self.speed_x = -self.maxSpeed_x
        self.x += self.speed_x
        if self.x < 0:
            self.x = 0
            self.speed_x = 0
        elif self.x + self.rect.width > self.windowWidth:
            self.x = self.windowWidth - self.rect.width
            self.speed_x = 0

        # Bloc de gestion de la vitesse en y
        if self.onGround:
            self.speed_y = 0
        else:
            self.speed_y += self.weight
            self.y += self.speed_y
            self.friction = 0.4

        # Gestion des spells
        i = 0
        while i < len(self.atkEffectList):
            self.atkEffectList[i].update(hero, fps)
            if not self.atkEffectList[i].isLive():
                self.deleteAtkEffect(i)
            else:
                i += 1

        nbAtk = len(self.atkList)
        for i in range(0, nbAtk):
            self.atkList[i].update(fps)

        # Animation du Charac
        Animated.update(self, hero, fps)
コード例 #8
0
 def set_hp(self, dmg):
     # en HARD on drop tout le combo en prenant des dmg
     if self.difHard:
         self.combo = 1
     else:  # en NORMAL on drop que la moitié du bonus > 1
         self.combo = float("{0:.2f}".format(1 + (self.combo - 1) / 2))
     if self.state[:7] == "Fcrouch":
         dmg = dmg / 2.0
         self.bloc.play()
     Charac.set_hp(self, dmg)
     if self.hp <= 0.0:
         if self.facing == 1:
             Animated.changeState(self, "DRight")
         else:
             Animated.changeState(self, "DLeft")
     else:
         if self.facing == 1:
             Animated.changeState(self, "OdmgRight")
         else:
             Animated.changeState(self, "OdmgLeft")
コード例 #9
0
 def __init__(self, nom, x, y, width, height, images, dmg, knockback_x,
              knockback_y, weight, speed_x, speed_y, facing, duration):
     Animated.__init__(self, x, y, width, height, images)
     self.states["idleRight"] = 75
     self.states["idleLeft"] = 75
     self.nom = nom
     self.dmg = dmg
     self.knockback_x = knockback_x
     self.knockback_y = knockback_y
     self.weight = weight
     self.speed_x = speed_x
     self.speed_y = speed_y
     self.duration = duration
     self.images = images
     self.hit = False
     if facing == 1:
         Animated.changeState(self, "idleRight")
     else:
         Animated.changeState(self, "idleLeft")
コード例 #10
0
    def update(self, hero, fps):
        # TODO : L'IA DU Samurai ICI
        if self.x - self.areaWidth > hero.get_x2():
            self.moveLeft()
            Animated.changeState(self, "RmoveLeft")
        elif self.x + self.rect.width + self.areaWidth < hero.get_x1():
            self.moveRight()
            Animated.changeState(self, "RmoveRight")
        else:
            if abs(self.speed_x) > 0:
                self.stop()
            else:
                if self.state[0] != 'O':
                    if self.x > hero.get_x1():
                        Animated.changeState(self, "RidleLeft")
                        atkEffect = self.atkList[0].launch(
                            self.x, self.y + 20, -1, self.strength)
                    else:
                        Animated.changeState(self, "RidleRight")
                        atkEffect = self.atkList[0].launch(
                            self.x, self.y + 20, 1, self.strength)
                    if atkEffect is not None:
                        self.atkEffectList.append(atkEffect)
                        if self.x > hero.get_x1():
                            Animated.changeState(self, "Oaa1Left")
                        else:
                            Animated.changeState(self, "Oaa1Right")

        Mob.update(self, hero, fps)
コード例 #11
0
 def __init__(self, x, y, width, height, images, friction):
     Animated.__init__(self, x, y, width, height, images)
     self.friction = friction
     self.x1 = x
     self.x2 = x + width
     self.y = y
コード例 #12
0
    def update(self, hero, fps):
        # TODO : L'IA DU MOINE ICI
        if self.y + self.rect.height / 4.0 > hero.get_y1():
            self.jump()
        if self.x - self.areaWidth > hero.get_x2():
            self.moveLeft()
            Animated.changeState(self, "RidleLeft")
        elif self.x + self.rect.width + self.areaWidth < hero.get_x1():
            self.moveRight()
            Animated.changeState(self, "RidleRight")
        else:
            if abs(self.speed_x) > 0:
                self.stop()
            else:
                if self.state[0] != 'O':
                    if abs(hero.get_x1() - self.x) > 300 and self.stockOrb > 0:
                        if self.x > hero.get_x1():  # PLUIE D'ORBE SA RACE
                            Animated.changeState(self, "RidleLeft")
                            atkEffect = self.atkList[2].launch(
                                self.x, self.y + 20, -1, self.strength,
                                -self.stockOrb)
                        else:
                            Animated.changeState(self, "RidleRight")
                            atkEffect = self.atkList[2].launch(
                                self.x, self.y + 20, 1, self.strength,
                                self.stockOrb)
                        if atkEffect is not None:
                            self.stockOrb -= 1
                            self.atkEffectList.append(atkEffect)
                            if self.x > hero.get_x1():
                                Animated.changeState(self, "Oaa3Left")
                            else:
                                Animated.changeState(self, "Oaa3Right")
                    elif not hero.isOnGround():  # Pull violet
                        if self.x > hero.get_x1():
                            Animated.changeState(self, "RidleLeft")
                            atkEffect = self.atkList[0].launch(
                                self.x, self.y + 20, -1, self.strength)
                        else:
                            Animated.changeState(self, "RidleRight")
                            atkEffect = self.atkList[0].launch(
                                self.x, self.y + 20, 1, self.strength)
                        if atkEffect is not None:
                            if self.stockOrb < 4:
                                self.stockOrb += 1
                            self.atkEffectList.append(atkEffect)
                            if self.x > hero.get_x1():
                                Animated.changeState(self, "Oaa1Left")
                            else:
                                Animated.changeState(self, "Oaa1Right")
                    else:  # Le bon laser
                        if self.x > hero.get_x1():
                            Animated.changeState(self, "RidleLeft")
                            atkEffect = self.atkList[1].launch(
                                self.x, self.y + 20, -1, self.strength)
                        else:
                            Animated.changeState(self, "RidleRight")
                            atkEffect = self.atkList[1].launch(
                                self.x, self.y + 20, 1, self.strength)
                        if atkEffect is not None:
                            if self.stockOrb < 4:
                                self.stockOrb += 4
                            self.atkEffectList.append(atkEffect)
                            if self.x > hero.get_x1():
                                Animated.changeState(self, "Oaa2Left")
                            else:
                                Animated.changeState(self, "Oaa2Right")

        Mob.update(self, hero, fps)
コード例 #13
0
    def update(self, hero, fps):
        # TODO : L'IA DU NINJA ICI
        if not self.onGround:
            if self.left:
                self.moveLeft()
            else:
                self.moveRight()
        elif self.x - self.areaWidth > hero.get_x2():
            self.jump()
            self.left = True
            self.right = False
            Animated.changeState(self, "FjumpLeft")
        elif self.x + self.rect.width + self.areaWidth < hero.get_x1():
            self.jump()
            self.left = False
            self.right = True
            Animated.changeState(self, "FjumpRight")
        else:
            if abs(self.speed_x) > 0:
                self.stop()
            else:
                if self.state[0] != 'O':
                    if self.x > hero.get_x1():
                        Animated.changeState(self, "RidleLeft")
                        atkEffect = self.atkList[0].launch(
                            self.x - self.rect.width / 2, self.y + 20, -1,
                            self.strength)
                    else:
                        Animated.changeState(self, "RidleRight")
                        atkEffect = self.atkList[0].launch(
                            self.x + self.rect.width, self.y + 20, 1,
                            self.strength)
                    if atkEffect is not None:
                        self.atkEffectList.append(atkEffect)
                        if self.x > hero.get_x1():
                            Animated.changeState(self, "Oaa1Left")
                        else:
                            Animated.changeState(self, "Oaa1Right")

        Mob.update(self, hero, fps)
コード例 #14
0
 def isDying(self):
     return self.state[0] == 'D' and not Animated.isLastFrame(self)
コード例 #15
0
 def isDead(self):
     return self.state[0] == 'D' and Animated.isLastFrame(self)
コード例 #16
0
    def update(self, hero, fps):
        # BLOC GESTION MOUVEMENT -----------------------------------
        if self.state[
                0] != 'O':  # Pas de mouvement ni d'attaque si le personnage est en animation one time
            # Left = true && Right = false
            if self.left and not self.right:
                Charac.moveLeft(self)
                if self.onGround:
                    if self.speed_x > 0:
                        Animated.changeState(self, "RslideLeft")
                    else:
                        Animated.changeState(self, "RmoveLeft")
            elif self.right:  # Left = false && Right = true
                Charac.moveRight(self)
                if self.onGround:
                    if self.speed_x < 0:
                        Animated.changeState(self, "RslideRight")
                    else:
                        Animated.changeState(self, "RmoveRight")
            else:  # pas de déplacement horizontal
                Charac.stop(self)
                if self.onGround:
                    if self.speed_x < 0:
                        Animated.changeState(self, "RslideRight")
                    elif self.speed_x > 0:
                        Animated.changeState(self, "RslideLeft")
                    else:
                        if self.facing == 1:
                            if self.down:
                                Animated.changeState(self, "FcrouchRight")
                            else:
                                Animated.changeState(self, "RidleRight")
                        else:
                            if self.down:
                                Animated.changeState(self, "FcrouchLeft")
                            else:
                                Animated.changeState(self, "RidleLeft")

            if self.up:
                if self.onGround:
                    Charac.jump(self)
                    self.jumpKeyReset = True
                    if self.facing == 1:
                        Animated.changeState(self, "FjumpRight")
                    else:
                        Animated.changeState(self, "FjumpLeft")
                elif self.doubleJump:
                    Charac.jump(self)
                    self.doubleJump = False
                    if self.facing == 1:
                        Animated.changeState(self, "FjumpRight")
                    else:
                        Animated.changeState(self, "FjumpLeft")
            else:  # Il faut relacher la touche de saut pour pouvoir doublesauter
                if self.jumpKeyReset and not self.onGround:
                    self.doubleJump = True
                    self.jumpKeyReset = False

            if self.speed_y > 0:
                if self.facing == 1:
                    Animated.changeState(self, "FfallRight")
                else:
                    Animated.changeState(self, "FfallLeft")
            # BLOC GESTION SPELL -------------------------------------
            if self.autoHit:
                if self.onGround:
                    if self.autoHitTimer2 > 0:  # Le joueur peut declencher l'auto hit 2
                        if self.facing == 1:
                            atkEffect = self.atkList[1].launch(
                                self.x + self.rect.width, self.y + 20,
                                self.facing, self.combo)
                        else:
                            atkEffect = self.atkList[1].launch(
                                self.x - self.atkList[1].get_width(),
                                self.y + 20, self.facing, self.combo)
                        if atkEffect is not None:
                            self.speed_x = 0
                            self.currAcc_x = 0
                            self.autoHitTimer2 = 0
                            self.atkEffectList.append(atkEffect)
                            if self.facing == 1:
                                Animated.changeState(self, "Oaa2Right")
                            else:
                                Animated.changeState(self, "Oaa2Left")
                    elif self.autoHitTimer3 > 0:  # Le joueur peut declencher l'auto hit 3
                        if self.facing == 1:
                            BonusSpeed_x = 6
                            BonusSpeed_y = -1.5
                            atkEffect = self.atkList[2].launch(
                                self.x + self.rect.width, self.y + 20,
                                self.facing, self.combo, BonusSpeed_x)
                        else:
                            BonusSpeed_x = -6
                            BonusSpeed_y = -2
                            atkEffect = self.atkList[2].launch(
                                self.x - self.atkList[2].get_width(),
                                self.y + 20, self.facing, self.combo,
                                BonusSpeed_x)
                        if atkEffect is not None:
                            self.onGround = False
                            self.speed_x = BonusSpeed_x
                            self.speed_y = BonusSpeed_y
                            self.autoHitTimer3 = 0
                            self.atkEffectList.append(atkEffect)
                            if self.facing == 1:
                                Animated.changeState(self, "Oaa3Right")
                            else:
                                Animated.changeState(self, "Oaa3Left")
                            self.atkList[0].put_cd(
                                1
                            )  # Si le coup de pied est lance on met un cd sur le coup de poing
                    else:  # Le joueur declenche l'auto hit 1
                        if self.facing == 1:
                            atkEffect = self.atkList[0].launch(
                                self.x + self.rect.width, self.y + 20,
                                self.facing, self.combo)
                        else:
                            atkEffect = self.atkList[0].launch(
                                self.x - self.atkList[0].get_width(),
                                self.y + 20, self.facing, self.combo)
                        if atkEffect is not None:
                            self.speed_x = 0
                            self.currAcc_x = 0
                            self.atkEffectList.append(atkEffect)
                            if self.facing == 1:
                                Animated.changeState(self, "Oaa1Right")
                            else:
                                Animated.changeState(self, "Oaa1Left")
                else:  # On lance une auto hit en l'air
                    if self.facing == 1:
                        atkEffect = self.atkList[4].launch(
                            self.x + self.rect.width, self.y + 20, self.facing,
                            self.combo)
                    else:
                        atkEffect = self.atkList[4].launch(
                            self.x - self.atkList[4].get_width(), self.y + 20,
                            self.facing, self.combo)
                    if atkEffect is not None:
                        self.speed_x = 0
                        if self.speed_y >= 0:
                            self.speed_y = 0
                        self.currAcc_x = 0
                        self.atkEffectList.append(atkEffect)
                        if self.facing == 1:
                            Animated.changeState(self, "OaaaRight")
                        else:
                            Animated.changeState(self, "OaaaLeft")

            if self.spell1:
                if self.facing == 1:
                    if self.speed_x > 0:
                        bnspd_x = self.speed_x
                    else:
                        bnspd_x = 0
                    atkEffect = self.atkList[3].launch(
                        self.x + self.rect.width / 2 + 20 * self.facing,
                        self.y + 20, self.facing, self.combo, bnspd_x)
                else:
                    if self.speed_x < 0:
                        bnspd_x = self.speed_x
                    else:
                        bnspd_x = 0
                    atkEffect = self.atkList[3].launch(
                        self.x + self.rect.width / 2 + 20 * self.facing -
                        self.atkList[3].get_width(), self.y + 20, self.facing,
                        self.combo, bnspd_x)
                if atkEffect is not None:
                    self.atkEffectList.append(atkEffect)
                    if self.facing == 1:
                        Animated.changeState(self, "Oaa1Right")
                    else:
                        Animated.changeState(self, "Oaa1Left")

        if self.autoHitTimer2 > 0:
            self.autoHitTimer2 = self.autoHitTimer2 - (1000.0 / fps)
        else:
            self.autoHitTimer2 = 0
        if self.autoHitTimer3 > 0:
            self.autoHitTimer3 = self.autoHitTimer3 - (1000.0 / fps)
        else:
            self.autoHitTimer3 = 0
        Charac.update(self, hero, fps)
コード例 #17
0
	def update(self, hero, fps):
		# TODO : L'IA DU BOSS ICI
		if self.y > self.flee_y:
			self.jump()
		if self.flee_set:
			if self.x > hero.get_x1():
				Animated.changeState(self, "RidleLeft")
			else:
				Animated.changeState(self, "RidleRight")
			if self.x-10 > self.flee_x:
				self.moveLeft()
			elif self.x+10 < self.flee_x:
				self.moveRight()
			else:
				self.flee_set = False
				self.spellCount = 0
		else:
			if abs(self.speed_x) > 0:
				self.stop()
			else:
				if self.state[0] != 'O':
					if self.spellCount < self.spellMax:
						if hero.isOnGround() and abs(self.x - hero.get_x1()) > 300:  # Lancer boule de feu
							if self.x > hero.get_x2():
								Animated.changeState(self, "RidleLeft")
								atkEffect = self.atkList[0].launch(self.x+self.rect.width/2, self.y+self.rect.height*2, -1, self.strength)
							else:
								Animated.changeState(self, "RidleRight")
								atkEffect = self.atkList[0].launch(self.x+self.rect.width/2, self.y+self.rect.height*2, 1, self.strength)
							if atkEffect is not None:
								self.atkEffectList.append(atkEffect)
								self.spellCount += 1
								if self.x > hero.get_x2():
									Animated.changeState(self, "Oaa1Left")
								else:
									Animated.changeState(self, "Oaa1Right")
						elif abs(self.x - hero.get_x1()) > 300:  # Lancer lame de vent
							if self.x > hero.get_x2():
								Animated.changeState(self, "RidleLeft")
								atkEffect = self.atkList[1].launch(self.x+self.rect.width/2, self.y+self.rect.height*2, -1, self.strength)
							else:
								Animated.changeState(self, "RidleRight")
								atkEffect = self.atkList[1].launch(self.x+self.rect.width/2, self.y+self.rect.height*2, 1, self.strength)
							if atkEffect is not None:
								self.atkEffectList.append(atkEffect)
								self.spellCount += 1
								if self.x > hero.get_x2():
									Animated.changeState(self, "Oaa2Left")
								else:
									Animated.changeState(self, "Oaa2Right")
						else:  # Lancer pic de glace
							if self.x > hero.get_x2():
								Animated.changeState(self, "RidleLeft")
								atkEffect = self.atkList[2].launch(hero.get_x1(), -100, -1, self.strength)
							else:
								Animated.changeState(self, "RidleRight")
								atkEffect = self.atkList[2].launch(hero.get_x1(), -100, 1, self.strength)
							if atkEffect is not None:
								self.atkEffectList.append(atkEffect)
								self.spellCount += 1
								if self.x > hero.get_x2():
									Animated.changeState(self, "Oaa3Left")
								else:
									Animated.changeState(self, "Oaa3Right")

					else:
						self.flee_set = True
						self.flee_x = (pygame.time.get_ticks()%(self.max_x-self.min_x))+self.min_x
						self.flee_y = (pygame.time.get_ticks()%(self.max_y-self.min_y))+self.min_y

		Mob.update(self, hero, fps)
コード例 #18
0
    def update(self, hero, fps):
        # TODO : L'IA DE L'ARCHER ICI
        if self.flee_set:
            if self.x - 30 > self.flee_x:
                Animated.changeState(self, "RmoveLeft")
                self.moveLeft()
            elif self.x + 30 < self.flee_x:
                Animated.changeState(self, "RmoveRight")
                self.moveRight()
            else:
                self.flee_set = False
                self.arrowCount = 0
        else:
            if abs(self.speed_x) > 0:
                self.stop()
            else:
                if self.state[0] != 'O':
                    if self.arrowCount < self.arrowMax:
                        if self.x > hero.get_x2():
                            Animated.changeState(self, "RidleLeft")
                            atkEffect = self.atkList[0].launch(
                                self.x + self.rect.width, self.y + 20, -1,
                                self.strength)
                        else:
                            Animated.changeState(self, "RidleRight")
                            atkEffect = self.atkList[0].launch(
                                self.x - self.atkList[0].get_width(),
                                self.y + 20, 1, self.strength)
                        if atkEffect is not None:
                            self.atkEffectList.append(atkEffect)
                            self.arrowCount += 1
                            if self.x > hero.get_x2():
                                Animated.changeState(self, "Oaa1Left")
                            else:
                                Animated.changeState(self, "Oaa1Right")
                    else:
                        self.flee_set = True
                        self.flee_x = randint(self.rect.width,
                                              self.windowWidth - 100)

        Mob.update(self, hero, fps)