diff --git a/PR2Projekt/pom.xml b/PR2Projekt/pom.xml
index 607057c..cbd7ae7 100644
--- a/PR2Projekt/pom.xml
+++ b/PR2Projekt/pom.xml
@@ -61,7 +61,7 @@
-de.hs_mannheim.informatik.mvn.domain.HitoriMain
+de.hs_mannheim.informatik.main.Main
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/CSVReader.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/CSVReader.java
new file mode 100644
index 0000000..1625e82
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/CSVReader.java
@@ -0,0 +1,66 @@
+package de.hs_mannheim.informatik.domain;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+public class CSVReader {
+
+ public ArrayList readFromFile(InputStream inputStream){
+ ArrayList lines = new ArrayList<>();
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ lines.add(line);
+ }
+ } catch (IOException e) {
+ e.getMessage();
+ }
+ return lines;
+ }
+
+ public ArrayList getSolution(InputStream inputStream) throws FileNotFoundException{
+ ArrayList filteredData = new ArrayList<>();
+ boolean isUnderComment = false;
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ if (line.equals("//Lösung (schwarze Felder)")) {
+ isUnderComment = true;
+ continue;
+ }
+ if (isUnderComment && !line.isEmpty()) {
+ String[] lineArray = line.split(",");
+ int firstNumn = Integer.parseInt(lineArray[0]);
+ int secondNum = Integer.parseInt(lineArray[1]);
+ String firstNumAsString = String.valueOf(firstNumn - 1);
+ String secondNumAsString = String.valueOf(secondNum - 1);
+ String newLine = firstNumAsString + "," + secondNumAsString;
+ filteredData.add(newLine);
+ }
+ }
+ } catch (IOException e) {
+ e.getMessage();
+ }
+ return filteredData;
+ }
+
+ public String[][] getData(InputStream inputStream, int rows) throws FileNotFoundException{
+ String[][] data = new String[rows][rows];
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+ String line;
+ int rowInt = 0;
+ while ((line = reader.readLine()) != null && rowInt < rows) {
+ data[rowInt] = line.split(",");
+ rowInt++;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return data;
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/FieldDataResult.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/FieldDataResult.java
new file mode 100644
index 0000000..e65248d
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/FieldDataResult.java
@@ -0,0 +1,27 @@
+package de.hs_mannheim.informatik.domain;
+
+import java.io.InputStream;
+
+public class FieldDataResult {
+ private final String[][] data;
+ private final String[][] colors;
+ private final InputStream gameStream;
+
+ public FieldDataResult(String[][] data, String[][] colors, InputStream gameStream) {
+ this.data = data;
+ this.colors = colors;
+ this.gameStream = gameStream;
+ }
+
+ public String[][] getData() {
+ return data;
+ }
+
+ public String[][] getColors() {
+ return colors;
+ }
+
+ public InputStream getGameStream() {
+ return gameStream;
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/GameBoard.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/GameBoard.java
new file mode 100644
index 0000000..e37d21c
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/GameBoard.java
@@ -0,0 +1,69 @@
+package de.hs_mannheim.informatik.domain;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Stack;
+import de.hs_mannheim.informatik.facade.HitoriAPI;
+
+public class GameBoard {
+
+ public FieldDataResult initializeFieldData(byte[] gameData, int rows, Stack madeMoves, String path) throws IOException {
+ InputStream newStream = new ByteArrayInputStream(gameData);
+ String[][] data = new CSVReader().getData(newStream, rows);
+ System.out.println(data.length + " FNABLKJFABW");
+ String[][] colors = new HitoriLogic().makeColorArray(data.length);
+ InputStream gameStream = new ByteArrayInputStream(gameData);
+ return new FieldDataResult(data, colors, gameStream);
+ }
+
+ public String[] getGameButtonNames() {
+ String[] buttonNames = {
+ "4x4 - leicht",
+ "5x5 - leicht",
+ "8x8 - leicht",
+ "8x8 - medium",
+ "10x10 - medium",
+ "15x15 - medium"
+ };
+ return buttonNames;
+ }
+
+ public String[] getGamePath() {
+ String[] buttonPaths = {
+ "/Hitori_Spielfelder/Hitori4x4_leicht.csv",
+ "/Hitori_Spielfelder/Hitori5x5leicht.csv",
+ "/Hitori_Spielfelder/Hitori8x8leicht.csv",
+ "/Hitori_Spielfelder/Hitori8x8medium.csv",
+ "/Hitori_Spielfelder/Hitori10x10medium.csv",
+ "/Hitori_Spielfelder/Hitori15x15_medium.csv"
+ };
+ return buttonPaths;
+ }
+
+ public String[] getHighscorePathNames() {
+ String[] buttonPaths = {
+ "resources/Hitori_Highscores/Hitori4x4_leicht.txt",
+ "resources/Hitori_Highscores/Hitori5x5leicht.txt",
+ "resources/Hitori_Highscores/Hitori8x8leicht.txt",
+ "resources/Hitori_Highscores/Hitori8x8medium.txt",
+ "resources/Hitori_Highscores/Hitori10x10medium.txt",
+ "resources/Hitori_Highscores/Hitori15x15_medium.txt"
+ };
+ return buttonPaths;
+ }
+
+ public String[] getHighscoreButtonNames() {
+ String[] buttonNames = {
+ "Highscore 4x4 - leicht",
+ "Highscore 5x5 - leicht",
+ "Highscore 8x8 - leicht",
+ "Highscore 8x8 - medium",
+ "Highscore 10x10 - medium",
+ "Highscore 15x15 - medium"
+ };
+ return buttonNames;
+ }
+
+
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HighscoreEintrag.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HighscoreEintrag.java
similarity index 87%
rename from PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HighscoreEintrag.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HighscoreEintrag.java
index 4d06a1f..8fcfd03 100644
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HighscoreEintrag.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HighscoreEintrag.java
@@ -1,4 +1,4 @@
-package de.hs_mannheim.informatik.mvn.domain;
+package de.hs_mannheim.informatik.domain;
import java.time.LocalTime;
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HighscoreManager.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HighscoreManager.java
similarity index 98%
rename from PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HighscoreManager.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HighscoreManager.java
index b570030..4f52d37 100644
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HighscoreManager.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HighscoreManager.java
@@ -1,4 +1,4 @@
-package de.hs_mannheim.informatik.mvn.domain;
+package de.hs_mannheim.informatik.domain;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -19,7 +19,7 @@ import java.time.temporal.ChronoField;
import java.util.ArrayList;
import java.util.Comparator;
-import de.hs_mannheim.informatik.mvn.gui.HighscoreMenuGUI;
+import de.hs_mannheim.informatik.gui.HighscoreMenuGUI;
public class HighscoreManager {
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/Highscores.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/Highscores.java
similarity index 97%
rename from PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/Highscores.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/Highscores.java
index 75a3903..df34231 100644
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/Highscores.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/Highscores.java
@@ -1,4 +1,4 @@
-package de.hs_mannheim.informatik.mvn.domain;
+package de.hs_mannheim.informatik.domain;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HitoriLogic.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HitoriLogic.java
new file mode 100644
index 0000000..934f0fd
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/domain/HitoriLogic.java
@@ -0,0 +1,82 @@
+package de.hs_mannheim.informatik.domain;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Stack;
+
+public class HitoriLogic {
+
+ public String[][] makeColorArray(int size){
+ String[][] colors = new String[size][size];
+ for(int i=0;i filteredData = new CSVReader().getSolution(inputStream);
+ String[][] ergebnis = getErgebnisArray(result, filteredData);
+ boolean abgabeMöglich = checkArraySame(result, ergebnis);
+ return abgabeMöglich;
+ }
+
+ public void addMove(String[][] colors, int i, int j, String lastLetterString, Stack madeMoves){
+ colors[i][j] += lastLetterString;
+ String newMove = i+"."+j+"."+lastLetterString;
+ madeMoves.push(newMove);
+ }
+
+ public String[] getCords(int i, int j){
+ String yKoordinate = String.valueOf(i);
+ String xKoordinate = String.valueOf(j);
+ String[] position = {yKoordinate, xKoordinate};
+ return position;
+ }
+
+ public String[][] getResult(String[][] data, String[][] colors){
+ String[][] result = new String[data.length][data.length];
+ for(int i=0;i filteredData){
+ String[][] ergebnis = new String[result.length][result.length];
+ for(int i=0;i= 0 && row < ergebnis.length && col >= 0 && col < ergebnis[row].length) {
+ ergebnis[row][col] = "B";
+ }
+ }
+ return ergebnis;
+ }
+}
\ No newline at end of file
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/facade/HitoriAPI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/facade/HitoriAPI.java
new file mode 100644
index 0000000..a7ec165
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/facade/HitoriAPI.java
@@ -0,0 +1,82 @@
+package de.hs_mannheim.informatik.facade;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.Stack;
+import de.hs_mannheim.informatik.domain.*;
+
+public class HitoriAPI {
+
+ public static String[] getCordsCatcher(int i, int j) {
+ String[] pos = new HitoriLogic().getCords(i,j);
+ return pos;
+ }
+
+ public boolean abgabeMöglichCatcher(InputStream newStream, String[][] data, String[][] colors) throws FileNotFoundException {
+ boolean abgabeMöglich = new HitoriLogic().abgabeMöglich(newStream, data, colors);
+ return abgabeMöglich;
+ }
+
+ public void sortByTimeCatcher(byte[] data, String filename) throws IOException {
+ new HighscoreManager().sortByTime(data, filename);
+ }
+
+ public String getAvgTimeCatcher(byte[] data, String filename) throws IOException {
+ String avgTime = new HighscoreManager().getAvgTime(data, filename);
+ return avgTime;
+ }
+
+ public void copyResourceIfNotExistsCatcher(String resourcePathInJar, File outFile) throws IOException {
+ new HighscoreManager().copyResourceIfNotExists(resourcePathInJar, outFile);
+ }
+
+ public String[] getGameButtonNamesCatcher() {
+ String[] buttonNames = new GameBoard().getGameButtonNames();
+ return buttonNames;
+ }
+
+ public String[] getGamePathCatcher() {
+ String[] pathNames = new GameBoard().getGamePath();
+ return pathNames;
+ }
+
+ public String[] getHighscorePathNamesCatcher() {
+ String[] pathNames = new GameBoard().getHighscorePathNames();
+ return pathNames;
+ }
+
+ public String[] getHighscoreButtonNamesCatcher() {
+ String[] buttonNames = new GameBoard().getHighscoreButtonNames();
+ return buttonNames;
+ }
+
+ public Object[] loadHighscore(int index, String[] pathNames) {
+ Object[] arr = new Object[2];
+ String resourcePathInJar = pathNames[index];
+ String localFileName = resourcePathInJar.substring(resourcePathInJar.lastIndexOf('/') + 1);
+ File outFile = new File("resources/Hitori_Highscores", localFileName);
+ try {
+ copyResourceIfNotExistsCatcher(resourcePathInJar, outFile);
+ byte[] data = Files.readAllBytes(outFile.toPath());
+ arr[0] = data;
+ arr[1] = outFile.getPath();
+ return arr;
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ return arr;
+ }
+
+ public static void addMoveCatcher(String[][] colors, int i, int j, String lastLetterString,
+ Stack madeMoves) {
+ new HitoriLogic().addMove(colors, i, j, lastLetterString, madeMoves);
+ }
+
+ public FieldDataResult initializeFieldDataPass(byte[] gameData, int rows, Stack madeMoves, String path) throws IOException {
+ FieldDataResult fdr = new GameBoard().initializeFieldData(gameData, rows, madeMoves, path);
+ return fdr;
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/GameGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/GameGUI.java
similarity index 86%
rename from PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/GameGUI.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/GameGUI.java
index fd1aa0f..697a575 100644
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/GameGUI.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/GameGUI.java
@@ -1,24 +1,32 @@
-package de.hs_mannheim.informatik.mvn.gui;
+package de.hs_mannheim.informatik.gui;
import java.awt.*;
-import java.awt.event.*;
import java.util.Stack;
import java.util.Timer;
import java.util.TimerTask;
import java.io.*;
import javax.swing.*;
-import de.hs_mannheim.informatik.mvn.facade.HitoriAPI;
-public class GameGUI extends JFrame implements ActionListener {
+import de.hs_mannheim.informatik.facade.HitoriAPI;
+
+public class GameGUI extends JFrame {
- private static Timer timer = new Timer();
- private static long startTime;
- private static long elapsedSeconds;
- private static byte[] gameData;
-
- public void paintGame(InputStream inputStream, CardLayout cl, JPanel main, JButton[][] buttons, String[][] colors, Stack madeMoves, String[][] data, String path0) throws IOException{
- elapsedSeconds = 0;
+ private Timer timer = new Timer();
+ private long startTime;
+ private long elapsedSeconds;
+ private byte[] gameData;
+
+ public Object[] giveFrame(CardLayout cl, JPanel main){
+ Object[] frameArray = new Object[2];
+ frameArray[0] = cl;
+ frameArray[1] = main;
+ return frameArray;
+ }
+
+ public void paintGame(CardLayout cl, JPanel main, InputStream inputStream, Stack madeMoves, String[][] data, String path0, String[][] colors) throws IOException{
+ elapsedSeconds = 0;
gameData = inputStream.readAllBytes();
+ JButton[][] buttons = makeButtonArray(data);
String[] filepath = new String[2];
int num = buttons.length;
JPanel gameGrid = new JPanel(new GridLayout(num,num,0,0));
@@ -46,8 +54,8 @@ public class GameGUI extends JFrame implements ActionListener {
zurückButton.addActionListener(e -> {backOneStep(cl, main, madeMoves, buttons, colors, gameGrid);});
JButton resetButton = new JButton("Zurücksetzen");
resetButton.addActionListener(e -> {try {
- new HitoriAPI().totalResetButtonCatcher(inputStream, cl, main, buttons, colors, madeMoves, data, path0);
- } catch (FileNotFoundException e1) {
+ totalResetButton(inputStream, cl, main, buttons, colors, madeMoves, data, path0);
+ } catch (IOException e1) {
e1.printStackTrace();
}});
JButton abgebenButton = new JButton("Abgeben");
@@ -110,12 +118,6 @@ public class GameGUI extends JFrame implements ActionListener {
main.add(mainPanel, "GAME");
cl.show(main, "GAME");
}
-
- private void addMove(String[][] colors, int i, int j, String lastLetterString, Stack madeMoves){
- colors[i][j] += lastLetterString;
- String newMove = i+"."+j+"."+lastLetterString;
- madeMoves.push(newMove);
- }
private void changeButtonColor(JButton button, Color foreground, Color background) {
button.setOpaque(true);
@@ -153,7 +155,7 @@ public class GameGUI extends JFrame implements ActionListener {
changeButtonColor(button, foreground, background);
break;
}
- addMove(colors, i, j, lastLetterString, madeMoves);
+ HitoriAPI.addMoveCatcher(colors, i,j,lastLetterString,madeMoves);
}
public void backOneStep(CardLayout cl, JPanel main, Stack movesMade, JButton[][] buttons, String[][] colors, JPanel grid){
@@ -220,10 +222,6 @@ public class GameGUI extends JFrame implements ActionListener {
return endtime;
}
- @Override
- public void actionPerformed(ActionEvent e) {
- }
-
public JButton[][] makeButtonArray(String[][] data){
JButton[][] buttons = new JButton[data.length][data.length];
for(int i=0;i madeMoves,String[][] data,String path) throws FileNotFoundException{
- madeMoves.clear();
+ public void totalResetButton(InputStream inputStream, CardLayout cl, JPanel main, JButton[][] buttonArray, String[][] colors,Stack madeMoves,String[][] data,String path) throws IOException{
+ madeMoves.clear();
for(int i = 0; i {
- new HitoriAPI().loadHighscore(index, pathNames, cl, main);
+ Object[] arr = new HitoriAPI().loadHighscore(index, pathNames);
+ byte[] data = (byte[]) arr[0];
+ String filename = (String) arr[1];
+ try {
+ new HighscoreTableGUI().showHighscores(cl, main, data, filename);
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
});
}
JButton zurückButton = new JButton("Zurück");
@@ -37,8 +47,4 @@ public class HighscoreMenuGUI extends JFrame implements ActionListener {
main.add(highscorePanel, "HIGHSCORES");
cl.show(main, "HIGHSCORES");
}
-
- @Override
- public void actionPerformed(ActionEvent e) {
- }
}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreTableGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/HighscoreTableGUI.java
similarity index 96%
rename from PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreTableGUI.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/HighscoreTableGUI.java
index 2084332..9e2b080 100644
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreTableGUI.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/HighscoreTableGUI.java
@@ -1,4 +1,4 @@
-package de.hs_mannheim.informatik.mvn.gui;
+package de.hs_mannheim.informatik.gui;
import java.awt.BorderLayout;
import java.awt.CardLayout;
@@ -15,7 +15,8 @@ import java.util.List;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
-import de.hs_mannheim.informatik.mvn.facade.HitoriAPI;
+
+import de.hs_mannheim.informatik.facade.HitoriAPI;
public class HighscoreTableGUI {
public void showHighscores(CardLayout cl, JPanel main, byte[] data, String filename) throws IOException {
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/MenuGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/MenuGUI.java
new file mode 100644
index 0000000..06dc1b5
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/MenuGUI.java
@@ -0,0 +1,86 @@
+package de.hs_mannheim.informatik.gui;
+
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.GridLayout;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Stack;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import de.hs_mannheim.informatik.domain.FieldDataResult;
+import de.hs_mannheim.informatik.facade.HitoriAPI;
+
+public class MenuGUI extends JFrame {
+
+ private CardLayout cl = new CardLayout();
+ private JPanel main = new JPanel(cl);
+ private String[] filepath = {"", ""};
+ private byte[] gameData;
+
+ public MenuGUI(){
+ JPanel menuPanel = new JPanel(new BorderLayout());
+ JPanel buttonPanel = new JPanel(new GridLayout(7,1,10,10));
+
+ final String[] buttonNames = new HitoriAPI().getGameButtonNamesCatcher();
+ final String[] buttonPaths = new HitoriAPI().getGamePathCatcher();
+
+ for(int i=0;i {
+ int j = count[0];
+ filepath[0] = buttonPaths[j];
+ filepath[1] = num[0];
+ loadGame(filepath, cl, main, gameData);
+ });
+ }
+ JButton highscoreButton = new JButton("Highscores");
+ highscoreButton.addActionListener(e -> {
+ new HighscoreMenuGUI(cl, main);
+ });
+ buttonPanel.add(highscoreButton);
+ menuPanel.add(buttonPanel, BorderLayout.CENTER);
+ JLabel topText = new JLabel("Wählen Sie ein Level aus!");
+ menuPanel.add(topText, BorderLayout.NORTH);
+ setVisible(true);
+ setSize(700,700);
+ setDefaultCloseOperation(EXIT_ON_CLOSE);
+ add(main);
+ main.add(menuPanel, "HAUPT");
+ cl.show(main, "HAUPT");
+ }
+
+ public void loadGame(String[] filepath, CardLayout cl, JPanel main, byte[] gameData) {
+ try (InputStream inputStream = GameGUI.class.getResourceAsStream(filepath[0])) {
+ if (inputStream != null) {
+ String path=filepath[0];
+ ablauf(cl, main, inputStream, Integer.parseInt(filepath[1]), path);
+ } else {
+ throw new FileNotFoundException("Resource not found: " + filepath[0]);
+ }
+ } catch (IOException e1) {
+ e1.getMessage();
+ }
+ }
+
+ public void passOn(String[][] data, String[][] colors, InputStream gameStream) {
+
+
+ }
+
+ public void ablauf(CardLayout cl, JPanel main, InputStream inputStream, int rows, String path) throws IOException {
+ Stack madeMoves = new Stack<>();
+ byte[] gameData = inputStream.readAllBytes();
+ FieldDataResult fdrDTO = new HitoriAPI().initializeFieldDataPass(gameData, rows, madeMoves, path);
+ String[][] data = fdrDTO.getData();
+ String[][] colors =fdrDTO.getColors();
+ InputStream gameStream = fdrDTO.getGameStream();
+ new GameGUI().paintGame(cl, main, gameStream, madeMoves, data, path, colors);
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/NewEntryGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/NewEntryGUI.java
similarity index 93%
rename from PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/NewEntryGUI.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/NewEntryGUI.java
index 3535a6a..2aacaab 100644
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/NewEntryGUI.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/gui/NewEntryGUI.java
@@ -1,4 +1,4 @@
-package de.hs_mannheim.informatik.mvn.gui;
+package de.hs_mannheim.informatik.gui;
import java.awt.BorderLayout;
import java.awt.CardLayout;
@@ -10,7 +10,7 @@ import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
-import de.hs_mannheim.informatik.mvn.domain.Highscores;
+import de.hs_mannheim.informatik.domain.Highscores;
public class NewEntryGUI {
public static void finish(CardLayout cl, JPanel main, String endtime, String[] filepath, String path) throws FileNotFoundException{
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/main/Main.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/main/Main.java
new file mode 100644
index 0000000..21272e5
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/main/Main.java
@@ -0,0 +1,9 @@
+package de.hs_mannheim.informatik.main;
+
+import de.hs_mannheim.informatik.gui.MenuGUI;
+
+public class Main {
+ public static void main(String[] args) {
+ new MenuGUI();
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java
deleted file mode 100644
index 53c9431..0000000
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package de.hs_mannheim.informatik.mvn.domain;
-
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import de.hs_mannheim.informatik.mvn.facade.HitoriAPI;
-
-public class HitoriMain {
-
- public static void main(String[] args) throws FileNotFoundException{
- HitoriAPI.starter();
- }
-
- public ArrayList readFromFile(InputStream inputStream){
- ArrayList lines = new ArrayList<>();
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
- String line;
- while ((line = reader.readLine()) != null) {
- lines.add(line);
- }
- } catch (IOException e) {
- e.getMessage();
- }
- return lines;
- }
-
- public String[][] getData(InputStream inputStream, int rows) throws FileNotFoundException{
- String[][] data = new String[rows][rows];
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
- String line;
- int rowInt = 0;
- while ((line = reader.readLine()) != null && rowInt < rows) {
- data[rowInt] = line.split(",");
- rowInt++;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return data;
- }
-
- public String[][] makeColorArray(int size){
- String[][] colors = new String[size][size];
- for(int i=0;i filteredData = getSolution(inputStream);
- String[][] ergebnis = getErgebnisArray(result, filteredData);
- boolean abgabeMöglich = checkArraySame(result, ergebnis);
- return abgabeMöglich;
- }
-
- public String[] getCords(int i, int j){
- String yKoordinate = String.valueOf(i);
- String xKoordinate = String.valueOf(j);
- String[] position = {yKoordinate, xKoordinate};
- return position;
- }
-
- public String[][] getResult(String[][] data, String[][] colors){
- String[][] result = new String[data.length][data.length];
- for(int i=0;i getSolution(InputStream inputStream) throws FileNotFoundException{
- ArrayList filteredData = new ArrayList<>();
- boolean isUnderComment = false;
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
- String line;
- while ((line = reader.readLine()) != null) {
- line = line.trim();
- if (line.equals("//Lösung (schwarze Felder)")) {
- isUnderComment = true;
- continue;
- }
- if (isUnderComment && !line.isEmpty()) {
- String[] lineArray = line.split(",");
- int firstNumn = Integer.parseInt(lineArray[0]);
- int secondNum = Integer.parseInt(lineArray[1]);
- String firstNumAsString = String.valueOf(firstNumn - 1);
- String secondNumAsString = String.valueOf(secondNum - 1);
- String newLine = firstNumAsString + "," + secondNumAsString;
- filteredData.add(newLine);
- }
- }
- } catch (IOException e) {
- e.getMessage();
- }
- return filteredData;
- }
-
- public String[][] getErgebnisArray(String[][] result, ArrayList filteredData){
- String[][] ergebnis = new String[result.length][result.length];
- for(int i=0;i= 0 && row < ergebnis.length && col >= 0 && col < ergebnis[row].length) {
- ergebnis[row][col] = "B";
- }
- }
- return ergebnis;
- }
-
- public String[] getGameButtonNames() {
- String[] buttonNames = {
- "4x4 - leicht",
- "5x5 - leicht",
- "8x8 - leicht",
- "8x8 - medium",
- "10x10 - medium",
- "15x15 - medium"
- };
- return buttonNames;
- }
-
- public String[] getGamePath() {
- String[] buttonPaths = {
- "/Hitori_Spielfelder/Hitori4x4_leicht.csv",
- "/Hitori_Spielfelder/Hitori5x5leicht.csv",
- "/Hitori_Spielfelder/Hitori8x8leicht.csv",
- "/Hitori_Spielfelder/Hitori8x8medium.csv",
- "/Hitori_Spielfelder/Hitori10x10medium.csv",
- "/Hitori_Spielfelder/Hitori15x15_medium.csv"
- };
- return buttonPaths;
- }
-
- public String[] getHighscorePathNames() {
- String[] buttonPaths = {
- "resources/Hitori_Highscores/Hitori4x4_leicht.txt",
- "resources/Hitori_Highscores/Hitori5x5leicht.txt",
- "resources/Hitori_Highscores/Hitori8x8leicht.txt",
- "resources/Hitori_Highscores/Hitori8x8medium.txt",
- "resources/Hitori_Highscores/Hitori10x10medium.txt",
- "resources/Hitori_Highscores/Hitori15x15_medium.txt"
- };
- return buttonPaths;
- }
-
- public String[] getHighscoreButtonNames() {
- String[] buttonNames = {
- "Highscore 4x4 - leicht",
- "Highscore 5x5 - leicht",
- "Highscore 8x8 - leicht",
- "Highscore 8x8 - medium",
- "Highscore 10x10 - medium",
- "Highscore 15x15 - medium"
- };
- return buttonNames;
- }
-}
\ No newline at end of file
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/facade/HitoriAPI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/facade/HitoriAPI.java
deleted file mode 100644
index 784177a..0000000
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/facade/HitoriAPI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package de.hs_mannheim.informatik.mvn.facade;
-
-import java.awt.CardLayout;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.util.Stack;
-import javax.swing.JButton;
-import javax.swing.JPanel;
-import de.hs_mannheim.informatik.mvn.domain.*;
-import de.hs_mannheim.informatik.mvn.gui.*;
-
-public class HitoriAPI {
-
- public static void starter() {
- new MenuGUI();
- }
-
- public void paintGameCatcher(InputStream gameStream, CardLayout cl, JPanel main, JButton[][] buttons,
- String[][] colors, Stack madeMoves, String[][] data, String path) throws IOException {
- new GameGUI().paintGame(gameStream, cl, main, buttons, colors, madeMoves, data, path);
- }
-
- public static String[] getCordsCatcher(int i, int j) {
- String[] pos = new HitoriMain().getCords(i,j);
- return pos;
- }
-
- public void totalResetButtonCatcher(InputStream inputStream, CardLayout cl, JPanel main, JButton[][] buttons,
- String[][] colors, Stack madeMoves, String[][] data, String path0) throws FileNotFoundException {
- new GameGUI().totalResetButton(inputStream, cl, main, buttons, colors, madeMoves, data, path0);
- }
-
- public boolean abgabeMöglichCatcher(InputStream newStream, String[][] data, String[][] colors) throws FileNotFoundException {
- boolean abgabeMöglich = new HitoriMain().abgabeMöglich(newStream, data, colors);
- return abgabeMöglich;
- }
-
- public void sortByTimeCatcher(byte[] data, String filename) throws IOException {
- new HighscoreManager().sortByTime(data, filename);
- }
-
- public String getAvgTimeCatcher(byte[] data, String filename) throws IOException {
- String avgTime = new HighscoreManager().getAvgTime(data, filename);
- return avgTime;
- }
-
- public void ablauf(CardLayout cl, JPanel main, InputStream inputStream, int rows, String path) throws IOException {
- Stack madeMoves = new Stack<>();
- byte[] gameData = inputStream.readAllBytes();
- InputStream newStream = new ByteArrayInputStream(gameData);
- String[][] data = new HitoriMain().getData(newStream, rows);
- String[][] colors = new HitoriMain().makeColorArray(data.length);
-
- JButton[][] buttons = new GameGUI().makeButtonArray(data);
- InputStream gameStream = new ByteArrayInputStream(gameData);
- new GameGUI().paintGame(gameStream, cl, main, buttons, colors, madeMoves, data, path);
- }
-
- public void repaintGameCatcher(String[][] data, InputStream inputStream, CardLayout cl, JPanel main,
- String[][] colors, Stack madeMoves, String[][] data2, String path) {
- JButton[][] buttons = new GameGUI().makeButtonArray(data);
- try {
- new GameGUI().paintGame(inputStream, cl, main, buttons, colors, madeMoves, data, path);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public void copyResourceIfNotExistsCatcher(String resourcePathInJar, File outFile) throws IOException {
- new HighscoreManager().copyResourceIfNotExists(resourcePathInJar, outFile);
- }
-
- public String[] getGameButtonNamesCatcher() {
- String[] buttonNames = new HitoriMain().getGameButtonNames();
- return buttonNames;
- }
-
- public String[] getGamePathCatcher() {
- String[] pathNames = new HitoriMain().getGamePath();
- return pathNames;
- }
-
- public void loadGame(String[] filepath, CardLayout cl, JPanel main, byte[] gameData) {
- try (InputStream inputStream = GameGUI.class.getResourceAsStream(filepath[0])) {
- if (inputStream != null) {
- String path=filepath[0];
- ablauf(cl, main, inputStream, Integer.parseInt(filepath[1]), path);
- } else {
- throw new FileNotFoundException("Resource not found: " + filepath[0]);
- }
- } catch (IOException e1) {
- e1.getMessage();
- }
- }
-
- public String[] getHighscorePathNamesCatcher() {
- String[] pathNames = new HitoriMain().getHighscorePathNames();
- return pathNames;
- }
-
- public String[] getHighscoreButtonNamesCatcher() {
- String[] buttonNames = new HitoriMain().getHighscoreButtonNames();
- return buttonNames;
- }
-
- public void loadHighscore(int index, String[] pathNames, CardLayout cl, JPanel main) {
- String resourcePathInJar = pathNames[index];
- String localFileName = resourcePathInJar.substring(resourcePathInJar.lastIndexOf('/') + 1);
- File outFile = new File("resources/Hitori_Highscores", localFileName);
- try {
- copyResourceIfNotExistsCatcher(resourcePathInJar, outFile);
- byte[] data = Files.readAllBytes(outFile.toPath());
- new HighscoreTableGUI().showHighscores(cl, main, data, outFile.getPath());
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
-
-
-
-
-
-
-}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/MenuGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/MenuGUI.java
deleted file mode 100644
index 912b113..0000000
--- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/MenuGUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package de.hs_mannheim.informatik.mvn.gui;
-
-import java.awt.BorderLayout;
-import java.awt.CardLayout;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import de.hs_mannheim.informatik.mvn.facade.HitoriAPI;
-
-public class MenuGUI extends JFrame implements ActionListener {
-
- private static CardLayout cl = new CardLayout();
- private static JPanel main = new JPanel(cl);
- private static String[] filepath = {"", ""};
- private static byte[] gameData;
-
- public MenuGUI(){
- JPanel menuPanel = new JPanel(new BorderLayout());
- JPanel buttonPanel = new JPanel(new GridLayout(7,1,10,10));
- final String[] buttonNames = new HitoriAPI().getGameButtonNamesCatcher();
- final String[] buttonPaths = new HitoriAPI().getGamePathCatcher();
- for(int i=0;i {
- int j = count[0];
- filepath[0] = buttonPaths[j];
- filepath[1] = num[0];
- new HitoriAPI().loadGame(filepath, cl, main, gameData);
- });
- }
- JButton highscoreButton = new JButton("Highscores");
- highscoreButton.addActionListener(e -> {
- new HighscoreMenuGUI(cl, main);
- });
- buttonPanel.add(highscoreButton);
- menuPanel.add(buttonPanel, BorderLayout.CENTER);
- JLabel topText = new JLabel("Wählen Sie ein Level aus!");
- menuPanel.add(topText, BorderLayout.NORTH);
- setVisible(true);
- setSize(700,700);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- add(main);
- main.add(menuPanel, "HAUPT");
- cl.show(main, "HAUPT");
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- }
-
-
-}
diff --git a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/CSVReaderTest.java b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/CSVReaderTest.java
new file mode 100644
index 0000000..5757504
--- /dev/null
+++ b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/CSVReaderTest.java
@@ -0,0 +1,117 @@
+package de.hs_mannheim.informatik.test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.junit.jupiter.api.Test;
+
+import de.hs_mannheim.informatik.domain.CSVReader;
+
+public class CSVReaderTest {
+ @Test
+ void getSolutionTest1() throws FileNotFoundException {
+ String[] ergebnis4x4 = {"0,1", "1,3", "2,1", "3,0", "3,3"};
+ String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
+ InputStream inputStream = getClass().getResourceAsStream(path);
+ ArrayList filteredData = new CSVReader().getSolution(inputStream);
+ assertEquals(5, filteredData.size());
+ assertEquals(ergebnis4x4[0], filteredData.get(0));
+ assertEquals(ergebnis4x4[1], filteredData.get(1));
+ assertEquals(ergebnis4x4[2], filteredData.get(2));
+ assertEquals(ergebnis4x4[3], filteredData.get(3));
+ assertEquals(ergebnis4x4[4], filteredData.get(4));
+ }
+
+ @Test
+ void getSolutionTest2() throws FileNotFoundException {
+ String[] ergebnis4x4 = {"0,0"};
+ String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
+ InputStream inputStream = getClass().getResourceAsStream(path);
+ ArrayList filteredData = new CSVReader().getSolution(inputStream);
+ assertNotEquals(1, filteredData.size());
+ assertNotEquals(ergebnis4x4[0], filteredData.get(0));
+ assertNotEquals(ergebnis4x4[0], filteredData.get(1));
+ assertNotEquals(ergebnis4x4[0], filteredData.get(2));
+ assertNotEquals(ergebnis4x4[0], filteredData.get(3));
+ assertNotEquals(ergebnis4x4[0], filteredData.get(4));
+ }
+
+ @Test
+ void getDataTest1() throws FileNotFoundException {
+ String[][] data = {
+ {"3", "3", "1", "4"},
+ {"4", "3", "2", "2"},
+ {"1", "3", "4", "2"},
+ {"3", "4", "3", "2"}};
+ String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
+ InputStream inputStream = getClass().getResourceAsStream(path);
+ assertTrue(Arrays.deepEquals(data, new CSVReader().getData(inputStream, 4)));
+ }
+
+ @Test
+ void getDataTest2() throws FileNotFoundException {
+ String[][] data = {
+ {"3", "0", "1", "4"},
+ {"4", "0", "2", "2"},
+ {"1", "0", "4", "2"},
+ {"3", "0", "3", "2"}};
+ String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
+ InputStream inputStream = getClass().getResourceAsStream(path);
+ assertFalse(Arrays.deepEquals(data, new CSVReader().getData(inputStream, 4)));
+ }
+
+ @Test
+ void readFromFileTest1() {
+ String[] file = {
+ "3,3,1,4",
+ "4,3,2,2",
+ "1,3,4,2",
+ "3,4,3,2",
+ "",
+ "//Lösung (schwarze Felder)",
+ "1,2",
+ "2,4",
+ "3,2",
+ "4,1",
+ "4,4"};
+ ArrayList fileEntry = new ArrayList();
+ for(int i=0;i ergebnisList = new CSVReader().readFromFile(inputStream);
+ assertEquals(fileEntry, ergebnisList);
+ }
+
+ @Test
+ void readFromFileTest2() {
+ String[] file = {
+ "3,3,1,0",
+ "4,3,2,0",
+ "1,3,4,0",
+ "3,4,3,0",
+ "",
+ "//Lösung (schwarze Felder)",
+ "1,2",
+ "2,4",
+ "3,2",
+ "4,1",
+ "4,4"};
+ ArrayList fileEntry = new ArrayList();
+ for(int i=0;i ergebnisList = new CSVReader().readFromFile(inputStream);
+ assertNotEquals(fileEntry, ergebnisList);
+ }
+}
diff --git a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/GameGUITest.java b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/GameGUITest.java
new file mode 100644
index 0000000..bdf84a9
--- /dev/null
+++ b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/GameGUITest.java
@@ -0,0 +1,13 @@
+package de.hs_mannheim.informatik.test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import de.hs_mannheim.informatik.gui.GameGUI;
+
+public class GameGUITest {
+
+ @Test
+ void checkStartTimeTest() {
+ assertEquals("Zeit: 00:00", new GameGUI().startTimer());
+ }
+}
diff --git a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HighscoreEintragTest.java b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HighscoreEintragTest.java
new file mode 100644
index 0000000..202c5a0
--- /dev/null
+++ b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HighscoreEintragTest.java
@@ -0,0 +1,22 @@
+package de.hs_mannheim.informatik.test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.time.LocalTime;
+import org.junit.jupiter.api.Test;
+import de.hs_mannheim.informatik.domain.HighscoreEintrag;
+
+public class HighscoreEintragTest {
+
+ @Test
+ void highscoreEintragGetterTest() {
+ LocalTime time = LocalTime.of(10, 00);
+ HighscoreEintrag he = new HighscoreEintrag(time, "Berat");
+ assertTrue(he.getName().equals("Berat"));
+ LocalTime parsedTime = LocalTime.parse("10:00");
+ assertTrue(he.getTime().equals(parsedTime));
+ LocalTime wrongParsedTime = LocalTime.parse("11:00");
+ assertFalse(he.getTime().equals(wrongParsedTime));
+ assertFalse(he.getName().equals("Emre"));
+ }
+}
diff --git a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HighscoreManagerTest.java b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HighscoreManagerTest.java
new file mode 100644
index 0000000..ad657cf
--- /dev/null
+++ b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HighscoreManagerTest.java
@@ -0,0 +1,35 @@
+package de.hs_mannheim.informatik.test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.junit.jupiter.api.Test;
+
+import de.hs_mannheim.informatik.domain.HighscoreManager;
+
+public class HighscoreManagerTest {
+ @Test
+ void getAvgTimeTest1() throws IOException {
+ String filename = "timeFileForTest.txt";
+ String path = "/Hitori_Highscores/timeFileForTest.txt";
+ InputStream inputStream = getClass().getResourceAsStream(path);
+ byte[] data = inputStream.readAllBytes();
+ String actual = new HighscoreManager().getAvgTime(data, filename);
+ String expected = "Durchschnittszeit: 6:39";
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ void getAvgTimeTest2() throws IOException {
+ String filename = "timeFileForTest.txt";
+ String path = "/Hitori_Highscores/timeFileForTest.txt";
+ InputStream inputStream = getClass().getResourceAsStream(path);
+ byte[] data = inputStream.readAllBytes();
+ String actual = new HighscoreManager().getAvgTime(data, filename);
+ String expected = "Durchschnittszeit: 00:10";
+ assertNotEquals(expected, actual);
+ }
+}
diff --git a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HitoriLogicTest.java
similarity index 54%
rename from PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java
rename to PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HitoriLogicTest.java
index ed20f31..4c66e4f 100644
--- a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java
+++ b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/HitoriLogicTest.java
@@ -1,28 +1,17 @@
-package de.hs_mannheim.informatik.mvn.test;
+package de.hs_mannheim.informatik.test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.time.format.DateTimeFormatterBuilder;
-import java.time.temporal.ChronoField;
import java.util.ArrayList;
import java.util.Arrays;
-import de.hs_mannheim.informatik.mvn.domain.HighscoreEintrag;
-import de.hs_mannheim.informatik.mvn.domain.HighscoreManager;
-import de.hs_mannheim.informatik.mvn.domain.HitoriMain;
-import de.hs_mannheim.informatik.mvn.gui.GameGUI;
+import de.hs_mannheim.informatik.domain.CSVReader;
+import de.hs_mannheim.informatik.domain.HitoriLogic;
-class HitoriTest{
+class HitoriLogicTest{
@Test
void makeColorArrayTest1() {
@@ -31,7 +20,7 @@ class HitoriTest{
{"W", "W", "W"},
{"W", "W", "W"}
};
- assertTrue(Arrays.deepEquals(array3x3, new HitoriMain().makeColorArray(3)));
+ assertTrue(Arrays.deepEquals(array3x3, new HitoriLogic().makeColorArray(3)));
}
@Test
@@ -40,12 +29,7 @@ class HitoriTest{
{"W", "W", "W"},
{"W", "W", "W"},
};
- assertFalse(Arrays.deepEquals(array3x2, new HitoriMain().makeColorArray(3)));
- }
-
- @Test
- void checkStartTimeTest() {
- assertEquals("Zeit: 00:00", new GameGUI().startTimer());
+ assertFalse(Arrays.deepEquals(array3x2, new HitoriLogic().makeColorArray(3)));
}
@Test
@@ -60,7 +44,7 @@ class HitoriTest{
{"W", "W", "W", "B"},
{"W", "B", "W", "W"},
{"B", "W", "W", "B"}};
- assertFalse(new HitoriMain().checkArraySame(data, colors));
+ assertFalse(new HitoriLogic().checkArraySame(data, colors));
}
@Test
@@ -76,7 +60,7 @@ class HitoriTest{
{"W", "B", "W", "W"},
{"B", "W", "W", "B"}};
- assertTrue(new HitoriMain().checkArraySame(data, colors));
+ assertTrue(new HitoriLogic().checkArraySame(data, colors));
}
@Test
@@ -93,7 +77,7 @@ class HitoriTest{
{"W", "B", "W", "W", "W"},
{"W", "B", "W", "W", "W"},
{"W", "B", "W", "W", "W"}};
- assertFalse(new HitoriMain().checkArraySame(data, colors));
+ assertFalse(new HitoriLogic().checkArraySame(data, colors));
}
@Test
@@ -110,19 +94,19 @@ class HitoriTest{
{"B", "W", "W", "B", "W"},
{"W", "W", "B", "W", "W"},
{"B", "W", "W", "W", "B"}};
- assertTrue(new HitoriMain().checkArraySame(data, colors));
+ assertTrue(new HitoriLogic().checkArraySame(data, colors));
}
@Test
void getCordsTest1() {
String[] array = {"3", "4"};
- assertFalse(Arrays.deepEquals(array, new HitoriMain().getCords(3, 3)));
+ assertFalse(Arrays.deepEquals(array, new HitoriLogic().getCords(3, 3)));
}
@Test
void getCordsTest2() {
String[] array = {"3", "4"};
- assertTrue(Arrays.deepEquals(array, new HitoriMain().getCords(3, 4)));
+ assertTrue(Arrays.deepEquals(array, new HitoriLogic().getCords(3, 4)));
}
@Test
@@ -149,7 +133,7 @@ class HitoriTest{
{"B", "W", "B", "W", "W", "B", "W", "W", "W", "W"},
{"W", "W", "W", "B", "W", "W", "B", "W", "B", "W"},
{"B", "W", "B", "W", "W", "W", "W", "W", "W", "B"}};
- assertTrue(new HitoriMain().checkArraySame(data, colors));
+ assertTrue(new HitoriLogic().checkArraySame(data, colors));
}
@Test
@@ -176,7 +160,7 @@ class HitoriTest{
{"B", "W", "B", "W", "W", "B", "W", "W", "W", "W"},
{"W", "W", "W", "B", "W", "W", "B", "W", "B", "W"},
{"B", "W", "B", "W", "W", "W", "W", "W", "W", "W"}};
- assertFalse(new HitoriMain().checkArraySame(data, colors));
+ assertFalse(new HitoriLogic().checkArraySame(data, colors));
}
@Test
@@ -196,7 +180,7 @@ class HitoriTest{
{"W", "B", "W", "W"},
{"B", "W", "W", "B"},
{"W", "W", "B", "W"}};
- assertTrue(Arrays.deepEquals(array, new HitoriMain().getResult(data, colors)));
+ assertTrue(Arrays.deepEquals(array, new HitoriLogic().getResult(data, colors)));
}
@Test
@@ -216,35 +200,7 @@ class HitoriTest{
{"G", "B", "W", "W"},
{"B", "W", "W", "B"},
{"W", "W", "B", "W"}};
- assertFalse(Arrays.deepEquals(array, new HitoriMain().getResult(data, colors)));
- }
-
- @Test
- void getSolutionTest1() throws FileNotFoundException {
- String[] ergebnis4x4 = {"0,1", "1,3", "2,1", "3,0", "3,3"};
- String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
- InputStream inputStream = getClass().getResourceAsStream(path);
- ArrayList filteredData = new HitoriMain().getSolution(inputStream);
- assertEquals(5, filteredData.size());
- assertEquals(ergebnis4x4[0], filteredData.get(0));
- assertEquals(ergebnis4x4[1], filteredData.get(1));
- assertEquals(ergebnis4x4[2], filteredData.get(2));
- assertEquals(ergebnis4x4[3], filteredData.get(3));
- assertEquals(ergebnis4x4[4], filteredData.get(4));
- }
-
- @Test
- void getSolutionTest2() throws FileNotFoundException {
- String[] ergebnis4x4 = {"0,0"};
- String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
- InputStream inputStream = getClass().getResourceAsStream(path);
- ArrayList filteredData = new HitoriMain().getSolution(inputStream);
- assertNotEquals(1, filteredData.size());
- assertNotEquals(ergebnis4x4[0], filteredData.get(0));
- assertNotEquals(ergebnis4x4[0], filteredData.get(1));
- assertNotEquals(ergebnis4x4[0], filteredData.get(2));
- assertNotEquals(ergebnis4x4[0], filteredData.get(3));
- assertNotEquals(ergebnis4x4[0], filteredData.get(4));
+ assertFalse(Arrays.deepEquals(array, new HitoriLogic().getResult(data, colors)));
}
@Test
@@ -254,7 +210,7 @@ class HitoriTest{
{"W", "W", "W", "W"},
{"W", "W", "W", "W"},
{"W", "W", "W", "W"}};
- assertTrue(Arrays.deepEquals(colors, new HitoriMain().makeColorArray(4)));
+ assertTrue(Arrays.deepEquals(colors, new HitoriLogic().makeColorArray(4)));
}
@Test
@@ -264,79 +220,7 @@ class HitoriTest{
{"B", "W", "W", "W"},
{"B", "W", "W", "W"},
{"B", "W", "W", "W"}};
- assertFalse(Arrays.deepEquals(colors, new HitoriMain().makeColorArray(4)));
- }
-
- @Test
- void getDataTest1() throws FileNotFoundException {
- String[][] data = {
- {"3", "3", "1", "4"},
- {"4", "3", "2", "2"},
- {"1", "3", "4", "2"},
- {"3", "4", "3", "2"}};
- String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
- InputStream inputStream = getClass().getResourceAsStream(path);
- assertTrue(Arrays.deepEquals(data, new HitoriMain().getData(inputStream, 4)));
- }
-
- @Test
- void getDataTest2() throws FileNotFoundException {
- String[][] data = {
- {"3", "0", "1", "4"},
- {"4", "0", "2", "2"},
- {"1", "0", "4", "2"},
- {"3", "0", "3", "2"}};
- String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
- InputStream inputStream = getClass().getResourceAsStream(path);
- assertFalse(Arrays.deepEquals(data, new HitoriMain().getData(inputStream, 4)));
- }
-
- @Test
- void readFromFileTest1() {
- String[] file = {
- "3,3,1,4",
- "4,3,2,2",
- "1,3,4,2",
- "3,4,3,2",
- "",
- "//Lösung (schwarze Felder)",
- "1,2",
- "2,4",
- "3,2",
- "4,1",
- "4,4"};
- ArrayList fileEntry = new ArrayList();
- for(int i=0;i ergebnisList = new HitoriMain().readFromFile(inputStream);
- assertEquals(fileEntry, ergebnisList);
- }
-
- @Test
- void readFromFileTest2() {
- String[] file = {
- "3,3,1,0",
- "4,3,2,0",
- "1,3,4,0",
- "3,4,3,0",
- "",
- "//Lösung (schwarze Felder)",
- "1,2",
- "2,4",
- "3,2",
- "4,1",
- "4,4"};
- ArrayList fileEntry = new ArrayList();
- for(int i=0;i ergebnisList = new HitoriMain().readFromFile(inputStream);
- assertNotEquals(fileEntry, ergebnisList);
+ assertFalse(Arrays.deepEquals(colors, new HitoriLogic().makeColorArray(4)));
}
@Test
@@ -348,11 +232,11 @@ class HitoriTest{
{"B", "W", "W", "B"}};
String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
InputStream inputStream = getClass().getResourceAsStream(path);
- ArrayList filteredData = new HitoriMain().getSolution(inputStream);
+ ArrayList filteredData = new CSVReader().getSolution(inputStream);
InputStream newStream = getClass().getResourceAsStream(path);
int rows = 4;
- String[][] data = new HitoriMain().getData(newStream, rows);
- assertTrue(Arrays.deepEquals(ergebnis1, new HitoriMain().getErgebnisArray(data, filteredData)));
+ String[][] data = new CSVReader().getData(newStream, rows);
+ assertTrue(Arrays.deepEquals(ergebnis1, new HitoriLogic().getErgebnisArray(data, filteredData)));
}
@Test
@@ -364,46 +248,12 @@ class HitoriTest{
{"W", "W", "W", "W"}};
String path = "/Hitori_Spielfelder/Hitori4x4_leicht.csv";
InputStream inputStream = getClass().getResourceAsStream(path);
- ArrayList filteredData = new HitoriMain().getSolution(inputStream);
+ ArrayList filteredData = new CSVReader().getSolution(inputStream);
InputStream newStream = getClass().getResourceAsStream(path);
int rows = 4;
- String[][] data = new HitoriMain().getData(newStream, rows);
- assertFalse(Arrays.deepEquals(ergebnis1, new HitoriMain().getErgebnisArray(data, filteredData)));
+ String[][] data = new CSVReader().getData(newStream, rows);
+ assertFalse(Arrays.deepEquals(ergebnis1, new HitoriLogic().getErgebnisArray(data, filteredData)));
}
-
- @Test
- void highscoreEintragGetterTest() {
- LocalTime time = LocalTime.of(10, 00);
- HighscoreEintrag he = new HighscoreEintrag(time, "Berat");
- assertTrue(he.getName().equals("Berat"));
- LocalTime parsedTime = LocalTime.parse("10:00");
- assertTrue(he.getTime().equals(parsedTime));
- LocalTime wrongParsedTime = LocalTime.parse("11:00");
- assertFalse(he.getTime().equals(wrongParsedTime));
- assertFalse(he.getName().equals("Emre"));
- }
-
- @Test
- void getAvgTimeTest1() throws IOException {
- String filename = "timeFileForTest.txt";
- String path = "/Hitori_Highscores/timeFileForTest.txt";
- InputStream inputStream = getClass().getResourceAsStream(path);
- byte[] data = inputStream.readAllBytes();
- String actual = new HighscoreManager().getAvgTime(data, filename);
- String expected = "Durchschnittszeit: 6:39";
- assertEquals(expected, actual);
- }
-
- @Test
- void getAvgTimeTest2() throws IOException {
- String filename = "timeFileForTest.txt";
- String path = "/Hitori_Highscores/timeFileForTest.txt";
- InputStream inputStream = getClass().getResourceAsStream(path);
- byte[] data = inputStream.readAllBytes();
- String actual = new HighscoreManager().getAvgTime(data, filename);
- String expected = "Durchschnittszeit: 00:10";
- assertNotEquals(expected, actual);
- }
@Test
void abgabeMöglichTest1() throws FileNotFoundException{
@@ -422,7 +272,7 @@ class HitoriTest{
{"WBGGGGB", "W", "W", "WGB"}
};
boolean expected = true;
- assertEquals(expected, new HitoriMain().abgabeMöglich(inputStream, data, colors));
+ assertEquals(expected, new HitoriLogic().abgabeMöglich(inputStream, data, colors));
}
@Test
@@ -442,13 +292,6 @@ class HitoriTest{
{"B", "W", "W", "B"}
};
boolean expected = false;
- assertNotEquals(expected, new HitoriMain().abgabeMöglich(inputStream, data, colors));
+ assertNotEquals(expected, new HitoriLogic().abgabeMöglich(inputStream, data, colors));
}
-}
-
-
-
-
-
-
-
+}
\ No newline at end of file
diff --git a/PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/log4j2.xml b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/log4j2.xml
similarity index 100%
rename from PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/log4j2.xml
rename to PR2Projekt/src/test/java/de/hs_mannheim/informatik/test/log4j2.xml