它是一个简单的 c++ 游戏。
在坐标范围 (0.0f,0.0f) 到 (10.0f,10.0f) 内随机生成 5 个塔。他们有随机的生命值,范围和伤害上限在一定限度内。他们不能动。
现在,地图上添加了 10 个单位,具有固定的移动速度、生命值和伤害。
单元和塔的数量将通过模拟确定。只有他们的初始位置是随机的。将运行 1000 次模拟。
目标是使单位的胜率达到约 90%。
当单位摧毁所有的塔时,游戏获胜。单位可以以预定义的速度向塔移动。每个模拟都需要多轮才能完成。在每一轮中,如果在一定范围内,单位会朝着最佳选择的目标移动并攻击。类似地,塔会选择其攻击范围内的任何单位并继续攻击它,直到它死亡或移出范围。
我需要一些关于我应该投入时间来实现相同算法的指针。
目前,我可以使用与单位的距离、生命值、射程和塔的伤害的一些加权平均值,并选择在这些标准上得分最低的塔,可以达到 84.2% 的胜率。在不考虑其他属性的情况下向与单位距离最小的塔移动,获得大约 72% 的胜率。
从已删除答案的评论中:
还有一个限制。我每次只能选择一个目标。单位将确保朝着那个目标移动。我不应该修改单位向 target 移动的部分。因此,在模拟的每一轮中都必须有一个目标塔,目标单位将朝着哪个目标移动。所以,我无法将我的单位从塔楼移到安全区域,然后将它们组装在一个点上,然后计划我的攻击。