From 198e7b9b291cf18e2716ec8e4ad778a029128695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1nos?= Date: Mon, 23 Jan 2023 18:29:15 +0100 Subject: [PATCH] Added Healing to the fight function --- src/c/encounter.c | 11 +++++++++-- test/c/test_encounter.c | 29 +++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/c/encounter.c b/src/c/encounter.c index 9904048..e0ef993 100644 --- a/src/c/encounter.c +++ b/src/c/encounter.c @@ -70,7 +70,7 @@ int switchTurns(int currentTurn) int fight(int playerH, int playerDamage, int playerArmor, int playerAttack, enemy* enemy) { - int currentTurn = 0; + int currentTurn = 2; char decision; while (playerAlive(playerH) && getEnemyHealth(enemy) > 0) { @@ -91,7 +91,14 @@ int fight(int playerH, int playerDamage, int playerArmor, int playerAttack, enem } else { - playerH = playerHealth(playerH, getEnemyDamage(enemy), playerArmor); + if(enemyChoosesHeal(enemy)) + { + enemyHeal(enemy, 10); + } + else + { + playerH = playerHealth(playerH, getEnemyDamage(enemy), playerArmor); + } } currentTurn = switchTurns(currentTurn); } diff --git a/test/c/test_encounter.c b/test/c/test_encounter.c index 5ef5b65..d33bca3 100644 --- a/test/c/test_encounter.c +++ b/test/c/test_encounter.c @@ -198,10 +198,11 @@ void test_FightEnemyWins(void) { // arange int playerHealth = 1, playerDamage = 10, playerArmor = 4, playerAttack = 5; - int enemyHealth = 100, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 5; + int enemyHealth = 100, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 100; int result; // act playerInput_ExpectAndReturn('a'); + randomInt_ExpectAndReturn(1); enemy test = {enemyHealth, enemyDamage, enemyArmor, enemyMaxHealth}; result = fight(playerHealth, playerDamage, playerArmor, playerAttack, &test); // assert @@ -212,7 +213,7 @@ void test_FightPlayerChoosesAttack(void) { // arrange int playerHealth = 100, playerDamage = 10, playerArmor = 4, playerAttack = 5; - int enemyHealth = 6, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 5; + int enemyHealth = 6, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 100; int result; // act playerInput_ExpectAndReturn('a'); @@ -227,12 +228,14 @@ void test_FightPlayerHeals_thenAttacks_Wins(void) { // arrange int playerHealth = 2, playerDamage = 10, playerArmor = 4, playerAttack = 10; - int enemyHealth = 11, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 5; + int enemyHealth = 11, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 100; int result; // act enemy test = {enemyHealth, enemyDamage, enemyArmor, enemyMaxHealth}; playerInput_ExpectAndReturn('h'); + randomInt_ExpectAndReturn(1); playerInput_ExpectAndReturn('a'); + randomInt_ExpectAndReturn(1); playerInput_ExpectAndReturn('a'); result = fight(playerHealth, playerDamage, playerArmor, playerAttack, &test); // assert @@ -243,7 +246,7 @@ void test_FightPlayerFlees(void) { // arrange int playerHealth = 10, playerDamage = 10, playerArmor = 4, playerAttack = 10; - int enemyHealth = 11, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 5; + int enemyHealth = 11, enemyDamage = 4, enemyArmor = 4, enemyMaxHealth = 100; int result; // act enemy test = {enemyHealth, enemyDamage, enemyArmor, enemyMaxHealth}; @@ -351,4 +354,22 @@ void test_enemyDoesNotChoosesHeal(void) } +void test_enemyChoosesHeal_ThenAttackWins(void) +{ + //arange + int result; + int enemyHealth = 6, enemyDamage = 10, enemyArmor = 5, enemyMaxHealth = 100; + int playerHealth = 10, playerDamage = 10, playerArmor = 5, playerAttack = 10; + enemy test2 = {enemyHealth, enemyDamage, enemyArmor, enemyMaxHealth}; + //act + playerInput_ExpectAndReturn('a'); + randomInt_ExpectAndReturn(39); //39%20 = 19 , 19 + 1 = 20 + playerInput_ExpectAndReturn('a'); + randomInt_ExpectAndReturn(0); //0%20 = 0 , 0 + 1 = 1 + result = fight(playerHealth, playerDamage, playerArmor, playerAttack, &test2); + //assert + TEST_ASSERT_EQUAL(0, result); + +} + #endif // TEST