Example #1
0
 def test_calcDamagesReturnsCharacterDeath(self):
     myCombat = combatEncounter()
     warlockTakingDamage = Warlock()
     myCombat.setUp(12, [warlockTakingDamage])
     testAttack = Warlock()
     testAttack.allAttacks = [testAttack.attack_slot_1]
     testAttack.attack_slot_1.baseDamage = 999
     testAttack.attack_slot_1.damageMod = 0
     didItDie = myCombat.calcDamage(
         [testAttack.attack_slot_1, warlockTakingDamage])
     self.assertTrue(didItDie)
Example #2
0
 def test_calcDamagesReducesCharacterHealth(self):
     myCombat = combatEncounter()
     warlockTakingDamage = Warlock()
     baseHealth = warlockTakingDamage.health
     testAttack = Warlock()
     testAttack.allAttacks = [testAttack.attack_slot_1]
     testAttack.attack_slot_1.baseDamage = 1
     testAttack.attack_slot_1.damageMod = 0
     didItDie = myCombat.calcDamage(
         [testAttack.attack_slot_1, warlockTakingDamage])
     self.assertFalse(didItDie)
     self.assertEqual(warlockTakingDamage.health, (baseHealth - 1))
Example #3
0
 def test_setUpCorrectlySetsUpAllAttributes(self):
     myCombat = combatEncounter()
     myWarlock = Warlock()
     self.assertEqual(myCombat.enemies, [])
     self.assertEqual(myCombat.allies, [])
     self.assertEqual(myCombat.turnOrder, [])
     self.assertEqual(myCombat.allCharsInFight, [])
     myCombat.setUp(12, [myWarlock])
     self.assertEqual(len(myCombat.enemies), 4)
     self.assertEqual(len(myCombat.turnOrder), 5)
     self.assertEqual(len(myCombat.allCharsInFight), 5)
     self.assertEqual(myCombat.allies, [myWarlock])
    def test_getMaxDamageCorrectlyGetsTheHighestAttackDamage(self):
        myEnemy = Warlock()
        attackBeingChanged = 1

        myEnemy.attack_slot_1.damageMod = 0
        myEnemy.attack_slot_2.damageMod = 10
        myEnemy.attack_slot_3.damageMod = 0
        myEnemy.attack_slot_4.damageMod = 0

        myEnemy.attack_slot_1.baseDamage = 0
        myEnemy.attack_slot_2.baseDamage = 10
        myEnemy.attack_slot_3.baseDamage = 0
        myEnemy.attack_slot_4.baseDamage = 0

        ChosenAttack, AttackDamage = getMaxDamageAttack(myEnemy, 1)

        self.assertEqual(ChosenAttack, attackBeingChanged)
        self.assertEqual(myEnemy.allAttacks[ChosenAttack],
                         myEnemy.attack_slot_2)
        self.assertEqual(AttackDamage, 20)
Example #5
0
        if messageType == "attack":
            if heal == "True":
                self.enemyToPick = True
                self.enemy = type
            if self.selectedAttackButton != None:
                self.selectedAttackButton.defaultColour = self.white
            button.defaultColour = self.selectColour
            self.attackToPick = True
            self.attack = int(number)
            self.selectedAttackButton = button

        elif messageType == "e":
            if self.selectedEnemyButton != None:
                self.selectedEnemyButton.defaultColour = self.white
            button.defaultColour = self.selectColour
            self.enemyToPick = True
            self.enemy = int(number)
            self.selectedEnemyButton = button

    def mainLoop(self, img):
        self.goThrougheachTurn(self.combat, img, self.boss)


if __name__ == "__main__":
    baseScreen = BaseStage(1300, 700)
    pygame.init()
    pygame.mixer.init()
    EncounterStage(baseScreen, "Stages/media/MainMenueBackground2.png", 7,
                   [Fighter(), Warlock(), Fighter()])
    pygame.quit()
