0

ゲーム中 ( 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 をチェックする方法は?

(明確にするために、この醜い画像のように)

ここに画像の説明を入力

4

1 に答える 1

0

これを試すことができます:

Make a copy of the board
Color the squares where you have soldiers using the first available color
For each square:
    if the square is white, then
        flood fill the board starting at this square with the next available color
        while flood filling, check whether all border squares are the soldier color
        if so, you have some closed formation. Otherwise, you just colored the unoccupied parts of the board.

結果として得られる色付きのボードは、軍隊が存在する場合は 1 色になり、占有されていない閉鎖されたスペースには固有の色が付きます。あなたが考えるかもしれない何か - フォーメーション内のフォーメーションは許可されていますか?

于 2015-08-26T17:28:59.323 に答える