CodeGame icon indicating copy to clipboard operation
CodeGame copied to clipboard

或许应该限制炮弹使用数目,用吃星星来获得补给

Open chairuosen opened this issue 10 years ago • 17 comments

有些时候漫无目的的一步一炮也能干掉算法高明的对手。。。 一步一步似爪牙,似魔鬼的步伐

chairuosen avatar Nov 26 '14 06:11 chairuosen

是的我发现了,我也在研究。如果大家有啥好想法可以更新到这里。

luin avatar Nov 26 '14 06:11 luin

X发的子弹上限。 N帧后补充1发子弹。但就要写多一个check子弹数的函数给我们(敌人的子弹数应该不公开)。

senzi avatar Nov 30 '14 01:11 senzi

@senzi 最多同时有两发子弹,初始时有两发。当弹夹不满时每 10 帧加一发子弹

luin avatar Nov 30 '14 08:11 luin

已哭晕,越来越多的中央草丛camper出现了。当星星出现位置为二人中点处,只要他不动,而你的AI有找星星的逻辑,那你永远在他身边绕,离不开。蹲在原地四面发炮就能赢。。。

chairuosen avatar Dec 02 '14 14:12 chairuosen

@chairuosen 我今天调试的时候注意到了,基本每隔一天每个人的脚本我都会跑一遍。。hackathon 杯赛的地图会和这个不一样,草丛少些,尽量平衡点。调整规则的话还需要再考虑一下。

luin avatar Dec 02 '14 14:12 luin

只要地图固定一张,星星出现算法不变,出生点不变,就总有固定打法

只有局面随机才能破除固定打法,比如出生点随机,星星位置随机(一个随机离红方近一点,下一个离蓝方近一点之类),地图地形随机

mcfog avatar Dec 03 '14 03:12 mcfog

@mcfog 这次杯赛的地图会保密,和结果同时揭晓。以后的所有比赛也都会采取地图保密的形式

luin avatar Dec 03 '14 03:12 luin

我觉得地图可以随机生成吧,按照一定的规则随机生成地图可以更加公平,也更加有趣

wdkwdkwdk avatar Dec 03 '14 05:12 wdkwdkwdk

希望比赛开始能获取地图数据。另外,支持炮弹有限,以及星星随机。

jadedrip avatar Dec 08 '14 02:12 jadedrip

顶星星随机!至于炮弹,现在的做法还好

bitbegin avatar Dec 08 '14 08:12 bitbegin

希望炮弹可以设一个装填时间,限制发射频率就行。

希望敌人在草丛中只有不动或者转身时不可见,开火既能暴露当前位置。如果是行走的话就在下一帧暴露给对手上一帧时的位置,朝向依旧不可见,这样只要不是连续在草丛中行走就有一定的不可预见性。

SuperDami avatar Dec 08 '14 10:12 SuperDami

@jadedrip 现在可以获取地图数据呀

luin avatar Dec 08 '14 11:12 luin

@superdami 我觉得开火暴露位置不错,这样可以避免在草丛里阴人,而且使得在草丛里开炮比在草丛外开炮更弱势,因为只要对方判断了你可见而且在草丛里,就证明你刚开炮。至于在草丛里行走会暴露位置感觉对草丛削弱太大了...

luin avatar Dec 08 '14 11:12 luin

@bitbegin 星星随机的话就变成看运气了,没有办法通过走位控制星星的位置了

luin avatar Dec 08 '14 11:12 luin

  • 我觉得开火位置暴露对草丛的削弱已经很大了,草丛毕竟少, 而且位置已经限制在一个范围内了,暴露位置之后2,3帧之内可以到的范围基本可以预见。从地图方面改一改规则可能会好一些,比如草丛连成大块的不能超过什么尺寸,或者大块草丛之外必须要有至少6格的空隙(这样足够避开子弹)。
  • 当草丛本来就少的情况下,比如比赛地图最后一张,草丛每个都很独立,判断敌人位置很简单,连朝向都不需要知道,闪避的函数只要稍微写写if else就能做出来。
  • 也可以规定草丛里待的时间有限,比如6~8帧之内不可见位置,不然就自动暴露位置(也暴露方向)。这样至少不会出现呆在草丛里不出来的情况。
  • 最后说一点,敌人在草丛里对己方最大的不利就是抢星星而已, 想躲避被打很容易。所以场上没星星的时候敌人就算在草丛里也无所谓吧,你既然可以获得敌人进入草丛时的位置,也就是知道了他的大致位置了。更何况星星出现的时刻,敌人的位置是被暴露的(方向不知)。

补充一点:星星出现的位置为中点(必须是整值的时候)是一个很tricky的事情。 考虑这个情形, 星星第一帧就要出现, 如果敌我双方初始点 (X1, Y1), (X2, Y2), 而 X1 + X2, Y1 + Y2都是奇数。

  • 第一帧: 大家在自己出生点。
  • 第二帧: 我方不动,这个时候星星不可能出现,敌方一定弄不出星星。(因为移动只有go函数)
  • 第三帧: 如果敌方第二帧前进, 我就旋转到平行的方向。如果敌方第二帧旋转,我方旋转到平行方向。

我的问题是,我的目的是最大可能拖延星星出现(比如我已经多拿一颗的时候),敌方想做出星星(不发子弹的情况下),我最多可以拖延多久?是不是我的方式得当的话,就一定让对手没星星可吃?

GaZ3ll3 avatar Dec 08 '14 20:12 GaZ3ll3

设计星星在中间点时就考虑了可以控制星星出现的情况,这样对 AI 来说更有挑战性。不过拖延星星出现有机会但是有点难。除非能判断对方下一步是移动还是旋转

luin avatar Dec 09 '14 02:12 luin

我的意思就是事实上不需要知道下一步是什么,还是有可能拖延的,就只根据当前这一步步就有可能。毕竟要整点出现对横纵坐标都有要求。

GaZ3ll3 avatar Dec 09 '14 02:12 GaZ3ll3