首页 > 解决方案 > 如何在 Screeps 的另一个房间建造建筑工地?

问题描述

我最近才开始攻击一些一次控制 2 个房间的代码。我要求另一个房间,并且一直坐在里面。我用它来确定所有房间的建筑工地:

for(let i = 0; i < numberOfRooms; i++)
    amountOfConstructionSites[i] = Game.rooms[roomName[i].name].find(FIND_CONSTRUCTION_SITES);

amountOfConstructionSites[0]包含来自不同房间的生成,并且在使用时可见console.log(),但每当我尝试使用类似的东西时console.log(amountOfConstructionSites[0].room.name),它都会返回未定义。要补充的另一个注意事项是房间确实出现在 中Game.rooms,所以我确实在房间里有视力。真的需要一些帮助,这样我就可以继续扩展到其他房间

标签: screeps

解决方案


在编写了与此非常相似的代码后,我找到了答案。Game.rooms[roomName[i].name].find(FIND_CONSTRUCTION_SITES)返回一组建筑工地。我写的是在另一个数组的一个元素中存储一个数组,而不是遍历那个新数组。它返回 undefined 的方式与不遍历正常的一维数组的方式相同。我的补救措施很简单:

for(let i = 0; i < numberOfRooms; i++)
{
        amountOfConstructionSites = Game.rooms[roomName[i].name].find(FIND_CONSTRUCTION_SITES);
}

这解决了我在编写代码的另一部分时遇到的两个问题。游戏使用 CPU 限制来限制您的代码,因此通过为您可以控制的每个房间存储一系列建筑工地,您将使用大量此限制,而不是在其他地方使用它。


推荐阅读