簡體   English   中英

Javascript:如何集中所有其他對象的對象?

[英]Javascript: How can I centralize a object for all other objects?

我將嘗試盡我所能來解釋這一點,所以去吧。 在我的項目中,我正在制作視頻游戲,此刻,我正在寫玩家要使用的技能。 但是,我看到了一個巨大的,明顯的問題。 就是說,我正在設置技能,以便當玩家與龍戰斗時,玩家將獲得龍的某些生命值,等等。但是當玩家使用相同的技能與妖精或其他技能時會發生什么生物? 由於技能是專門與龍相關聯的,因此無法正常工作,因為我目前在代碼中已有該技能。

我決定使用其中包含所有怪物的對象,但是我不知道如何集中化對象,因此我只能引用一個對象代碼,然后該對象代碼將查找我在與哪個怪物戰斗。 這樣,該技能就可以簡化,而我不必為每次戰斗都編寫新的技能。 我該如何設置?

// 1. CHARACTER OBJECTS

function player(hp, hpcap, mana, manacap, energy, energycap, atb) {
    this.hp = hp;
    this.hpcap = hpcap;
    this.mana = mana;
    this.manacap = manacap;
    this.energy = energy;
    this.energycap = energycap;
    this.atb = atb;
}

function playerStats(strength, armor, magicdamage, magicresistance, precision, parry, critical, manaregen, energyregen) {
    this.strength = strength;
    this.armor = armor;
    this.magicdamage = magicdamage;
    this.magicresistance = magicresistance;
    this.precision = precision;
    this.parry = parry;
    this.critical = critical;
    this.manaregen = manaregen;
    this.energyregen = energyregen;
}

function npc(hp, mana, energy, atb) {
    this.hp = hp;
    this.mana = mana;
    this.energy = energy;
    this.atb = atb;
}

function npcStats(strength, armor, magicdamage, magicresistance, precision, parry, critical, manaregen, energyregen) {
    this.strength = strength;
    this.armor = armor;
    this.magicdamage = magicdamage;
    this.magicresistance = magicresistance;
    this.precision = precision;
    this.parry = parry;
    this.critical = critical;
    this.manaregen = manaregen;
    this.energyregen = energyregen;
}

// 2. GLOBAL PLAYER/NPC VARIABLES

var character = new player(1, 100, 50, 50, 75, 75, 6);
var cs = new playerStats(20, 1, 10, 1, 30, 10, 10, 1, 1);
var dragon = new npc(250, 80, 75, 6);
var dragonstats = new npcStats(15, 3, 15, 5, 40, 10, 10, 2, 2);

您可以創建一個全局可用的名稱空間:

var yourNameSpace = {};

創建一個monsters屬性:

yourNameSpace.monsters = {};

然后添加怪物的鍵值對:

yourNameSpace.monsters.dragon = new npc(250, 80, 75, 6);
yourNameSpace.monsters.threeToedMegaSloth = new npc(350, 60, 15, 6);
//etc..

然后您可以像這樣引用您的怪物:

yourNameSpace.monsters["dragon"];

要么

yourNameSpace.monsters.dragon;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM