C++双人贪吃蛇博弈

这个游戏没有吃东西这回事,但你的AI要和别的AI在有障碍的地图上博弈,看谁存活的时间长(蛇会生长)。

有两个问题请教一下:
如何避免走入死胡同
蛇长长后,地图可用空间非常狭小,如何合理倒开空间以便于存活
说说思路与实现方式就好

5个回答

用一个二维数组存场景上的可行点
0为不可走,也就是有障碍
1为可走
每次蛇要走的时候,都判断前,左,右是否可走,都可走就继续直走
不能直走就判断当前处于整个地图靠左还是靠右位置
靠左就朝右走,靠右就超左走(这个左右不是地图的绝对左右,而且蛇自身的左右)
这是一个比较基础的ai算法
你还可以写的更高级些

图片说明

j550341130
叽哩叽哩鸡 回复ilbn20: 嗨嗨,我也不知道
大约 5 年之前 回复
ilbn20
ilbn20 这是咋写的这么厉害
大约 5 年之前 回复
ilbn20
ilbn20 这是咋写的这么厉害
大约 5 年之前 回复

这样就行

我看可以参考围旗的思想。
1. 通过围堵使对方没有空间可以施展
2. 尽量扩大自己的地盘,同样采用围堵的办法把自己围在一个大的空间里

至于不走入死胡同,需要计算自己尾移动方向、对方头的移动方向、对方尾的移动方向,根据这三个计算结果来确定自己头的移动方向。由于是博弈,所以计算对方头的移动方向是最重要的,这个方向的计算应该是需要有一定的预测性

ilbn20
ilbn20 。。。网太卡,点一下出那么多
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复
ilbn20
ilbn20 随机障碍物该如何处理呢
大约 5 年之前 回复

随机障碍物的话,那就要特定处理了,因为它的位置不固定,只能在每一次计算的时候单独处理。就是在计算蛇的头尾移动方向的时候把当时的障碍物位置除去,而最终计算出自己头移动方向的时候,可能需要下次障碍物出现的不同位置而保留多个方案,那些障碍物出现的位置会导致头移动方向进入死胡同的方案需要过滤掉

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问