1

我们目前正在开发基于图块和回合制的游戏。在我们的游戏中,有些角色可以从远处攻击他人。然而,攻击范围似乎有点难以用算法来描述。如下图所示,每个数字表示 tile '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 );

4

1 回答 1

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);
}
于 2012-09-04T07:56:42.233 回答