ゲーム中 ( it is c++ board game like matrix with soldiers which can use formation
) の兵士はフォーメーションで配置できます。(マップ/マトリックス上の 1 つのセルに配置できるのは 1 人の兵士のみです。フォーメーションは、x 軸に対して角度 0、45、90、135、180、225、270、315 度の 8 方向に配置できます。兵士がフォーメーションにいる場合、彼らは隣接するセルでは、たとえば、0 度 y のフォーメーションは x2 - x1 =1 を除いてすべて同じであり、次数 45 では y2-y1=1 および x2-x1=1 )。フォーメーションはlineとhollow_squareです。兵士が編成されているかどうかを確認する非常に効率的な方法が必要です(兵士はクラス内でxとyの独自の位置を持っています)。行の場合、 x (std::list<std::pair<int,int> >
ユニット内の兵士の位置を表すものがあります) で並べ替え、隣接する ( in case 0, 180; in case 45, 135 ,225, 315 also check for difference for y is 1 or -1
) 間の差が 1 であるかどうかを確認します。兵士が隊形を組んでいる場合、hollow_square をチェックする方法は?
(明確にするために、この醜い画像のように)