私はフォーラムを広範囲に検索しましたが、これを完全にカバーするものはありません。私は本質的に、列挙型の配列に対する 3D フラッド フィル アルゴリズムと呼ぶものを実行しようとしています。配列要素の「色」を変更するのではなく、列挙型を変更したいと思います。これは私がこれまでに持っているものです。これがうまくいくと思うか、何か提案があれば教えていただけますか?
/*
* CellType is my enum type. BOUNDRY_BOX enum type is type that I line the whole 3D array with. So the
* whole inside surface of the 3D box is filled with CellType.BOUNDRY_BOX.
**/
public void fillAllVoidCells(CellType[][][] grid, CellType targetType, CellType replacementType, int x, int y, int z)
{
if ((grid[x][y][z] != targetType) && grid[x][y][z] != CellType.BOUNDRY_BOX)
{
break;
}
else
{
grid[x][y][z] = replacementType;
fillAllVoidCells(grid, targetType, replacementType, x + 1, y, z); // right
fillAllVoidCells(grid, targetType, replacementType, x - 1, y, z); // left
fillAllVoidCells(grid, targetType, replacementType, x, y + 1, z); // in front
fillAllVoidCells(grid, targetType, replacementType, x, y - 1, z); // behind
fillAllVoidCells(grid, targetType, replacementType, x, y, z + 1); // above
fillAllVoidCells(grid, targetType, replacementType, x, y, z - 1); // below
}
}