FloodFill:记录Origin的距离?

时间:2016-08-01 20:50:31

标签: c++ algorithm flood-fill

简短的问题,我将Flood Fill Algorithm(基本上是第一个伪代码)实现到我的C ++代码中并且它完美地工作,我只需要记录它从原点移除了多少个像{{{{ 3}}完成了。

我不是在寻找this person

这是我的代码。我省略了不必要的代码。

class MovementTile
{
public:
    int x, y;
    bool CanMoveTo;
    bool IsPassable;
    bool Visited;

    MovementTile(int _x, int _y, bool _IsPassable)
    {
        x = _x;
        y = _y;
        IsPassable = _IsPassable;
        Visited = false;
        CanMoveTo = false;
    }

};

void Fill(MovementTile* _tile, int _x, int _y)
    {
        if (!_tile->Visited)
        {
            if (!_tile->IsPassable)
            {
                _tile->Visited = true;
            }
            else
            {
                _tile->Visited = true;
                _tile->CanMoveTo = true;

                if (_x - 1 > 0)
                {
                    Fill(TileList[_y][_x - 1], _x - 1, _y);
                }

                if (_y - 1 > 0)
                {
                    Fill(TileList[_y - 1][_x], _x, _y - 1);
                }

                if (_y + 1 < TileList[_y].size())
                {
                    Fill(TileList[_y + 1][_x], _x, _y + 1);
                }

                if (_x + 1 < TileList[_y].size())
                {
                    Fill(TileList[_y][_x + 1], _x + 1, _y);
                }
            }
        }
    }

0 个答案:

没有答案