package model;

public interface  Grid  {

    /**
     * Return the cell located at the given coordinates in the grid.
     * @param row the row of the returned the cell
     * @param column the column of the returned cell
     * @return the cell located in row {@code row} and in column {@code column}
     */
    Cell getCell(int row, int column);

    /**
     * Return the number of rows of this {@code Grid}
     * @return the number of rows of this {@code Grid}
     */
    int getNumberOfRows();

    /**
     * Return the number of columns of this {@code Grid}
     * @return the number of columns of this {@code Grid}
     */
    int getNumberOfColumns();

    /**
     * Color every cell of this {@code Grid} using the provided {@code ColorGenerator}
     * @param colorGenerator the generator used to determine the color of each cell.
     *                       The new color of {@code cell} is obtained by calling the method {@code nextColor}
     */

    void color(ColorGenerator colorGenerator);
}