简短的问题,我将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);
}
}
}
}