ilbn20
ilbn20
采纳率28.6%
2015-05-19 00:39 阅读 2.9k

C++双人贪吃蛇博弈

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • j550341130 叽哩叽哩鸡 2015-05-19 01:54

    图片说明

    点赞 2 评论 复制链接分享
  • wsh1992o 存钱买冰棍 2015-05-20 02:32

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

    点赞 2 评论 复制链接分享
  • j550341130 叽哩叽哩鸡 2015-05-19 01:52

    这样就行

    点赞 评论 复制链接分享
  • jszj red-fly 2015-05-19 03:53

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

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

    点赞 评论 复制链接分享
  • jszj red-fly 2015-05-20 01:14

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

    点赞 评论 复制链接分享

相关推荐