4

我很难弄清楚如何扩展cree类以在新的javascript mmo游戏Screeps-> www.screeps.com中添加我自己的功能

有没有人弄清楚这一点?

谢谢

4

2 回答 2

6

有点老线程,我不确定自发布初始查询以来 Screeps 是否发生了变化,但这是我的想法......

为什么有一个包装类?为什么不扩展原来/游戏提供的 Creep 类?

例如

Creep.prototype.myFunction = function(target){
         // my logic
       }

确保检查 screeps 继承结构..(谷歌 screeps API 并查看登录页面上的“原型”部分)

这可以节省大量重复代码,例如,在“结构”原型中对继承函数的一个声明可以为每个单独的结构子类协议保存一个单独的声明。

希望这可以帮助。

于 2017-01-24T10:06:21.137 回答
3

我不知道该怎么做,但我创建了一个像这样的包装类:

您创建了一个调用内存的函数,并尝试使用它的属性。见下文: var _ = require("lodash");

function MyCreep(creep){
    this.creep = creep;
    this.memoryProp = creep.memory;
}

MyCreep.prototype.memoryFunc = function(){
    return this.creep.memory;
};

MyCreep.prototype.moveTo = function(target){
    this.creep.moveTo(target);
}

MyCreep.prototype.myFunction = function(target){
    //TODO something
}

因此,当我需要处理蠕变时,我会:

var myCreeps = [];
for (var creep in Game.creeps){
    creep.memory.role = "hello memory";
    var myCreep = new MyCreep(Game.creeps[creep]);
    myCreeps.push(myCreep);      ;
    console.log("original creep memory: "+creep.memory.role);
    console.log("my creep memory func: "+myCreep.memoryFunc().role);
    console.log("my creep memory prop: "+myCreep.memoryProp.role);
}

或者

var myCreeps = [];
_.forEach(Game.creeps, function(creep){
    var myCreep = new MyCreep(creep);
    myCreeps.push(myCreep);
});

然后处理 myCreeps,本地存储。

于 2014-11-22T18:07:39.817 回答