我对面向对象的编程范式还很陌生。
我正在尝试模拟某个游戏中的角色,其中有不同的级别、职业和许多装备选择等。
我的最终目标是创建一个“衣柜”,玩家可以打开网站,试穿一些装备,看看它们如何影响他们的参数,需要花费多少等等。
我已经编写了主要部分 (这里),但那是我第一次使用html、css和javascript编写的,现在整个代码混乱不堪。这一次我想开始得更好 :)
假设我们将模拟的角色有一个对象:
我的问题是这样的: 骑士从1防御和1士气开始,不同的派系会给你不同的属性提升。这些值不能重新分配。 玩家在升级时还会获得一些属性点可以用于不同的参数,并且可以重新分配。
此外,玩家还可以装备一些装备,这些装备会提供属性加成,这些加成也无法重新分配(只能通过卸下来重新分配)。
我之前做的是创建了一堆数组,每个数组的索引对应每个参数,每个数组代表来自不同派系的默认属性提升、来自装备的总属性提升以及玩家手动分配的属性。然后我将每个索引相加,得到最终的参数数组进行显示。玩家只能在第三个数组中重新分配点数,而不能在其他数组中进行操作。
如何使用面向对象编程实现这个问题?
我已经阅读了一些基本概念(封装、继承、多态),但它们有些抽象,当我深入研究时,我真的不知道该怎么做:s
-
-
Responses
-
这个网站相当难用:o
好的,我会尝试看看qternion的答案能帮我解决问题吗:
然后在主对象上,我会有以下操作。
我正在尝试模拟某个游戏中的角色,其中有不同的级别、职业和许多装备选择等。
我的最终目标是创建一个“衣柜”,玩家可以打开网站,试穿一些装备,看看它们如何影响他们的参数,需要花费多少等等。
我已经编写了主要部分 (这里),但那是我第一次使用html、css和javascript编写的,现在整个代码混乱不堪。这一次我想开始得更好 :)
假设我们将模拟的角色有一个对象:
var Lord = function(){
this.Level = 1;
this.Gender = 'Male';
this.Faction = 'Knight';
this.Attack = 0;
this.Defense = 1;
this.SpellPower = 0;
this.Knowledge = 0;
this.Luck = 0;
this.Morale = 1;
this.Initiative = 0;
this.addParameter = function(Parameter, amount){
this[Parameter] += amount;
};
this.changeLevelTo = function(Level){
this.Level = Level;
};
this.changeGenderTo = function(Gender){
this.Gender = Gender;
};
this.changeFactionTo = function(Faction){
this.Faction = Faction;
//adjust default stats based on new faction
};
};
我的问题是这样的: 骑士从1防御和1士气开始,不同的派系会给你不同的属性提升。这些值不能重新分配。 玩家在升级时还会获得一些属性点可以用于不同的参数,并且可以重新分配。
此外,玩家还可以装备一些装备,这些装备会提供属性加成,这些加成也无法重新分配(只能通过卸下来重新分配)。
我之前做的是创建了一堆数组,每个数组的索引对应每个参数,每个数组代表来自不同派系的默认属性提升、来自装备的总属性提升以及玩家手动分配的属性。然后我将每个索引相加,得到最终的参数数组进行显示。玩家只能在第三个数组中重新分配点数,而不能在其他数组中进行操作。
如何使用面向对象编程实现这个问题?
我已经阅读了一些基本概念(封装、继承、多态),但它们有些抽象,当我深入研究时,我真的不知道该怎么做:s
-
-
Responses
-
这个网站相当难用:o
好的,我会尝试看看qternion的答案能帮我解决问题吗:
var Faction = function(atk, def, sp, kn, luk, mor, ini){
this.Attack = atk;
this.Defense = def;
this.SpellPower = sp;
this.Knowledge = kn;
this.Luck = luk;
this.Morale = mor;
this.Initiative = ini;
}
var Knight = new Faction(0,1,0,0,0,1,0);
var Wizard = new Faction(0,0,0,1,0,1,0);
然后在主对象上,我会有以下操作。
//this.Faction = 'Knight'
this.Faction = Knight
this.Defense = function(){
return this.Faction.Defense + this.someOtherClass.Defense;
}
我将会使用http://javascript.crockford.com/prototypal.html来改进以上内容的原型。
感谢大家的贡献 :)
Defense: 0,
=>Defense: 1,
- employee-0