3

我相信我的问题会相对简单地回答,但作为一个初学者,我真的很挣扎。

所以我已经从各种来源(至少我认为我有)学习了 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/

希望我能在这个问题上得到一些帮助,我已经尝试对对象、层次结构和原型进行更多研究,但我要么得到过于简单的解释和教程,要么得到超出我技能水平的咆哮、漫谈和极其高级的教程。我在中间阶段很难在这里找到解释:(。

4

1 回答 1

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 的 player1,年龄 100 岁,男性和精灵种族。这里也是一个jsfiddle

如果要添加更多比赛,则必须更新 Race 构造函数中的 if 语句,为要添加的特定比赛分配技能。

于 2013-07-05T07:13:37.503 回答