0

在游戏 ( it is c++ board game like matrix with soldiers which can use formation) 中,士兵可以编队部署。(在地图/矩阵的一个单元格上只能部署一名士兵,编队可以在 8 个方向上,角度为 0、45、90、135、180、225、270、315 度与 x 轴,当士兵编队时,他们是在相邻的单元格中,例如在 0 度 y 中的形成对于除 x2 - x1 =1 等之外的所有人都是相同的,在 45 度 y2-y1=1 和 x2-x1=1 上)。阵型是线和hollow_square。我需要一种非常有效的方法来检查士兵是否在编队(士兵在班级中有 x 和 y 自己的位置)。对于线,我按 x 排序(我有它代表部队中士兵的位置)并检查相邻 ( )std::list<std::pair<int,int> >之间的差异是否为 1 。in case 0, 180; in case 45, 135 ,225, 315 also check for difference for y is 1 or -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.

由此产生的彩色板将具有一种颜色,其中有部队和未占用和封闭空间的独特颜色。您可能会考虑的事情 - 编队内的编队是否允许?

于 2015-08-26T17:28:59.323 回答