Example #6
0
def running(seed):
    pygame.init()
    pygame.display.set_caption('Traylian')
    pygame.mouse.set_cursor(*pygame.cursors.tri_left)
    mainMenu = MainMenu(baseScreen, seed)
    team = [Warlock(), Fighter(), OldLady(), Healer()]
    load = LoadingScreen(baseScreen, team)
    loop = mainMenu.mainLoop()
    mymap = Map(baseScreen, loop[1])
    if not loop[0]:
        pygame.quit()
    elif loop[0]:
        current_room_cr = "b"
        count = 0
        cr = 4
        while current_room_cr:
            mymap.screen.bgImage = pygame.transform.scale(
                pygame.image.load('Map/media/paper.jpg').convert(),
                (mymap.screen.screen_height - 550, mymap.screen.screen_width))
            if count >= 3:
                if cr < 12:
                    cr += 1
                count -= 3

            load.cleanUp()
            current_room_cr = mymap.mainloop()
            if current_room_cr[0] == "b":
                load.mainloop()
                EncounterStage(baseScreen,
                               "Stages/media/MainMenueBackground2.png", cr,
                               team)

            elif current_room_cr[0] == "T":
                load.mainloop()
                treasureRoom = TreasureRoom(baseScreen, team)
                treasureRoom.mainLoop()

            elif current_room_cr[0] == "H":
                myHealStage = HealStage(baseScreen, team)
                myHealStage.mainLoop()

            elif current_room_cr[0] == "P":
                load.mainloop()
                puzzle = random.choice([0, 1, 2])
                if puzzle == 0:
                    snake = SnakeGame1(baseScreen, team)
                    snake.mainLoop()
                elif puzzle == 1:
                    snake1 = SnakeGame2(baseScreen, team)
                    snake1.mainLoop()
                elif puzzle == 2:
                    match = MatchGame(baseScreen, team, cr)
                    match.mainLoop()
            elif current_room_cr[0] == "B":
                load.mainloop()
                EncounterStage(
                    baseScreen,
                    "assets/images/characters/Players/PNG_Images/IronBoss/BG_Castle.png",
                    cr, team, True)
                for char in team:
                    char.charFullLevelUp()
            elif current_room_cr[0] == "?":
                room = random.choice(["b", "p", "H"])
                if room == "H":
                    myHealStage = HealStage(baseScreen, team)
                    myHealStage.mainLoop()
                elif room == "p":
                    puzzle = random.choice([0, 1, 2])
                    if puzzle == 0:
                        snake = SnakeGame1(baseScreen, team)
                        snake.mainLoop()
                    elif puzzle == 1:
                        snake1 = SnakeGame2(baseScreen, team)
                        snake1.mainLoop()
                    elif puzzle == 2:
                        match = MatchGame(baseScreen, team, cr)
                        match.mainLoop()
                else:
                    EncounterStage(baseScreen,
                                   "Stages/media/MainMenueBackground2.png", cr,
                                   team)

                load.mainloop()
                pass
            if current_room_cr == "m":
                running(loop[1])
                pygame.quit()
                exit(0)
            if len(team) <= 0:
                running(seed)
            count += 1
    def test_makeMoveShouldPrioritiseDamagingTheHighestHealthPlayerIfItCantKillAPlayer(
            self):
        MaxHPWarlock = Warlock()
        MaxHPWarlock.health = 130
        MinHPWarlock = Warlock()
        MinHPWarlock.health = 70
        Warlock1 = Warlock()
        Warlock1.health = 80
        Warlock2 = Warlock()
        Warlock2.health = 80

        myEnemy = Rat()

        playerList = [Warlock1, MaxHPWarlock, MinHPWarlock, Warlock2]
        damage, PlayerToHit = makeMove(myEnemy, playerList)
        self.assertEqual(PlayerToHit, MaxHPWarlock)
    def test_makeMoveShouldPrioritiseKillingAPlayerOverDamagingOtherPlayers(
            self):
        MaxHPWarlock = Warlock()
        MaxHPWarlock.health = 130
        MinHPWarlock = Warlock()
        MinHPWarlock.health = 1
        Warlock1 = Warlock()
        Warlock1.health = 10
        Warlock2 = Warlock()
        Warlock2.health = 10

        myEnemy = Rat()

        playerList = [Warlock1, MaxHPWarlock, MinHPWarlock, Warlock2]
        damage, PlayerToHit = makeMove(myEnemy, playerList)
        self.assertEqual(PlayerToHit, MinHPWarlock)
        self.assertTrue(damage.calcDamage() >= 1)
    def test_getPlayersToAttackShouldReturnThePlayersWithTheLowestAndHighestHealth(
            self):
        MaxHPWarlock = Warlock()
        MaxHPWarlock.health = 130
        MinHPWarlock = Warlock()
        MinHPWarlock.health = 1
        Warlock1 = Warlock()
        Warlock1.health = 10
        Warlock2 = Warlock()
        Warlock2.health = 10

        playerList = [Warlock1, MaxHPWarlock, MinHPWarlock, Warlock2]
        playerWithLeastHealth, playerWithMaxHealth, = getPlayersToAttack(
            playerList)
        self.assertEqual(MinHPWarlock, playerWithLeastHealth)
        self.assertEqual(MaxHPWarlock, playerWithMaxHealth)
    def test_getPlayersToAttackShouldReturnTheFirstPlayerInListIfAllHealthsAreTheSame(
            self):
        firstWarlock = Warlock()
        secondWarlock = Warlock()
        thirdWarlock = Warlock()
        fourthWarlock = Warlock()
        firstWarlock.health = 10
        secondWarlock.health = 10
        thirdWarlock.health = 10
        fourthWarlock.health = 10

        playerList = [firstWarlock, secondWarlock, thirdWarlock, fourthWarlock]
        playerWithLeastHealth, playerWithMaxHealth = getPlayersToAttack(
            playerList)
        self.assertEqual(firstWarlock, playerWithLeastHealth)
        self.assertEqual(firstWarlock, playerWithMaxHealth)