我确信我的问题回答起来比较简单,但作为初学者,我真的很挣扎。
所以我从各种来源学到了(至少我认为我有)Javascript的基础知识,但是我真的在努力学习对象,类和语法。我完全理解这个概念,多年来我一直在基础层面上使用各种编程语言,但是,我正在努力实现我在JS中学到的东西。
基本上我正在尝试开发,作为练习来证明我的学习是一个简单的框架来制作视觉小说游戏。所以我的整个框架可以简化为两个基本对象,一个场景和一个角色。所以我试图充实我的角色对象:
function character (race,gender,age)
{
this.race = race;
this.gender = gender;
this.age = age;
}
//lets make an elf race based on the character prototype
var elfRace = new character("elf","m",100);
基本上我的目标是完成以下层次结构
字符
第1场比赛2第3场比赛
ActualChar ActualChar ActualChar ActualChar ActualChar
所以我的最后一个角色将来自定义的Race,它将派生自角色对象。
现在我的问题是,我无法弄清楚如何设置Race来自Character。我是否将角色宣布为Race的原型?或者我
var newrace = new Character();
如何在比赛中添加额外的“技能”或“参数”?所以精灵种族应该有文字:+5和恶魔种族力量:+5,但这些参数只能在种族对象级别添加。
我尽力保持这一点并尽可能简短,但如果你想了解我正在尝试做的更多细节,我也写了一篇关于它的博客文章,如果更多细节是需要:http://www.endangeredpixel.com/
希望我能在这个问题上得到一些帮助,我已经尝试过更多关于对象,层次结构和原型的研究,但是我要么得到过于简单的解释和教程,要么超出我的技能水平的咆哮,rambles和非常高级的教程。我在中间阶段努力寻找解释:(。
答案 0 :(得分:1)
嗯,你可以做这样的事情。虽然你可以根据自己的喜好制造更少甚至更多的构造。现在我正在使用角色,种族和玩家(实际角色)。你可以使用不同的Race构造函数,比如ElfRace,DemonRace,但对于像2场比赛一样简单的东西,你可以像我一样使用它。这是一般的想法,您可以修改它以满足您的特定需求。
function Character(gender, age) {
this.gender = gender;
this.age = age;
}
function Race(gender, age, race) {
Character.call(this, gender, age); //inherit from Character
this.race = race;
if (race == 'elf') {
this.dexterity = 5;
} else if (race == 'demon') {
this.strength = 5;
}; // you could check for more races here.
}
function Player(name, age, gender, race) {
Race.call(this, gender, age, race); //inherit from Race
this.name = name;
}
var player1 = new Player("Legolas", 100, "m", "elf");
alert(player1.name); //Legolas
alert(player1.age); //100 years old
alert(player1.gender); //m
alert(player1.race); //elf
alert(player1.dexterity); //5
alert(player1.strength); // undefined because elf's have dexterity not strength
在这个例子中,我创建了一个名为Legolas,年龄为100岁,男性和精灵种族的player1。这也是 jsfiddle
如果要添加更多比赛,则必须更新Race构造函数中的if语句,以指定要添加的特定种族的技能。