我是这个gamedev stackechange的新手,但之前使用过数学和CS网站。
因此,我正在为蛇创建AI竞赛,它将在5分钟内与另外四条蛇竞争,规则类似于传统的诺基亚蛇游戏,除了有五条蛇,棋盘为30x30,并且有球场上有许多小障碍。
像诺基亚游戏一样,当您到达水果时,您的蛇会长大;如果撞到自己,另一条蛇或墙壁,您会死去。游戏在移动之间的延迟为30ms的情况下运行,服务器每隔50ms发送新的游戏状态,代码必须分析该状态,然后再分析不输出什么,并输出下一移动。
胜利者是在游戏中任何时刻都最长的蛇。决胜局由杀手决定。
到目前为止,我所做的是对每条蛇执行A *图形搜索,以确定我的蛇是否最接近苹果,如果是,它就适合苹果。否则,我会做出一个巧妙的小算法来确定棋盘上最空的区域,以供我预测蛇的位置,以预测下一个苹果。
除此之外,我还进行了一些小的生存性检查,以确保我的蛇不会走入无法摆脱的陷阱,如果确实被卡住,我还有一些办法可以使它更好地摆脱困境。
...
无论如何,我已经在测试服务器上测试了我的蛇,它做的很好。通常,我的策略是只在苹果确定可靠的情况下才选择苹果,而在苹果没有使其比其他任何蛇长得更快的情况下寻找空间(某些蛇也做类似的事情,但通常只走到中间或角落),有时它会获胜在这些试玩游戏中,但常常被似乎在生存能力方面具有优势的同一条蛇打败(我的蛇生长更快,但随后以某种方式死亡,而另一条蛇则缓慢前进,并赢得了稳定性。
所以我想知道任何人必须尝试改善我的蛇的想法。也许是采用新方法的想法。我的函数和类很好,因此看起来似乎很剧烈的更改应该不会太糟糕。我鼓励所有想法。
有什么想法吗?