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)
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))
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)
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()
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)