用C/C++编写贪吃蛇人工智能游戏_路径_地位
AI 的目的是让蛇尽可能的吃更多的食品,直到吃满全体舆图。想参与这个项目,请查看todos。
Demo
利用方法
编译与运行:
$ make$ make run
为理解详细利用方法, 请查看主函数main()
算法先容
函数Snake.decideNext(): 打算蛇S1的下一个移动方向D打算从蛇S1的头部到达食品的最短路径P1。派一条与蛇S1完备一样的虚拟蛇S2沿路径P1吃掉食品。打算从蛇S2的头部到其尾部的最长路径P2。如果路径P2存在,将移动方向D设置为路径P1的第一个方向,否则进行步骤4。打算从蛇S1的头部到达其尾部的最长路径P3。如果P3存在,将移动方向D设置为路径P3的第一个方向,否则进行步骤5。将移动方向D设置为离食品最远的方向。函数Map.findMinPath(): 打算两个位置间的最短路径算法建立在BFS的根本上。为了使路径尽可能直,每次遍历毗邻点时,在当前移动方向上的位置会被优先遍历。效果展示:(绿色区域为搜索算法扫描到的区域,赤色区域为末了打算出的最短路径,每个位置上的数字表示了从起始位置开始到该位置的最短间隔)函数Map.findMaxPath(): 打算两个位置间的最长路径算法建立在DFS与贪心算法的根本上。每次遍历毗邻点时,离目标位置最远(利用曼哈顿间隔估计)的位置将会被优先遍历到。其余,为了使路径尽可能直,如果两个位置到目标位置的间隔相等,在当前移动方向上的位置将被优先遍历到。这个问题是一个NP完备问题,此算法得出的结果路径只是一个近似最长路径。效果展示:(绿色区域为搜索算法扫描到的区域,赤色区域为末了打算出的最长路径,每个位置上的数字表示了从该位置开始到目标位置的估计间隔)网友评论:
末了,如果你想学C/C++,可以私信
本文系作者个人观点,不代表本站立场,转载请注明出处!