Top.Mail.Ru
Ответы

Как мне правильно реализовать takeDamage, чтобы загорались все галочки? Пожалуйста помогите срочно решить проблему!!!!!!

public void takeDamage(Integer damage) throws PersonDead, Exception {
this.health -= damage - protection;
if (health - (damage - protection) == 0 || health - (damage - protection) < 0){
throw new PersonDead("");
}
if (damage < 0){
throw new PersonDead("");
}

}

Integer facePunch() throws Exception, PersonDead {
takeDamage(1);
return health;
}

Что в итоге мне вывело.
Tests for Person
TEST CASE Person: Имеет 50 здоровья и 0 защиты ✅
TEST CASE Person: announce() содержит имя ✅
TEST CASE Person: announce() содержит здоровье ✅
TEST CASE Person: announce() содержит защиту ✅
TEST CASE Person: facePunch() наносит 1 урон ❌
TEST CASE Person: takeDamage() здоровье не опускается меньше нуля ❌
TEST CASE Person: Вызов PersonDead() ✅
Tests for Mage
TEST CASE Mage: наследуется от Person ✅
TEST CASE Mage: Имеет 100 здоровья и 15 защиты ❌
TEST CASE Mage: announce() содержит имя ✅
TEST CASE Mage: announce() содержит здоровье ✅
TEST CASE Mage: announce() содержит защиту ✅
Exception in thread "main" org.future.code.homework.HomeWork5$PersonDead:
at org.future.code.homework.HomeWork5$Person.takeDamage(HomeWork5.java:69)
at org.future.code.homework.HomeWork5$Mage.takeDamage(HomeWork5.java:112)
at org.future.code.homework.HomeWork5$Mage.fireBall(HomeWork5.java:116)
at org.future.code.homework.HomeWork5.main(HomeWork5.java:179)

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
1
 this.health -= damage - protection;  

Если защита больше урона, то он у тебя лечиться будет? Круто.
Код написан чересчур запутанно и явно с ошибками. Тут делается просто.

1
 if (damage <= protection) return; 
1
 this.health = Math.max(this.health - (damage - protection), 0);  
1
 if (this.health <= 0) throw new PersonDead(""); 

Не понятно только, зачем выбрасывать исключение, если персонаж умер, но фиг с ним.