用于描述基于图块的游戏中的攻击范围的算法

时间:2012-09-04 07:50:49

标签: algorithm

我们目前正在开发基于磁贴和回合制的游戏。在我们的游戏中,有些角色可以远程攻击其他人。但是,攻击范围似乎有点难以使用算法来描述。如下图所示,每个数字表示图块'0'与其自身之间的范围。

5 4 3 3 3 4 5 
4 3 2 2 2 3 4
3 2 1 1 1 2 3
3 2 1 0 1 2 3
3 2 1 1 1 2 3
4 3 2 2 2 3 4
5 4 3 3 3 4 5

是否可以实现这样的功能?

int GetRange( const Grid & a, const Grid & b );

1 个答案:

答案 0 :(得分:1)

只需要处理3种可能的情况:

  • 当点在同一水平线上时,
  • 在同一垂直线上,
  • 所有其他情况

在C ++中:

int GetRange( const Grid & a, const Grid & b ) {
  int x=a.x-b.x, y=a.y-b.y; // get change in x & y coordinates
  if (x==0) return abs(y);
  if (y==0) return abs(x);
  else return (abs(x)+abs(y)-1);
}