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