diff --git a/src/main/java/me/taako/swt/prog2/model/PuzzleModel.java b/src/main/java/me/taako/swt/prog2/model/PuzzleModel.java index f553ede..6ce11ea 100644 --- a/src/main/java/me/taako/swt/prog2/model/PuzzleModel.java +++ b/src/main/java/me/taako/swt/prog2/model/PuzzleModel.java @@ -1,4 +1,48 @@ package me.taako.swt.prog2.model; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.IntStream; + public class PuzzleModel { + private final int size; + private final List tiles; + + public PuzzleModel(int rows, int cols) { + this.size = rows * cols; + this.tiles = new ArrayList<>(size); + initTiles(); + shuffleTiles(); + } + + private void initTiles() { + IntStream.range(0, size) + .forEach(tiles::add); + } + + private void shuffleTiles() { + Collections.shuffle(tiles); + } + + public int getTile(int index) { + return tiles.get(index); + } + + public int getSize() { + return size; + } + + public boolean isTileCorrect(int index) { + return tiles.get(index) == index; + } + + public boolean isSolved() { + return IntStream.range(0, size) + .allMatch(this::isTileCorrect); + } + + public void swapTiles(int index1, int index2) { + Collections.swap(tiles, index1, index2); + } }