前言
在编写 Screeps 游戏中的防御系统时,塔(Tower)是非常常用的建筑,而且常常需要考虑其攻击力与射程之间的平衡。而 npm 包 @open-screeps/tower-effectiveness-at-range 则提供了一种实用的工具来帮助我们计算在不同射程下的塔的攻击效率。
安装
使用 npm 直接安装即可:
npm install @open-screeps/tower-effectiveness-at-range
原理
@open-screeps/tower-effectiveness-at-range 包的核心原理是通过预先计算每个射程的攻击效率再将其保存为内部的哈希表,这样在查询时就可以直接获得效率值,避免了重复计算。同时还提供了一些填充和插值方法来保障效率的准确度和精度。
使用方法
使用该 npm 包非常简单,只需要首先导入包即可:
const towerEffectivenessAtRange = require('@open-screeps/tower-effectiveness-at-range')
接着,就可以使用 towerEfficiencyAt
方法来查询某个射程下的攻击效率了:
const range = 5 const efficiency = towerEffectivenessAtRange.towerEfficiencyAt(range)
当然,最好是直接传入一个 RoomPosition
对象,以免计算时需要先将其转化为坐标:
const pos = new RoomPosition(10, 10, 'W1N1') const range = pos.getRangeTo(creep.pos.x, creep.pos.y) const efficiency = towerEffectivenessAtRange.towerEfficiencyAt(range)
此时,efficiency
就是在该射程下塔的攻击效率了。
示例代码
下面是一个使用该 npm 包的完整示例代码:
-- -------------------- ---- ------- ----- ------------------------- - ----------------------------------------------------- -------------- - -------- -- - ----- ------ - ------------------------------------------- - ------- - -------------- --------------- - -- --- ------ ----- -- ------- - ----- ------------- - ------------------------------------ -- ---------------------- - ----- ----- - -------------------------------------- ----- ---------- - -------------------------------------------------- ------------------------------ ------------------ -------- -------------------- ----------- --------------- - - -
该代码会在 Screeps 游戏的房间 W1N1 中遍历所有塔,并对每个塔执行攻击操作。在每次攻击前,先查询该塔到最近敌人的距离,再使用 towerEfficiencyAt
方法计算攻击效率并输出日志,最后调用 attack
方法发起攻击。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005730881e8991b448e9344