From accd4996f8f2e3051ca8ec0101eaf3a341b3695a Mon Sep 17 00:00:00 2001 From: LaVloZ Date: Thu, 14 Nov 2013 22:45:11 +0100 Subject: [PATCH] Adding some classes and later i will change some problems --- .../core/{Puzzle.java => AbstractPuzzle.java} | 4 +- .../puzzles/core/AbstractRectangularPuzzle.java | 34 +++++++++++++++ src/com/github/puzzles/core/Flipable.java | 5 +++ src/com/github/puzzles/core/RectangularPuzzle.java | 19 --------- src/com/github/puzzles/core/SlidingPuzzle.java | 49 ++++++++++++++++++++++ src/com/github/puzzles/util/Matrices.java | 24 +++++++++++ 6 files changed, 114 insertions(+), 21 deletions(-) rename src/com/github/puzzles/core/{Puzzle.java => AbstractPuzzle.java} (86%) create mode 100644 src/com/github/puzzles/core/AbstractRectangularPuzzle.java create mode 100644 src/com/github/puzzles/core/Flipable.java delete mode 100644 src/com/github/puzzles/core/RectangularPuzzle.java create mode 100644 src/com/github/puzzles/core/SlidingPuzzle.java create mode 100644 src/com/github/puzzles/util/Matrices.java diff --git a/src/com/github/puzzles/core/Puzzle.java b/src/com/github/puzzles/core/AbstractPuzzle.java similarity index 86% rename from src/com/github/puzzles/core/Puzzle.java rename to src/com/github/puzzles/core/AbstractPuzzle.java index 790a723..09a3b77 100644 --- a/src/com/github/puzzles/core/Puzzle.java +++ b/src/com/github/puzzles/core/AbstractPuzzle.java @@ -4,12 +4,12 @@ package com.github.puzzles.core; -public abstract class Puzzle { +public abstract class AbstractPuzzle { private int size; private int counter; private Difficulty difficulty; - protected Puzzle(int size, int count, Difficulty difficulty){ + protected AbstractPuzzle(int size, int count, Difficulty difficulty){ this.size = size; this.counter = count; this.difficulty = difficulty; diff --git a/src/com/github/puzzles/core/AbstractRectangularPuzzle.java b/src/com/github/puzzles/core/AbstractRectangularPuzzle.java new file mode 100644 index 0000000..6ec50fc --- /dev/null +++ b/src/com/github/puzzles/core/AbstractRectangularPuzzle.java @@ -0,0 +1,34 @@ +/** + * Rectangular puzzle should inherit this class. + */ + +package com.github.puzzles.core; + +import com.github.puzzles.util.Matrices; + +public abstract class AbstractRectangularPuzzle extends AbstractPuzzle { + + private int width; + private int height; + T puzzle[][]; + + @SuppressWarnings("unchecked") + protected AbstractRectangularPuzzle(int width, int height, Difficulty difficulty) { + super(width * height, 0, difficulty); + this.width = width; + this.height = height; + puzzle = (T[][]) new Object[width][height]; + } + + public final int getWidth() { + return width; + } + + public final int getHeight() { + return height; + } + + public final T[][] getPuzzle() { + return Matrices.copyOf(puzzle); + } +} diff --git a/src/com/github/puzzles/core/Flipable.java b/src/com/github/puzzles/core/Flipable.java new file mode 100644 index 0000000..d99f0e7 --- /dev/null +++ b/src/com/github/puzzles/core/Flipable.java @@ -0,0 +1,5 @@ +package com.github.puzzles.core; + +public interface Flipable { + public void flip(T flip); +} diff --git a/src/com/github/puzzles/core/RectangularPuzzle.java b/src/com/github/puzzles/core/RectangularPuzzle.java deleted file mode 100644 index a5ef0b4..0000000 --- a/src/com/github/puzzles/core/RectangularPuzzle.java +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Rectangular puzzle should inherit this class. - */ - -package com.github.puzzles.core; - -public abstract class RectangularPuzzle extends Puzzle { - - private int width; - private int height; - private int puzzle[][]; - - protected RectangularPuzzle(int width, int height, Difficulty difficulty) { - super(width * height, 0, difficulty); - this.width = width; - this.height = height; - puzzle = new int[width][height]; - } -} diff --git a/src/com/github/puzzles/core/SlidingPuzzle.java b/src/com/github/puzzles/core/SlidingPuzzle.java new file mode 100644 index 0000000..7794f64 --- /dev/null +++ b/src/com/github/puzzles/core/SlidingPuzzle.java @@ -0,0 +1,49 @@ +package com.github.puzzles.core; + +import com.github.puzzles.util.Matrices; + +public class SlidingPuzzle extends AbstractRectangularPuzzle implements Slidable { + + Boolean correctPuzzle[][]; + + public SlidingPuzzle(int width, int height, Difficulty difficulty) { + super(width, height, difficulty); + + this.correctPuzzle = new Boolean[getWidth()][getHeight()]; + Matrices.fill(correctPuzzle, new Boolean(true)); + } + + @Override + public boolean check() { + if(puzzle.equals(correctPuzzle)) + return true; + return false; + } + + @Override + public void slid(Integer index) { + try { + puzzle[index][index] = toggle(puzzle[index][index]); + } catch (ArrayIndexOutOfBoundsException e) {} + + try { + puzzle[index][index + 1] = toggle(puzzle[index][index]); + } catch (ArrayIndexOutOfBoundsException e) {} + + try { + puzzle[index][index - 1] = toggle(puzzle[index][index]); + } catch (ArrayIndexOutOfBoundsException e) {} + + try { + puzzle[index + 1][index] = toggle(puzzle[index][index]); + } catch (ArrayIndexOutOfBoundsException e) {} + + try { + puzzle[index - 1][index] = toggle(puzzle[index][index]); + } catch (ArrayIndexOutOfBoundsException e) {} + } + + private Boolean toggle(boolean bool){ + return !bool; + } +} diff --git a/src/com/github/puzzles/util/Matrices.java b/src/com/github/puzzles/util/Matrices.java new file mode 100644 index 0000000..1d829ac --- /dev/null +++ b/src/com/github/puzzles/util/Matrices.java @@ -0,0 +1,24 @@ +package com.github.puzzles.util; + +import java.util.Arrays; + +public class Matrices { + + @SuppressWarnings("unchecked") + public static T[][] copyOf(T[][] matrice){ + T[][] returnedPuzzle = (T[][]) new Object[matrice.length][matrice[0].length]; + + //* + for(T[] line : returnedPuzzle){ + line = Arrays.copyOf(line, line.length); + } + //*/ + + return returnedPuzzle; + } + + public static void fill(T[][] matrice, T val){ + for(T[] line : matrice) + Arrays.fill(line, val); + } +} -- 2.11.4.GIT