package org.artisanlogiciel.games.maze.model; import org.artisanlogiciel.games.maze.MovesProvider; import org.artisanlogiciel.games.maze.WallsProvider; public class HalfSquareModelCreator { interface SetXY { void setXY(HalfSquareRasterModel model, int x, int y); } HalfSquareRasterModel createFromFunc(int width, int height, SetXY func) { HalfSquareRasterModel model = new HalfSquareRasterModel(width,height); for (int y=0; y { model.setWalls(x,y, provider.getWalls(x,y)); }; return createFromFunc( provider.getWidth(), provider.getHeight(), setWalls); } public HalfSquareRasterModel createFromMovesProvider(MovesProvider provider) { SetXY setMoves = ( model, x, y ) -> { model.setMoves(x,y,provider.getMoves(x,y)); }; return createFromFunc( provider.getWidth(), provider.getHeight(), setMoves); } }