Домашнее задание #5:
!!! У всех полей классов выставить модификатор доступа private
Реализовать исключение «PersonDead»
Наследовать класс от «Exception»
Реализовать класс «Person»
Поля класса - name:String, protection:Integer, health:Integer (+конструктор, +геттеры)
Все Люди имеют 50 здоровья и защиту 0
У класса Person должно быть два конструктора
- protected конструктор - все поля являются аргументами конструктора
- public конструктор - задается только имя, остальное значения по умолчанию
Метод - String announce() {} - возвращает строку в формате "Person /name/ имеет характеристики: /health/ здоровья и /protection/ защиты"
Метод - void takeDamage(Integer damage) {} - вычитает урон из здоровья персонажа по формуле health - (damage - protection)
Урон не может быть отрицательным (вызывать исключение Exception)
Здоровье не может стать отрицательным
Когда здоровье персонажа опускается до 0, выкидывается исключение PersonDead
Метод - Integer facePunch() - удар в лицо наносит один урон
Реализовать класс «Mage»
Наследовать класс от «Person»
Конструктор класса принимает только имя
Все Маги имеют 100 здоровья и защиту 15
Метод(Переопределить) announce - возвращает строку в формате Mage + вызов метода announce у родителя
Метод(Переопределить) takeDamage - вычитает урон из здоровья персонажа
по формуле health - (damage - protection - health % 10) (Случайный баф)
!!! Метод должен вызывать метод takeDamage super-класса
Метод - Integer fireBall() - фаербол наносит 45 урона
Реализовать класс «Archer»
Наследовать класс от «Person»
Конструктор класса принимает только имя
Все Лучники имеют 120 здоровья и защиту 12
Метод(Переопределить) announce - возвращает строку в формате Archer + вызов метода announce у родителя
Метод(Переопределить) takeDamage - вычитает урон из здоровья персонажа
по формуле health - (damage - protection + health % 10) (Случайный дебаф)
!!! Метод должен вызывать метод takeDamage super-класса
Метод - Integer shootBow() - стрельба из лука наносит 40 + health % 10 урона
*/
Ответ кидайте в телегу https://t.me/SGeorgyV
Или на почту gs27.10.2008@gmail.com
Java
Помогите пожалуйста написать методы,java, Кто даст ответ дам 100 балов подарком ОТВЕТ ДАЙТЕ СЕГОДНЯ ЭТО СРОЧНО!!!!!!!!!!
Приведенная ниже реализация соответствует описанным требованиям. Пожалуйста, обратите внимание на комментарии в коде, которые поясняют некоторые детали.
```java
import java.util.Random;
// Исключение PersonDead
class PersonDead extends Exception {
public PersonDead(String message) {
super(message);
}
}
// Класс Person
class Person {
private String name;
private Integer protection;
private Integer health;
// Конструктор с аргументами
protected Person(String name, Integer protection, Integer health) {
this. name = name;
this. protection = protection;
this. health = health;
}
// Публичный конструктор с заданным именем и значениями по умолчанию
public Person(String name) {
this. name = name;
this. protection = 0;
this. health = 50;
}
// Геттеры для полей
public String getName() {
return name;
}
public Integer getProtection() {
return protection;
}
public Integer getHealth() {
return health;
}
// Метод announce
public String announce() {
return "Person " + name + " имеет характеристики: " + health + " здоровья и " + protection + " защиты";
}
// Метод takeDamage
public void takeDamage(Integer damage) throws Exception {
if (damage < 0) {
throw new Exception("Урон не может быть отрицательным");
}
// Вычисление урона с учетом защиты и здоровья
Integer actualDamage = damage - protection;
if (actualDamage > 0) {
health -= actualDamage;
}
if (health < 0) {
health = 0;
throw new PersonDead("Здоровье персонажа опустилось до 0");
}
}
// Метод facePunch
public Integer facePunch() {
return 1;
}
}
// Класс Mage
class Mage extends Person {
// Конструктор класса Mage
public Mage(String name) {
super(name);
this. health = 100;
this. protection = 15;
}
// Переопределение метода announce
@Override
public String announce() {
return "Mage " + getName() + " " + super.announce();
}
// Переопределение метода takeDamage
@Override
public void takeDamage(Integer damage) throws Exception {
Random random = new Random();
int buff = random.nextInt(10);
// Вычисление урона с учетом защиты, здоровья и случайного бафа
Integer actualDamage = damage - protection - health % 10 + buff;
super.takeDamage(actualDamage);
}
// Метод fireBall
public Integer fireBall() {
return 45;
}
}
// Класс Archer
class Archer extends Person {
// Конструктор класса Archer
public Archer(String name) {
super(name);
this. health = 120;
this. protection = 12;
}
```java
import java.util.Random;
// Исключение PersonDead
class PersonDead extends Exception {
public PersonDead(String message) {
super(message);
}
}
// Класс Person
class Person {
private String name;
private Integer protection;
private Integer health;
// Конструктор с аргументами
protected Person(String name, Integer protection, Integer health) {
this. name = name;
this. protection = protection;
this. health = health;
}
// Публичный конструктор с заданным именем и значениями по умолчанию
public Person(String name) {
this. name = name;
this. protection = 0;
this. health = 50;
}
// Геттеры для полей
public String getName() {
return name;
}
public Integer getProtection() {
return protection;
}
public Integer getHealth() {
return health;
}
// Метод announce
public String announce() {
return "Person " + name + " имеет характеристики: " + health + " здоровья и " + protection + " защиты";
}
// Метод takeDamage
public void takeDamage(Integer damage) throws Exception {
if (damage < 0) {
throw new Exception("Урон не может быть отрицательным");
}
// Вычисление урона с учетом защиты и здоровья
Integer actualDamage = damage - protection;
if (actualDamage > 0) {
health -= actualDamage;
}
if (health < 0) {
health = 0;
throw new PersonDead("Здоровье персонажа опустилось до 0");
}
}
// Метод facePunch
public Integer facePunch() {
return 1;
}
}
// Класс Mage
class Mage extends Person {
// Конструктор класса Mage
public Mage(String name) {
super(name);
this. health = 100;
this. protection = 15;
}
// Переопределение метода announce
@Override
public String announce() {
return "Mage " + getName() + " " + super.announce();
}
// Переопределение метода takeDamage
@Override
public void takeDamage(Integer damage) throws Exception {
Random random = new Random();
int buff = random.nextInt(10);
// Вычисление урона с учетом защиты, здоровья и случайного бафа
Integer actualDamage = damage - protection - health % 10 + buff;
super.takeDamage(actualDamage);
}
// Метод fireBall
public Integer fireBall() {
return 45;
}
}
// Класс Archer
class Archer extends Person {
// Конструктор класса Archer
public Archer(String name) {
super(name);
this. health = 120;
this. protection = 12;
}
хз
Похожие вопросы
- Помогите пожалуйста, изучаю язык Java. Не понимаю как написать код((
- Помогите пожалуйста задачи для Java.
- Ошибка с java в intellij idea помогите пожалуйста
- Помогите please решить задачу Java: Дано координату шахматного коня например е2.Требуется вывести все варианты хода коня
- Почему Android Studio написана на Java а не на С/С++?
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Java | Помогите, пожалуйста с задачей.
- JAVA. Помогите, пожалуйста, дописать код программы:
- Помогите, пожалуйста! Это все в java
- Помогите найти и настроить Java сервер Lineage II HF
@Override
public String announce() {
return "Archer " + getName() + " " + super.announce();
}
// Переопределение метода takeDamage
@Override
public void takeDamage(Integer damage) throws Exception {
Random random = new Random();
int debuff = random.nextInt(10);
// Вычисление урона с учетом защиты, здоровья и случайного дебафа
Integer actualDamage = damage - protection + health % 10 - debuff;
super.takeDamage(actualDamage);
}
// Метод shootBow
public Integer shootBow() {
return 40 + health % 10;
}
}
public class Main {
public static void main(String[] args) {
try {
Mage mage = new Mage("Волшебник");
System.out.println(mage.announce()); // Вывод: Mage Волшебник имеет характеристики: 100 здоровья и 15 защиты
mage.takeDamage(20);
System.out.println("Получен урон");
System.out.println("Здоровье: " + mage.getHealth()); // Вывод: Здоровье: 95
Archer archer = new Archer("Лучник");
archer.takeDamage(30);
System.out.println("Получен урон");
System.out.println("Здоровье: " + archer.getHealth()); // Вывод: Здоровье: 108
System.out.println("Удар в лицо: " + archer.facePunch()); // Вывод: Удар в лицо: 1
System.out.println("Фаербол: " + mage.fireBall()); // Вывод: Фаербол: 45
System.out.println("Стрельба из лука: " + archer.shootBow()); // Вывод: Стрельба из лука: 48
} catch (Exception e) {
e.printStackTrace();
}
}
}
```