import java.util.Random;
class Monster {
double strength; // Сила удара монстра. То, сколько силы он может вложить в удар.
double dexterity; // Ловкость и координация. То как хорошо монстр сможет нанести прицельный точный удар.
double endurance; // Выносливость. Как долго монстр может действовать на пределе своих физических фозможностей.
double weapon_skill; // Умение владеть оружием. В этой упрощенной модели одно на все виды оружия.
double fear; // Насколько монстру страшно. Чем ему страшнее тем хуже некотрые его характеристики.
double rage; // Степень ярости. Мало кто может убить живое существо будучи совершенно спокоен.
double sadness; // Грусть и апатичность. При больших значениях монстру становится наплевать даже на самого себя что негативно сказывается на шансах не умереть.
double happiness; // Счастие. При комбинации с яростью монстр может впасть в кровавое безумие.
double blood; // Сколько литров крови в сравнении с нормальнм объемом в организме монстра.
double pain; // // Насколько серьезную боль от ударов противника испытывает монстр.
Weapon weapon; // Оружие, которым вооружен монстр.
Armor armor; // Броня надетая на монстра.
};
class Weapon {
int type; // Режущее, Колющее, Дробящее, Хлысты, Стрелковое.
double weight;// Вес - имеется ввиду вес ударной части, а не всего оружия вцелом.
double contact_area; // Площадь контакта оружия с целью. Большая у дубины. Маленькая у шпаги. (мм2)
double hardness; // Твердость ударной части
double hits_pro_second; // Сколько ударов в секунду можно произвести этим оружием максимально. Реальное количество обычно ниже так как зависит еще от умения обращаться с этим оружием и текущего физического сосотяния монстра.
};
class Armor {
double hardness; // Твердость
double slipperiness; // Скользкость. Шанс что оружие только заденет по косой вместо прямого удара. Большой у пластинчатых допсехов перед клинками. Маленький у кожаннй брони или перед моргенштерном.
double elasticity; // Упругость. То насколько может быть продавлена броня без того чтоб быть разорванной. Большая у кожанной брони. Маленькая у железных доспехов.
double thickness; // Толщина
};
class LvichkaSystemDamage {
public static void main
(String[] args
) { Monster goblin = new Monster();
goblin.name = "Гоблин";
goblin.strength = rand.nextDouble();
goblin.dexterity = rand.nextDouble();
goblin.endurance = rand.nextDouble();
goblin.weapon_skill = rand.nextDouble();
goblin.fear = 0;
goblin.rage = 0;
goblin.sadness = 0;
goblin.happiness = 0;
goblin.blood = 1.0;
goblin.pain = 0;
Weapon sword = new Weapon();
sword.type = 1;
sword.weight = 3.7;
sword.contact_area = 100;
sword.hardness = 0.5;
goblin.weapon = sword;
Armor leather_armor = new Armor();
leather_armor.hardness = 0.2;
leather_armor.slipperiness = 0.1;
leather_armor.elasticity = 0.5;
leather_armor.thickness = 5.2;
goblin.armor = leather_armor;
Monster lioness = new Monster();
lioness.name = "Львица";
lioness.strength = rand.nextDouble();
lioness.dexterity = rand.nextDouble();
lioness.endurance = rand.nextDouble();
lioness.weapon_skill = rand.nextDouble();
lioness.fear = 0;
lioness.rage = 0;
lioness.sadness = 0;
lioness.happiness = 0;
lioness.blood = 1.0;
lioness.pain = 0;
Weapon paw = new Weapon();
paw.type = 1;
paw.weight = 3.7;
paw.contact_area = 100;
paw.hardness = 0.5;
lioness.weapon = paw;
Armor fur_armor = new Armor();
fur_armor.hardness = 0.2;
fur_armor.slipperiness = 0.1;
fur_armor.elasticity = 0.5;
fur_armor.thickness = 5.2;
lioness.armor = fur_armor;
Monster a = goblin;
Monster b = lioness;
int turn = 1;
while (!hit(a, b)) {
System.
out.
println("-------------------------------"); System.
out.
println("ХОД " + turn
); Monster swap = b;
b = a;
a = swap;
turn++;
}
System.
out.
println("-------------------------------"); System.
out.
println(String.
format("Бой закончен на %s ходу", turn
- 1));
}
static boolean hit(Monster src, Monster dest) {
double kill_chance = get_kill_chance(src, dest);
System.
out.
println(String.
format("%s бъет %s с шансом убить %s", src.
name, dest.
name,
(int)(kill_chance
* 100)) + "%");
if (rand.nextDouble() <= kill_chance) {
System.
out.
println(src.
name + " убивает " + dest.
name + " повредив ударом жизненноважные органы."); return true;
} else {
System.
out.
println("Удар не повредил жизненоважные органы"); return false;
}
}
static double get_kill_chance(Monster src, Monster dest) {
return 0.03 + rand.nextDouble() * 0.07;
}
}