Closed. This question needs to be more focused. It is not currently accepting answers. Learn more。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
我正在构建一个无状态游戏a I的原型,如果有一种方法可以组合多个数据源并决定在一个2D方格游戏板中的“最佳”位置,我会很感兴趣
输入示例:
一组玩家/威胁(x,y)坐标
本回合内可能移动(x,y)坐标的数组
一排陷阱
一系列地形加/罚
接近友好单位/治疗者的数组
例如,我的方法是计算一组玩家之间的最远距离,并将怪物移动到那里(如果受到重伤)。我希望通过包含来自上面这样的数组的数据来改进这一点恐怕这真的会使这些方法膨胀——有没有更好的方法来分析我提到的数据?
-(void)runAway
{
[self debugMessage];
int bestTileIndex = 0;
int maxDistance = 0;
NSMutableArray* playerLocations = [[MapOfTiles sharedInstance] playerLocations];
NSMutableDictionary* validMoveDistanceToEnemy =[[NSMutableDictionary alloc] initWithCapacity:112];
float sum = 0;
//valid move arrays is an array of arrays of tiles at 1, 2, 3,etc moves away from the origin
if(validMoveArrays.count>0)
{
for(NSArray* reachableTiles in validMoveArrays)
{
for(NSNumber* tileNumber in reachableTiles)
{
sum = 0;
for(NSNumber* playerLocation in playerLocations)
{
sum += [self distanceFromTileIndex:tileNumber.intValue toTileIndex:playerLocation.intValue];
}
[validMoveDistanceToEnemy setObject:@(sum) forKey:tileNumber];
}
}
}
DLog(@"validMoveDistanceToEnemy: %@",validMoveDistanceToEnemy);
NSNumber* distanceToEnemy = nil;
for (NSNumber* key in [validMoveDistanceToEnemy allKeys])
{
distanceToEnemy = [validMoveDistanceToEnemy objectForKey:key];
if(distanceToEnemy.intValue >maxDistance)
{
maxDistance = distanceToEnemy.intValue;
bestTileIndex = key.intValue;
}
}
if(bestTileIndex>tileCountTall*tileCountWide)
{
//out of bounds or some other error
[self stationaryAction];
}else
{
//move to safest tile
[self.actor moveToTileIndex:bestTileIndex];
}
}
最佳答案
这不是一个客观的C问题,而是一个算法/人工智能问题。
这是一个深刻而复杂的课题。
一种方法是为游戏中每个平铺的不同赞成/反对因素分配不同的权重,然后根据这些权重值的总和得出每个平铺的总期望得分。
你也可以解一个联立方程组来找到理想的解。
我建议买一本关于人工智能游戏的书。当我在大型书店的科技区(比如美国现在已经不复存在的边界)浏览时,我看到了不少
关于ios - 如何在2D游戏 map 上找到最安全/最佳的点? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20623772/
10-16 19:31