1

現在、タイルベースとターンベースのゲームを開発しています。私たちのゲームには、遠くから他の人を攻撃できるキャラクターがいます。ただし、攻撃範囲をアルゴリズムを使用して説明するのは少し難しいようです。以下に示します。すべての数字は、タイル「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 に答える