public void search_for(c_search_target search_target) { if (try_search(search_target)) { return; } grid = grid.rotate(); if (try_search(search_target)) { return; } grid = grid.rotate(); if (try_search(search_target)) { return; } grid = grid.rotate(); if (try_search(search_target)) { return; } grid = grid.flip(); if (try_search(search_target)) { return; } grid = grid.rotate(); if (try_search(search_target)) { return; } grid = grid.rotate(); if (try_search(search_target)) { return; } grid = grid.rotate(); if (try_search(search_target)) { return; } }
private bool try_search(c_search_target search_target) { bool found_target = false; for (int row = 0; row < grid.Length - search_target.max_row; row++) { for (int column = 0; column < grid[row].Length - search_target.max_column; column++) { if (search_target.positions.All(search_position => grid[row + search_position.Item1][column + search_position.Item2] != e_grid_value.off)) { foreach ((int, int)search_position in search_target.positions) { grid[row + search_position.Item1][column + search_position.Item2] = e_grid_value.monster; } found_target = true; } } } return(found_target); }