这一挑战已经结束。要查看竞争对手的最终成绩,请单击此处
在此挑战中,每个提交都是一个机器人。每个漫游器都应该是一个Javascript函数。机器人将争取获得最高的黄金总价值。可以耕种黄金,也可以通过杀死其他机器人赚取黄金,黄金可以用来提高治疗,攻击,屏蔽和耕种的能力。
目的:
在多达1000轮的回合中(仅剩一个机器人时结束),总价值最高(获得的所有金币的总和)的机器人就是赢家。
转弯:
在每个回合中,每个存活(> 0 HP)的机器人都将运行一次。它可以返回移动,可以是以下之一:
- 治疗:恢复HP
- 攻击:从另一个机器人移除HP
- 盾牌:防御以后的攻击
- 晕眩:跳过另一个机器人的下一站
- 农场:以HP为代价赚钱
- 升级:改善某些动作
所有漫游器都将在执行任何动作之前返回它们的移动,因此眩晕,治疗,攻击,护盾等不会影响此后稍后移动的任何漫游器。例如,如果Bot A使Bot B昏迷,并且Bot B在回合顺序中紧随Bot A,则Bot B仍将在同一回合中稍后移动,并且在下一回合发生眩晕。
战斗,耕种和升级:
每个漫游器的最大HP为100,并且分配的UID在0到99之间。此UID在每轮之后都会更改,这是漫游器相互跟踪的方式。
修复是最简单的举动之一,增加的HP量取决于其等级(从5 HP开始)。机器人无法治愈100 HP以上的生命。
通过其UID攻击机器人是另一种可能的举动,在0级时造成5 HP的基本伤害。也可以使Bot昏迷,跳过下一回合,后者也使用UID。
机器人具有额外的防护罩HP,没有限制。此防护罩HP会吸收其他僵尸程序的直接攻击造成的损害,并通过防护罩添加。在0级时,屏蔽会增加5点屏蔽HP。
养殖将在0级获得5金,花费2 HP。这2 HP无法屏蔽。黄金的唯一用途(超越获胜)是升级动作。治疗,攻击和屏蔽的基础价值为5 HP,耕种开始于5金币。这些移动中的每一个都有各自的级别,从0开始。这些公式将确定移动的HP或黄金值,其中L是级别:
- 修复:
L + 5
- 进攻:
1.25L + 5
- 屏蔽:
1.5L + 5
- 农业:
2L + 5
在某个级别上,升级任何移动的成本是相同的,并且由决定2.5L² + 2.5L + 10
,其中L是当前级别。机器人可以使用该功能cost(currentLevel)
用作确定此事件的快捷方式。
机器人以25金开始,使他们能够快速升级到1级或两次升级到2级。这一开始的金不计入机器人的总价值。杀死一个机器人将使您获得其总价值的一半黄金,并将其四舍五入,如果两个机器人在同一回合中杀死另一个机器人,它们都将获得奖励。
输入输出:
为了与控制器通信,该函数的返回值用于发送移动信息。其中之一应返回:
- 愈合:
heal()
- 攻击:
attack(uid)
- 屏蔽:
shield()
- 晕眩
stun(uid)
- 农场:
farm()
- 升级:
upgrade("heal" / "attack" / "shield" / "farm")
要跳过转弯(不执行任何操作),不返回任何内容或返回虚假的值。
要获取当前的转数(从1开始),请使用 turn()
。
函数的参数将包括有关您的机器人,其他机器人的UID以及匝间存储的信息。第一个参数是具有以下属性的对象:uid
,hp
,gold
,和shield
。这些是您的漫游器当前信息的副本。此外,还有一个嵌套的对象levels
,具有电平数字heal
,attack
,shield
,和farm
。
第二个参数是除您之外的所有活动中的漫游器的重组数组,其格式设置为包含属性uid
,hp
(加屏蔽)worth
,和attack
(攻击级别)的对象。第三个参数是一个空对象,可用于转弯间存储。
示例机器人:
该机器人将一直耕作,直到可以将其攻击升级到5级,然后每回合攻击一个随机机器人,直到死亡(或获胜)。由于缺乏愈合/屏蔽作用,效果不是很好。
function freeTestBotA(me, others, storage) {
if (me.levels.attack < 5) {
if (me.gold < cost(me.levels.attack))
return farm();
return upgrade("attack");
}
return attack(others[0].uid);
}
该机器人具有两种模式:进攻和防御。处于防御模式时,它会眩晕一个随机机器人或使其恢复生命;处于防御模式时,它将被攻击或屏蔽。它将尽可能尝试升级其攻击。
function freeTestBotB(me, others, storage) {
if (me.gold >= cost(me.levels.attack))
return upgrade("attack");
if (me.hp < 50)
if (Math.random() < 0.5)
return stun(others[0].uid);
else
return heal();
else
if (Math.random() < 0.5)
return attack(others[0].uid);
else
return shield();
}
规则:
- 标准漏洞禁止
- Bot可能不会读取,修改或添加超出其范围的任何变量,可能不会试图作弊,并且可能不会调用任何控制器定义的或DOM函数
- 返回值必须是虚假的,或者上述函数输出之一
- 机器人不应设计为针对特定机器人,而应设计为利用常见策略
- 机器人可能不会自我攻击(由于@Ness的评论而被发现)
- 漫游器必须与其他任何漫游器都足够不同,以使其可以合理地视为单独的条目
- 现在不允许分组
- 控制器可以在这里找到
- 聊天室
新的控制器调试:
使用该文件gold-battle-log.js
,您可以将debug
机器人的属性值设置botData
为0(不记录),1(对数移动)或2(对数移动,hp,黄金,等级等)。
挑战赛将于8月9日星期五1700 UTC结束
[closed]
最终可能会使休闲的观众跳过阅读我的挑战,因为他们认为这是低质量或偏离主题的。