169 похожих чатов

Class Enemy { constructor (name, id_name, xp,

health, health_max, stamina, stamina_max, lvl, attack, defence, magicAttack, magicDefense ) {
this.name = name;
this.id_name = id_name;
this.xp = xp;
this.health = health;
this.health_max = health_max;
this.stamina = stamina;
this.stamina_max = stamina_max;
this.lvl = lvl;
this.battle = {
attack: attack,
defence: defence,
magicAttack: magicAttack,
magicDefense: magicDefense
};
}
}
window.Enemy = Enemy; // attach to the global scope



class Goblin extends Enemy {
constructor(name, id_name, xp, health, health_max, stamina, stamina_max, lvl, attack, defence, magicAttack, magicDefense) {
super(name, id_name, xp, health, health_max, stamina, stamina_max, lvl, attack, defence, magicAttack, magicDefense);
this.kind = 'goblin';
this.xp ??= 20;
this.health ??= random(25,35);
this.health_max ??= random(25,35);
this.stamina ??= random(50,70);
this.stamina_max ??= random(50,70);
this.lvl ??= random(1,2);
this.battle.attack ??= random(1,2);
this.battle.defence ??= random(0,1);
this.battle.magicAttack ??= 0;
this.battle.magicDefense ??= 0;
}
}
window.Goblin = Goblin; // attach to the global scope



----------------------------------------

// First option
let goblin2 = new Goblin('Super goblin', 'goblin2', random(100, 200), 100, 100, 5, 5, 5, 5, 5);
// Second option
let temp_goblin3 = {
name: 'Generic goblin',
id_name: 'goblin2',
xp: 40,
...
}
$wolf2 = new Goblin(temp_goblin3.name, temp_goblin3.id_name, temp_goblin3.xp ...);

2 ответов

7 просмотров

Можешь передавать все параметры как объект, будет легче использовать, потому что сразу видно какой параметр устанавливаешь. class Enemy { constructor (config) { const defaultConfig = { healthMax: random(25,35), // ...etc }; this.cfg = { ...defaultConfig, ...config, } } } const enemy = new Enemy({ healthMax: 40, }); Так же можешь задать дефолтный конфиг и переписывать его переданным конфигом. Если передано свойство healthMax, то будет использоваться оно, а если нет то дефолтное. Но при таком подходе внутри класса придётся обращаться как this.cfg.healthMax.

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Карта сайта