我在哪里可以find关于基于网格的无状态AIalgorithm的信息?

各种各样的人工智能似乎有大量的信息 ,而且很难一次消化。

对于我的testing目的,我正在创建一个“典型的无状态AI”,如本文所述 ,现在我需要为2D平方的游戏板实现以下function:

-(void)runAway; -(void)attackPlayer; -(void)moveTowardsPlayer; -(void)tacticalMoveAwayFromPlayer; -(void)waitOrStationaryAction; 

例如,我可以像这样运行我自己的跑步function:

 -(void)runAway { DLog(@"runAway"); [self debugMessage]; int bestTileIndex = 0; int largestDistance = 0; int distance = 0; if(validMoves.count>0) { for(NSNumber* tileNumber in validMoves) { distance = [self distanceToTargetFromTile:tileNumber.intValue]; if(distance >largestDistance) { largestDistance = distance; bestTileIndex = tileNumber.intValue; } } } //move to best tile } 

但是这个方法只能检测1个目标的距离,如果游戏板上有多个敌人,这个距离可能不是最好的。

我在哪里可以find用于search这些function的2D网格algorithm的好的/有效的实现? 例如find距离多个对手最远的点,并且在一定数量的移动中可以进入。

其他想到的function是select最好的/最薄弱的目标,在考虑到可变的地形成本等因素的情况下转向具体的目标。

我敢肯定有人已经这样做过。

Solutions Collecting From Web of "我在哪里可以find关于基于网格的无状态AIalgorithm的信息?"

我不给你一个简单的代码,但我给你的想法和一些食物的大脑。 我认为这取决于游戏,例如,如果你有一个大面积的棋盘这个东西,但是如果你有10×10的棋盘,没有什么不好的事情可以通过4或8(对角线)方向。 iOS设备的生产效率非常高,这不会使cpu超载,也不需要很长时间才能完成所有可能的操作。 当我制作我的逆转游戏Fresh Reversi时,我做了这样的事情,你可以看看免费版本 。

例如,你可以创建一个方法从你的AI玩家转到一个方向(让我们往右走),这将是一个循环,我们走,而我们不离开董事会或者如果我们find玩家。 所以,每次迭代你都可以计算距离等等。 在find玩家之后,你可以把这个可能的移动保存到字典中,然后调用另一个方法来等待另一个方向。 希望你有我的想法。 这不是万能的,但是我认为这对于棋类游戏是很好的。