gpt4 book ai didi

screeps - 有没有办法计算小兵从 A 到 B 所需的蜱数?

转载 作者:行者123 更新时间:2023-12-02 21:14:18 25 4
gpt4 key购买 nike

我知道如何获得从 A 到 B 的距离,但考虑到所有地形因素,很难计算小兵走完那条路需要多长时间。有没有一种我缺少的内置方法可以做到这一点?这就是我的愿望:

path = creep.pos.findPathTo(target);
creep.ticksForPath(path, {energy: 150);

其中 {energy: 150} 允许您强制计算使用该数量的携带能量。

这是可能的还是计划中的?

最佳答案

game docs 中没有这样的东西。 。但是您可以使用 findPath 的选项 avoid 参数功能,尽量避免沼泽瓷砖。默认情况下,我相信它支持最少的步骤、最快的路线。

有一种方法可以通过查找路径然后将坐标与 lookAtArea() 进行比较来计算成本。打电话。

var path = creep.room.findPath(creep, target);

路径返回:

[
{ x: 10, y: 5, dx: 1, dy: 0, direction: Game.RIGHT },
{ x: 10, y: 6, dx: 0, dy: 1, direction: Game.BOTTOM },
{ x: 9, y: 7, dx: -1, dy: 1, direction: Game.BOTTOM_LEFT },
...
]

然后您可以使用 lookAtArea() 查询上/左和下/右区域:

var look = creep.room.lookAtArea(10,5,11,7);

look 返回:

// 10,5,11,7
{
10: {
5: [{ type: ‘creep’, creep: {...} },
{ type: ‘terrain’, terrain: ‘swamp’ }],
6: [{ type: ‘terrain’, terrain: ‘swamp’ }],
7: [{ type: ‘terrain’, terrain: ‘swamp’ }]
},
11: {
5: [{ type: ‘terrain’, terrain: ‘normal’ }],
6: [{ type: ‘spawn’, spawn: {...} },
{ type: ‘terrain’, terrain: ‘swamp’ }],
7: [{ type: ‘terrain’, terrain: ‘wall’ }]
}
}

然后循环查看您拥有的每个路径步骤并检查地形类型。

我们需要的 3 种类型:

  1. 平原 - 移动成本为 2 的简单地面
  2. 沼泽会使移动成本增加到 10。
  3. 道路将移动成本降低至 1。

类似(未经测试、不完整的代码):

function terrainSpeed(terrainType) {
var speed = 0;
switch(terrainType) {
case 'swamp':
speed = 10;
break;
case 'normal':
speed = 2;
break;
case 'road':
speed = 1;
break;
}
return speed;
}

// Traverse through path and check how many thicks it would take
// based on carried energy and body
function calculateTicksRequired(path,look,energy,body) {
var ticksRequired = 0;
for (var i = 0; i < path.length; i++) {
var terrainForStep = look[path[i].y][path[i].x].terrain];
var defaultTicks = terrainSpeed(terrainForStep);
var moveCost = 1;
// Perform calculation by looking at bodymove cost (based on body)
// and carry cost (based on energy)

// LOGIC TO CALCULATE MOVECOST
// ...

// Multiply that by defaultTicks
ticksRequired += defaultTicks * moveCost;
}
return ticksRequired;
}

关于screeps - 有没有办法计算小兵从 A 到 B 所需的蜱数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com