diff --git a/PR2Projekt/.classpath b/PR2Projekt/.classpath
index 57bca72..0f3d1c6 100644
--- a/PR2Projekt/.classpath
+++ b/PR2Projekt/.classpath
@@ -5,6 +5,7 @@
-
+
+
diff --git a/PR2Projekt/.gitignore b/PR2Projekt/.gitignore
new file mode 100644
index 0000000..e92dd92
--- /dev/null
+++ b/PR2Projekt/.gitignore
@@ -0,0 +1,4 @@
+/target/
+/.DS_Store
+/.classpath
+/.project
\ No newline at end of file
diff --git a/PR2Projekt/pom.xml b/PR2Projekt/pom.xml
new file mode 100644
index 0000000..038f1b2
--- /dev/null
+++ b/PR2Projekt/pom.xml
@@ -0,0 +1,138 @@
+
+4.0.0
+de.hs_mannheim
+MvnDemo
+0.0.1-SNAPSHOT
+
+UTF-8
+21
+21
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.8.1
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.8.1
+ test
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.24.2
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.24.2
+
+
+
+
+
+
+org.apache.maven.plugins
+maven-compiler-plugin
+3.13.0
+
+${maven.compiler.source}
+${maven.compiler.target}
+
+
+
+
+org.apache.maven.plugins
+maven-shade-plugin
+3.6.0
+
+false
+
+
+
+package
+
+shade
+
+
+
+
+ de.hs_mannheim.informatik.mvn.Main
+
+
+
+
+
+
+
+
+org.jacoco
+jacoco-maven-plugin
+0.8.12
+
+
+
+prepare-agent
+
+
+
+report
+test
+
+report
+
+
+
+
+
+
+org.apache.maven.plugins
+maven-pmd-plugin
+3.26.0
+
+false
+true
+
+
+
+verify
+
+check
+
+
+
+
+
+src/main/java
+
+
+ src/main/resources
+
+
+ src/test/java
+
+
+
+
+
+org.apache.maven.plugins
+maven-javadoc-plugin
+3.11.2
+
+private
+true
+
+
+
+org.apache.maven.plugins
+maven-checkstyle-plugin
+3.6.0
+
+
+
+
\ No newline at end of file
diff --git a/PR2Projekt/Hitori_Highscores/Hitori10x10medium.txt b/PR2Projekt/resources/Hitori_Highscores/Hitori10x10medium.txt
similarity index 100%
rename from PR2Projekt/Hitori_Highscores/Hitori10x10medium.txt
rename to PR2Projekt/resources/Hitori_Highscores/Hitori10x10medium.txt
diff --git a/PR2Projekt/Hitori_Highscores/Hitori15x15_medium.txt b/PR2Projekt/resources/Hitori_Highscores/Hitori15x15_medium.txt
similarity index 100%
rename from PR2Projekt/Hitori_Highscores/Hitori15x15_medium.txt
rename to PR2Projekt/resources/Hitori_Highscores/Hitori15x15_medium.txt
diff --git a/PR2Projekt/Hitori_Highscores/Hitori4x4_leicht.txt b/PR2Projekt/resources/Hitori_Highscores/Hitori4x4_leicht.txt
similarity index 100%
rename from PR2Projekt/Hitori_Highscores/Hitori4x4_leicht.txt
rename to PR2Projekt/resources/Hitori_Highscores/Hitori4x4_leicht.txt
diff --git a/PR2Projekt/Hitori_Highscores/Hitori5x5leicht.txt b/PR2Projekt/resources/Hitori_Highscores/Hitori5x5leicht.txt
similarity index 100%
rename from PR2Projekt/Hitori_Highscores/Hitori5x5leicht.txt
rename to PR2Projekt/resources/Hitori_Highscores/Hitori5x5leicht.txt
diff --git a/PR2Projekt/Hitori_Highscores/Hitori8x8leicht.txt b/PR2Projekt/resources/Hitori_Highscores/Hitori8x8leicht.txt
similarity index 100%
rename from PR2Projekt/Hitori_Highscores/Hitori8x8leicht.txt
rename to PR2Projekt/resources/Hitori_Highscores/Hitori8x8leicht.txt
diff --git a/PR2Projekt/Hitori_Highscores/Hitori8x8medium.txt b/PR2Projekt/resources/Hitori_Highscores/Hitori8x8medium.txt
similarity index 100%
rename from PR2Projekt/Hitori_Highscores/Hitori8x8medium.txt
rename to PR2Projekt/resources/Hitori_Highscores/Hitori8x8medium.txt
diff --git a/PR2Projekt/Hitori_Spielfelder/Hitori10x10medium.csv b/PR2Projekt/resources/Hitori_Spielfelder/Hitori10x10medium.csv
similarity index 100%
rename from PR2Projekt/Hitori_Spielfelder/Hitori10x10medium.csv
rename to PR2Projekt/resources/Hitori_Spielfelder/Hitori10x10medium.csv
diff --git a/PR2Projekt/Hitori_Spielfelder/Hitori15x15_medium.csv b/PR2Projekt/resources/Hitori_Spielfelder/Hitori15x15_medium.csv
similarity index 100%
rename from PR2Projekt/Hitori_Spielfelder/Hitori15x15_medium.csv
rename to PR2Projekt/resources/Hitori_Spielfelder/Hitori15x15_medium.csv
diff --git a/PR2Projekt/Hitori_Spielfelder/Hitori4x4_leicht.csv b/PR2Projekt/resources/Hitori_Spielfelder/Hitori4x4_leicht.csv
similarity index 100%
rename from PR2Projekt/Hitori_Spielfelder/Hitori4x4_leicht.csv
rename to PR2Projekt/resources/Hitori_Spielfelder/Hitori4x4_leicht.csv
diff --git a/PR2Projekt/Hitori_Spielfelder/Hitori5x5leicht.csv b/PR2Projekt/resources/Hitori_Spielfelder/Hitori5x5leicht.csv
similarity index 100%
rename from PR2Projekt/Hitori_Spielfelder/Hitori5x5leicht.csv
rename to PR2Projekt/resources/Hitori_Spielfelder/Hitori5x5leicht.csv
diff --git a/PR2Projekt/Hitori_Spielfelder/Hitori8x8leicht.csv b/PR2Projekt/resources/Hitori_Spielfelder/Hitori8x8leicht.csv
similarity index 100%
rename from PR2Projekt/Hitori_Spielfelder/Hitori8x8leicht.csv
rename to PR2Projekt/resources/Hitori_Spielfelder/Hitori8x8leicht.csv
diff --git a/PR2Projekt/Hitori_Spielfelder/Hitori8x8medium.csv b/PR2Projekt/resources/Hitori_Spielfelder/Hitori8x8medium.csv
similarity index 100%
rename from PR2Projekt/Hitori_Spielfelder/Hitori8x8medium.csv
rename to PR2Projekt/resources/Hitori_Spielfelder/Hitori8x8medium.csv
diff --git a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/GameGUI.java b/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/GameGUI.java
deleted file mode 100644
index 8a204d6..0000000
--- a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/GameGUI.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package de.hs_mannheim.informatik.pr2projekt.gui;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.GridLayout;
-import java.io.FileNotFoundException;
-import java.util.EmptyStackException;
-import java.util.Stack;
-
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-import de.hs_mannheim.informatik.pr2projekt.domain.HitoriMain;
-
-public class GameGUI {
-
- public static void paintGame(String[] filepath, JButton[][] buttons, String[][] colors, Stack madeMoves, String[][] data) throws FileNotFoundException{
- JFrame frame = new JFrame();
- int num = buttons.length;
- JPanel gameGrid = new JPanel(new GridLayout(num,num,0,0));
- for(int i=0;i {paintButton(b, pos, colors , madeMoves);});
- }
- }
- JPanel mainPanel = new JPanel(new BorderLayout());
- mainPanel.add(gameGrid, BorderLayout.CENTER);
- JPanel buttonGrid = new JPanel(new GridLayout(1,4,10,10));
- JButton b0 = new JButton("Aufgeben");
- b0.addActionListener(e -> {
- frame.dispose();
- try {
- MenuGUI.getPath(filepath);
- } catch (FileNotFoundException i) {
- System.out.println("File not found: " + i.getMessage());
- }
- });
- JButton b1 = new JButton("Zurück");
- b1.addActionListener(e -> {GameGUI.backOneStep(madeMoves, buttons, colors, gameGrid);});
- JButton b2 = new JButton("Zurücksetzen");
- b2.addActionListener(e -> {HitoriMain.totalResetButton(buttons, colors, madeMoves, data);});
- JButton b3 = new JButton("Abgeben");
- String path = filepath[0];
- b3.addActionListener(e -> {
- try{
- boolean levelFinished = HitoriMain.abgabeMöglich(path, data, colors);
- if(levelFinished == true){
- GameGUI.finish(filepath, path, data, colors);
- frame.dispose();
- } else {
- JLabel text1 = new JLabel("Abgabe nicht richtig!");
- mainPanel.add(text1, BorderLayout.NORTH);
- mainPanel.revalidate();
- mainPanel.repaint();
- }
- } catch (FileNotFoundException i) {
- System.out.println("File not found: " + i.getMessage());
- }
- });
- buttonGrid.add(b0);buttonGrid.add(b1);buttonGrid.add(b2);buttonGrid.add(b3);
- mainPanel.add(buttonGrid, BorderLayout.SOUTH);
- mainPanel.setVisible(true);
- frame.add(mainPanel);
- frame.setVisible(true);
- frame.setSize(600,600);
- }
-
- public static void paintButton(JButton b, String[] pos, String[][] colors, Stack madeMoves){
- int i = Integer.parseInt(pos[0]);
- int j = Integer.parseInt(pos[1]);
- String col = colors[Integer.parseInt(pos[0])][Integer.parseInt(pos[1])];
- if(col.endsWith("W")){
- b.setOpaque(true);
- b.setForeground(Color.BLACK);
- b.setContentAreaFilled(true);
- b.setBorderPainted(false);
- b.setFocusPainted(false);
- b.setBackground(Color.lightGray);
- colors[i][j] += "G";
- String logEntrance = i+"."+j+"."+"G";
- madeMoves.push(logEntrance);
- }
- if(col.endsWith("G")){
- b.setOpaque(true);
- b.setForeground(Color.WHITE);
- b.setContentAreaFilled(true);
- b.setBorderPainted(false);
- b.setFocusPainted(false);
- b.setBackground(Color.BLACK);
- colors[i][j] += "B";
- String logEntrance = i+"."+j+"."+"B";
- madeMoves.push(logEntrance);
- }
- if(col.endsWith("B")){
- b.setOpaque(true);
- b.setForeground(Color.BLACK);
- b.setContentAreaFilled(true);
- b.setBorderPainted(false);
- b.setFocusPainted(false);
- b.setBackground(Color.WHITE);
- colors[i][j] += "W";
- String logEntrance = i+"."+j+"."+"W";
- madeMoves.push(logEntrance);
- }
- }
-
- public static void backOneStep(Stack movesMade, JButton[][] buttons, String[][] colors, JPanel grid){
- try {
- String move = movesMade.pop();
- String[] line = move.split("\\.");
- String y = line[0];
- String x = line[1];
- String color = line[2];
- if(color.equals("W")){
- int i = Integer.parseInt(y);
- int j = Integer.parseInt(x);
- JButton b0 = buttons[i][j];
- b0.setOpaque(true);
- b0.setForeground(Color.WHITE);
- b0.setContentAreaFilled(true);
- b0.setBorderPainted(false);
- b0.setFocusPainted(false);
- b0.setBackground(Color.BLACK);
- buttons[i][j] = b0;
- String str = colors[i][j];
- String str0 = str.substring(0, str.length() - 1);
- colors[i][j] = str0;
- grid.repaint();
- gridUpdate(grid, buttons);
- }else if(color.equals("G")){
- int i = Integer.parseInt(y);
- int j = Integer.parseInt(x);
- JButton b0 = buttons[i][j];
- b0.setOpaque(true);
- b0.setForeground(Color.BLACK);
- b0.setContentAreaFilled(true);
- b0.setBorderPainted(false);
- b0.setFocusPainted(false);
- b0.setBackground(Color.WHITE);
- buttons[i][j] = b0;
- String str = colors[i][j];
- String str0 = str.substring(0, str.length() - 1);
- colors[i][j] = str0;
- gridUpdate(grid, buttons);
- } else if(color.equals("B")){
- int i = Integer.parseInt(y);
- int j = Integer.parseInt(x);
- JButton b0 = buttons[i][j];
- b0.setOpaque(true);
- b0.setForeground(Color.BLACK);
- b0.setContentAreaFilled(true);
- b0.setBorderPainted(false);
- b0.setFocusPainted(false);
- b0.setBackground(Color.lightGray);
- buttons[i][j] = b0;
- String str = colors[i][j];
- String str0 = str.substring(0, str.length() - 1);
- colors[i][j] = str0;
- gridUpdate(grid, buttons);
- }
- } catch(EmptyStackException e) {}
- }
-
- public static void gridUpdate(JPanel grid, JButton[][] buttons){
- grid.removeAll();
- grid.repaint();
- for(int i = 0; i {
- String username = field.getText();
- try {
- HighscoreGUI.newRecord(path, username);
- frame.dispose();
- } catch (FileNotFoundException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- try {
- MenuGUI.getPath(filepath);
- } catch (FileNotFoundException i) {
- System.out.println("File not found: " + i.getMessage());
- }
- });
- filepath[0] = "";
- filepath[1] = "";
- }
-}
diff --git a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/HighscoreGUI.java b/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/HighscoreGUI.java
deleted file mode 100644
index 1fec047..0000000
--- a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/HighscoreGUI.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package de.hs_mannheim.informatik.pr2projekt.gui;
-
-import java.awt.BorderLayout;
-import java.awt.GridLayout;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Scanner;
-
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-import de.hs_mannheim.informatik.pr2projekt.domain.HitoriMain;
-
-public class HighscoreGUI {
-
- public static void highscoreScreen(String[] filepath){
- String currentWorkingDir = System.getProperty("user.dir");
- System.out.println("Current working directory: " + currentWorkingDir);
- JFrame frame = new JFrame("Highscores");
- JPanel highscorePanel = new JPanel(new BorderLayout());
- JPanel buttonPanel = new JPanel(new GridLayout(7,1,10,10));
- String[] buttons = {
- "Highscore 4x4 - leicht",
- "Highscore 5x5 - leicht",
- "Highscore 8x8 - leicht",
- "Highscore 8x8 - medium",
- "Highscore 10x10 - medium",
- "Highscore 15x15 - medium"
- };
- for(int i=0;i {
- int j = count[0];
- String[] paths = {
- "Hitori_Highscores/Hitori4x4_leicht.txt",
- "Hitori_Highscores/Hitori5x5leicht.txt",
- "Hitori_Highscores/Hitori8x8leicht.txt",
- "Hitori_Highscores/Hitori8x8medium.txt",
- "Hitori_Highscores/Hitori10x10medium.txt",
- "Hitori_Highscores/Hitori15x15_medium.txt"
- };
- HighscoreGUI.showHighscores(filepath, paths[j]);
- frame.dispose();
- });
- }
- JButton b = new JButton("Zurück");
- b.addActionListener(e -> {
- frame.dispose();
- try {
- MenuGUI.getPath(filepath);
- } catch (FileNotFoundException i) {
- System.out.println("File not found: " + i.getMessage());
- }
- });
- buttonPanel.add(b);
- frame.setVisible(true);
- frame.setSize(600,600);
- highscorePanel.add(buttonPanel, BorderLayout.CENTER);
- JLabel text0 = new JLabel("Level für Highscore Liste auswählen!");
- highscorePanel.add(text0, BorderLayout.NORTH);
- frame.setDefaultCloseOperation(0);
- frame.add(highscorePanel);
- }
-
- public static void newRecord(String path, String username) throws FileNotFoundException{
- String[] parts = path.split("/");
- String filename = parts[parts.length - 1];
- int dotIndex = filename.lastIndexOf(".");
- String result = filename.substring(0, dotIndex);
- String ordner = "Hitori_Highscores/";
- String filetype = ".txt";
- String filepath = ordner+result+filetype;
- Scanner sc = new Scanner(filepath);
- while (sc.hasNextLine()) {
- sc.nextLine();
- }
- sc.close();
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(filepath, true))) {
- writer.write(username);
- writer.newLine();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public static void showHighscores(String[] filepath, String path){
- String currentWorkingDir = System.getProperty("user.dir");
- System.out.println("Current working directory: " + currentWorkingDir);
- JFrame frame = new JFrame("Highscore");
- JPanel mainPanel = new JPanel(new BorderLayout());
- File file = new File(path);
- int i = 0;
- try (Scanner scanner = new Scanner(file)) {
- while (scanner.hasNextLine()) {
- scanner.nextLine();
- i++;
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- JPanel highscorePanel = new JPanel(new GridLayout(i,1,10,10));
- if(i>0){
- ArrayList lines = HitoriMain.readFromFile(path);
- for(String s: lines){
- JLabel text = new JLabel(s);
- highscorePanel.add(text);
- }
- JButton b = new JButton("Zurück");
- b.addActionListener(e -> {
- frame.dispose();
- highscoreScreen(filepath);
- });
- mainPanel.add(b, BorderLayout.SOUTH);
- } else {
- JLabel text = new JLabel("Noch kein Highscore eingetragen.");
- highscorePanel.add(text);
- JButton b = new JButton("Zurück");
- b.addActionListener(e -> {
- frame.dispose();
- highscoreScreen(filepath);
- });
- mainPanel.add(b, BorderLayout.SOUTH);
- }
- JButton b = new JButton("Zurück");
- b.addActionListener(e ->{
- frame.dispose();
- try {
- MenuGUI.getPath(filepath);
- } catch (FileNotFoundException s) {
- System.out.println("File not found: " + s.getMessage());
- }
- });
- mainPanel.add(highscorePanel, BorderLayout.CENTER);
- frame.add(mainPanel);
- frame.setVisible(true);
- frame.setSize(600,600);
- }
-
-}
diff --git a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/MenuGUI.java b/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/MenuGUI.java
deleted file mode 100644
index 90e84ee..0000000
--- a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/gui/MenuGUI.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package de.hs_mannheim.informatik.pr2projekt.gui;
-
-import java.awt.BorderLayout;
-import java.awt.GridLayout;
-import java.io.FileNotFoundException;
-import java.util.Stack;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-
-public class MenuGUI {
-
- public static void getPath(String[] filepath) throws FileNotFoundException{
-
- String[] filepath0 = new String[2];
- JFrame frame = new JFrame("Hitori");
- JPanel menuPanel = new JPanel(new BorderLayout());
- JPanel buttonPanel = new JPanel(new GridLayout(7,1,10,10));
- String[] buttons = {
- "4x4 - leicht",
- "5x5 - leicht",
- "8x8 - leicht",
- "8x8 - medium",
- "10x10 - medium",
- "15x15 - medium"
- };
- for(int i=0;i {
- int j = count[0];
- String[] paths = {
- "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"
- };
- filepath0[0] = paths[j];
- filepath0[1] = row[0];
- filepath[0] = filepath0[0];
- filepath[1] = filepath0[1];
- frame.dispose();
- });
- }
- JButton b = new JButton("Highscores");
- b.addActionListener(e -> {
- HighscoreGUI.highscoreScreen(filepath);
- frame.dispose();
- });
- buttonPanel.add(b);
- frame.setVisible(true);
- frame.setSize(600,600);
- menuPanel.add(buttonPanel, BorderLayout.CENTER);
- JLabel text0 = new JLabel("Wählen Sie ein Level aus!");
- menuPanel.add(text0, BorderLayout.NORTH);
- frame.setDefaultCloseOperation(0);
- frame.add(menuPanel);
- }
-}
diff --git a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/domain/HitoriMain.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java
similarity index 72%
rename from PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/domain/HitoriMain.java
rename to PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java
index 23e1064..025e115 100644
--- a/PR2Projekt/src/de/hs_mannheim/informatik/pr2projekt/domain/HitoriMain.java
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java
@@ -1,43 +1,42 @@
package de.hs_mannheim.informatik.pr2projekt.domain;
+import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
+import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
+import java.io.FileWriter;
import java.io.IOException;
+import java.time.LocalTime;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.Scanner;
import java.util.Stack;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFrame;
+import javax.swing.JPanel;
import de.hs_mannheim.informatik.pr2projekt.gui.GameGUI;
import de.hs_mannheim.informatik.pr2projekt.gui.MenuGUI;
public class HitoriMain extends JFrame implements ActionListener{
- private static String[] filepath = new String[2];
+ private static String[] filepath = {"", ""};
public static void main(String[] args) throws FileNotFoundException{
- filepath[0] = "";
- filepath[1] = "";
- new HitoriMain();
+ new MenuGUI();
}
- public HitoriMain() throws FileNotFoundException {
+ public static void ablauf(CardLayout cl, JPanel main, String[] filepath) throws FileNotFoundException {
Stack madeMoves = new Stack<>();
- MenuGUI.getPath(filepath);
- int i = 0;
- while(filepath[0].equals("")){
- System.out.println();
- }
String[][] data = getData(filepath[0], Integer.parseInt(filepath[1]));
String[][] colors = makeColorArray(data.length);
JButton[][] buttons = makeButtonArray(data);
- GameGUI.paintGame(filepath, buttons, colors, madeMoves, data);
+ GameGUI.paintGame(cl, main, filepath, buttons, colors, madeMoves, data);
}
public static ArrayList readFromFile(String path){
@@ -54,8 +53,7 @@ public class HitoriMain extends JFrame implements ActionListener{
}
public static String[][] getData(String filepath, int rows) throws FileNotFoundException{
- String filepath0 = filepath;
- Scanner sc = new Scanner(new File(filepath0));
+ Scanner sc = new Scanner(new File(filepath));
String[][] data = new String[rows][rows];
int rowInt = 0;
while (sc.hasNextLine() && rowInt < rows) {
@@ -83,8 +81,8 @@ public class HitoriMain extends JFrame implements ActionListener{
for(int i=0;i filteredData = getSolution(path, result);
String[][] ergebnis1 = getErgebnisArray(result, filteredData);
-
int count = 0;
for(int i=0;i madeMoves,String[][] data){
+ public static void totalResetButton(CardLayout cl, JPanel main, JButton[][] buttons, String[][] colors,Stack madeMoves,String[][] data) throws FileNotFoundException{
madeMoves.clear();
for(int i = 0; i entries = new ArrayList<>();
+
+ try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ String[] parts = line.split(" ", 2);
+ String timeStr = parts[0];
+ String name = parts.length > 1 ? parts[1] : "";
+
+ String[] timeParts = timeStr.split(":");
+ int hour = Integer.parseInt(timeParts[0]);
+ int minute = Integer.parseInt(timeParts[1]);
+ LocalTime time = LocalTime.of(hour, minute);
+
+ entries.add(new Entry(time, name));
+ }
+ }
+
+ entries.sort(Comparator.comparing(e -> e.time));
+
+ try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
+ for (Entry e : entries) {
+ String formattedTime = String.format("%02d:%02d", e.time.getHour(), e.time.getMinute());
+ bw.write(formattedTime + " " + e.name);
+ bw.newLine();
+ }
+ }
+ }
@Override
public void actionPerformed(ActionEvent e) {
@@ -199,3 +223,13 @@ public class HitoriMain extends JFrame implements ActionListener{
}
}
+
+class Entry {
+ LocalTime time;
+ String name;
+
+ Entry(LocalTime time, String name) {
+ this.time = time;
+ this.name = name;
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/LogHighscores.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/LogHighscores.java
new file mode 100644
index 0000000..0d1fc7d
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/LogHighscores.java
@@ -0,0 +1,40 @@
+package de.hs_mannheim.informatik.pr2projekt.domain;
+
+import java.io.BufferedWriter;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Scanner;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class LogHighscores {
+ private static final Logger logger = LogManager.getLogger(LogHighscore.class);
+
+ public static void newRecord(String path, String username, String time) throws FileNotFoundException {
+ String timePart = time.substring("Zeit: ".length()).trim();
+ String[] parts = path.split("/");
+ String filename = parts[parts.length - 1];
+ int dotIndex = filename.lastIndexOf(".");
+ String result = filename.substring(0, dotIndex);
+ String ordner = "Hitori_Highscores/";
+ String filetype = ".txt";
+ String filepath = ordner + result + filetype;
+ System.out.println("A: " + filepath);
+ Scanner sc = new Scanner(filepath);
+ while (sc.hasNextLine()) {
+ sc.nextLine();
+ }
+ sc.close();
+
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(filepath, true))) {
+ String eintrag = timePart + " " + username;
+ logger.info("Neuer Eintrag: {}", eintrag);
+
+ writer.write(eintrag);
+ writer.newLine();
+ } catch (IOException e) {
+ logger.error("Fehler beim Schreiben in die Datei: " + filepath, e);
+ }
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/GameGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/GameGUI.java
new file mode 100644
index 0000000..94999ac
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/GameGUI.java
@@ -0,0 +1,281 @@
+package de.hs_mannheim.informatik.pr2projekt.gui;
+
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.Color;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.FileNotFoundException;
+import java.util.EmptyStackException;
+import java.util.Stack;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+
+import de.hs_mannheim.informatik.pr2projekt.domain.HitoriMain;
+import de.hs_mannheim.informatik.pr2projekt.domain.LogHighscores;
+
+public class GameGUI extends JFrame implements ActionListener {
+
+ private static Timer timer = new Timer();
+ private static long startTime;
+ private static long elapsedSeconds;
+
+ public static void paintGame(CardLayout cl, JPanel main, String[] filepath, JButton[][] buttons, String[][] colors, Stack madeMoves, String[][] data) throws FileNotFoundException{
+ elapsedSeconds = 0;
+ int num = buttons.length;
+ JPanel gameGrid = new JPanel(new GridLayout(num,num,0,0));
+ for(int i=0;i {paintButton(cl, main, b, pos, colors , madeMoves);});
+ }
+ }
+ JPanel mainPanel = new JPanel(new BorderLayout());
+ mainPanel.add(gameGrid, BorderLayout.CENTER);
+ JPanel buttonGrid = new JPanel(new GridLayout(1,4,10,10));
+ JButton b0 = new JButton("Aufgeben");
+ b0.addActionListener(e -> {
+ filepath[0] = "";
+ filepath[1] = "";
+ cl.show(main, "HAUPT");
+ });
+ JButton b1 = new JButton("Zurück");
+ b1.addActionListener(e -> {backOneStep(cl, main, madeMoves, buttons, colors, gameGrid);});
+ JButton b2 = new JButton("Zurücksetzen");
+ b2.addActionListener(e -> {try {
+ HitoriMain.totalResetButton(cl, main, buttons, colors, madeMoves, data);
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ }});
+ JButton b3 = new JButton("Abgeben");
+ String path = filepath[0];
+ boolean[] levelFinished = {false};
+ JPanel topGrid = new JPanel(new GridLayout(1,2,10,10));
+ mainPanel.add(topGrid, BorderLayout.NORTH);
+ JLabel timeLabel = new JLabel("Zeit: 00:00");
+ topGrid.add(timeLabel);
+ topGrid.revalidate();
+ topGrid.repaint();
+ boolean isOkay = HitoriMain.abgabeMöglich(path, data, colors);
+ levelFinished[0] = isOkay;
+ Timer timer = new Timer();
+ startTimer();
+ timer.scheduleAtFixedRate(new TimerTask() {
+ @Override
+ public void run() {
+ elapsedSeconds = (System.currentTimeMillis() - startTime) / 1000;
+ long minutes = (elapsedSeconds % 3600) / 60;
+ long seconds = elapsedSeconds % 60;
+ String newTime = String.format("Zeit: %02d:%02d", minutes, seconds);
+
+ SwingUtilities.invokeLater(() -> {
+ timeLabel.setText(newTime);
+ timeLabel.revalidate();
+ timeLabel.repaint();
+ });
+ }
+ }, 0, 1000);
+
+ JLabel luecke = new JLabel("");
+ topGrid.add(luecke);
+
+ b3.addActionListener(e -> {
+ try {
+ levelFinished[0] = HitoriMain.abgabeMöglich(path, data, colors);
+ System.out.println("0000: " + levelFinished[0]);
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ }
+ if (levelFinished[0] == true) {
+ System.out.println("1111: " + levelFinished[0]);
+ String endtime = stopTimer();
+ timer.cancel();
+ try {
+ finish(cl, main, endtime, filepath, path, data, colors);
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ }
+ } else {
+ System.out.println("2222: " + levelFinished[0]);
+ luecke.setText("Abgabe nicht richtig!");
+ mainPanel.revalidate();
+ mainPanel.repaint();
+ }
+ });
+
+ buttonGrid.add(b0);buttonGrid.add(b1);buttonGrid.add(b2);buttonGrid.add(b3);
+ mainPanel.add(buttonGrid, BorderLayout.SOUTH);
+ mainPanel.setVisible(true);
+ main.add(mainPanel, "GAME");
+ cl.show(main, "GAME");
+ }
+
+ public static void paintButton(CardLayout cl, JPanel main, JButton b, String[] pos, String[][] colors, Stack madeMoves){
+ int i = Integer.parseInt(pos[0]);
+ int j = Integer.parseInt(pos[1]);
+ String col = colors[Integer.parseInt(pos[0])][Integer.parseInt(pos[1])];
+ if(col.endsWith("W")){
+ b.setOpaque(true);
+ b.setForeground(Color.BLACK);
+ b.setContentAreaFilled(true);
+ b.setBorderPainted(false);
+ b.setFocusPainted(false);
+ b.setBackground(Color.lightGray);
+ colors[i][j] += "G";
+ String logEntrance = i+"."+j+"."+"G";
+ madeMoves.push(logEntrance);
+ }
+ if(col.endsWith("G")){
+ b.setOpaque(true);
+ b.setForeground(Color.WHITE);
+ b.setContentAreaFilled(true);
+ b.setBorderPainted(false);
+ b.setFocusPainted(false);
+ b.setBackground(Color.BLACK);
+ colors[i][j] += "B";
+ String logEntrance = i+"."+j+"."+"B";
+ madeMoves.push(logEntrance);
+ }
+ if(col.endsWith("B")){
+ b.setOpaque(true);
+ b.setForeground(Color.BLACK);
+ b.setContentAreaFilled(true);
+ b.setBorderPainted(false);
+ b.setFocusPainted(false);
+ b.setBackground(Color.WHITE);
+ colors[i][j] += "W";
+ String logEntrance = i+"."+j+"."+"W";
+ madeMoves.push(logEntrance);
+ }
+ }
+
+ public static void backOneStep(CardLayout cl, JPanel main, Stack movesMade, JButton[][] buttons, String[][] colors, JPanel grid){
+ try {
+ String move = movesMade.pop();
+ String[] line = move.split("\\.");
+ String y = line[0];
+ String x = line[1];
+ String color = line[2];
+ if(color.equals("W")){
+ int i = Integer.parseInt(y);
+ int j = Integer.parseInt(x);
+ JButton b0 = buttons[i][j];
+ b0.setOpaque(true);
+ b0.setForeground(Color.WHITE);
+ b0.setContentAreaFilled(true);
+ b0.setBorderPainted(false);
+ b0.setFocusPainted(false);
+ b0.setBackground(Color.BLACK);
+ buttons[i][j] = b0;
+ String str = colors[i][j];
+ String str0 = str.substring(0, str.length() - 1);
+ colors[i][j] = str0;
+ grid.repaint();
+ gridUpdate(grid, buttons);
+ }else if(color.equals("G")){
+ int i = Integer.parseInt(y);
+ int j = Integer.parseInt(x);
+ JButton b0 = buttons[i][j];
+ b0.setOpaque(true);
+ b0.setForeground(Color.BLACK);
+ b0.setContentAreaFilled(true);
+ b0.setBorderPainted(false);
+ b0.setFocusPainted(false);
+ b0.setBackground(Color.WHITE);
+ buttons[i][j] = b0;
+ String str = colors[i][j];
+ String str0 = str.substring(0, str.length() - 1);
+ colors[i][j] = str0;
+ gridUpdate(grid, buttons);
+ } else if(color.equals("B")){
+ int i = Integer.parseInt(y);
+ int j = Integer.parseInt(x);
+ JButton b0 = buttons[i][j];
+ b0.setOpaque(true);
+ b0.setForeground(Color.BLACK);
+ b0.setContentAreaFilled(true);
+ b0.setBorderPainted(false);
+ b0.setFocusPainted(false);
+ b0.setBackground(Color.lightGray);
+ buttons[i][j] = b0;
+ String str = colors[i][j];
+ String str0 = str.substring(0, str.length() - 1);
+ colors[i][j] = str0;
+ gridUpdate(grid, buttons);
+ }
+ } catch(EmptyStackException e) {}
+ }
+
+ public static void gridUpdate(JPanel grid, JButton[][] buttons){
+ grid.removeAll();
+ grid.repaint();
+ for(int i = 0; i {
+ String username = field.getText();
+ try {
+ LogHighscores.newRecord(path, username, endtime);
+ filepath[0] = "";
+ filepath[1] = "";
+ cl.show(main, "HAUPT");
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ }
+ });
+ main.add(mainPanel, "HIGHSCORENEU");
+ cl.show(main, "HIGHSCORENEU");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java
new file mode 100644
index 0000000..b908737
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java
@@ -0,0 +1,122 @@
+package de.hs_mannheim.informatik.pr2projekt.gui;
+
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Scanner;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import de.hs_mannheim.informatik.pr2projekt.domain.HitoriMain;
+
+public class HighscoreGUI extends JFrame implements ActionListener {
+
+ public static void highscoreScreen(CardLayout cl, JPanel main){
+ JPanel highscorePanel = new JPanel(new BorderLayout());
+ JPanel buttonPanel = new JPanel(new GridLayout(7,1,10,10));
+ String[] buttons = {
+ "Highscore 4x4 - leicht",
+ "Highscore 5x5 - leicht",
+ "Highscore 8x8 - leicht",
+ "Highscore 8x8 - medium",
+ "Highscore 10x10 - medium",
+ "Highscore 15x15 - medium"
+ };
+ for(int i=0;i {
+ int j = count[0];
+ String[] paths = {
+ "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"
+ };
+ try {
+ showHighscores(cl, main, paths[j]);
+ } catch (FileNotFoundException e0) {
+ e0.printStackTrace();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ });
+ }
+ JButton b = new JButton("Zurück");
+ b.addActionListener(e -> {
+ cl.show(main, "HAUPT");
+ });
+ buttonPanel.add(b);
+ highscorePanel.setVisible(true);
+ highscorePanel.setSize(600,600);
+ highscorePanel.add(buttonPanel, BorderLayout.CENTER);
+ JLabel text0 = new JLabel("Level für Highscore Liste auswählen!");
+ highscorePanel.add(text0, BorderLayout.NORTH);
+ main.add(highscorePanel, "HIGHSCORES");
+ cl.show(main, "HIGHSCORES");
+ }
+
+ public static void showHighscores(CardLayout cl, JPanel main, String path) throws FileNotFoundException, IOException{
+ HitoriMain.sortByTime(path);
+ JPanel mainPanel = new JPanel(new BorderLayout());
+ File file = new File(path);
+ int i = 0;
+ try (Scanner scanner = new Scanner(file)) {
+ while (scanner.hasNextLine()) {
+ scanner.nextLine();
+ i++;
+ }
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ JPanel highscorePanel = new JPanel(new GridLayout(i,1,10,10));
+ if(i>0){
+ ArrayList lines = HitoriMain.readFromFile(path);
+ for(String s: lines){
+ JLabel text = new JLabel(s);
+ highscorePanel.add(text);
+ }
+ JButton b = new JButton("Zurück");
+ b.addActionListener(e -> {
+ cl.show(main, "HIGHSCORES");
+ highscoreScreen(cl, main);
+ });
+ mainPanel.add(b, BorderLayout.SOUTH);
+ } else {
+ JLabel text = new JLabel("Noch kein Highscore eingetragen.");
+ highscorePanel.add(text);
+ JButton b = new JButton("Zurück");
+ b.addActionListener(e -> {
+ cl.show(main, "HIGHSCORES");
+ highscoreScreen(cl, main);
+ });
+ mainPanel.add(b, BorderLayout.SOUTH);
+ }
+ mainPanel.add(highscorePanel, BorderLayout.CENTER);
+ mainPanel.setVisible(true);
+ mainPanel.setSize(600,600);
+ main.add(mainPanel, "HIGHSCORES");
+ cl.show(main, "HIGHSCORES");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
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
new file mode 100644
index 0000000..755a26d
--- /dev/null
+++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/MenuGUI.java
@@ -0,0 +1,94 @@
+package de.hs_mannheim.informatik.pr2projekt.gui;
+
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.nio.file.Paths;
+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.pr2projekt.domain.HitoriMain;
+
+
+public class MenuGUI extends JFrame implements ActionListener {
+
+ private static CardLayout cl = new CardLayout();
+ private static JPanel main = new JPanel(cl);
+ private static String[] filepath = {"", ""};
+
+ public MenuGUI(){
+ JPanel menuPanel = new JPanel(new BorderLayout());
+ JPanel buttonPanel = new JPanel(new GridLayout(7,1,10,10));
+ String[] buttons = {
+ "4x4 - leicht",
+ "5x5 - leicht",
+ "8x8 - leicht",
+ "8x8 - medium",
+ "10x10 - medium",
+ "15x15 - medium"
+ };
+ for(int i=0;i {
+ int j = count[0];
+ String currentDirectory = Paths.get("").toAbsolutePath().toString();
+ System.out.println("Current Working Directory: " + currentDirectory);
+ String[] paths = {
+ "resources/Hitori_Spielfelder/Hitori4x4_leicht.csv",
+ "resources/Hitori_Spielfelder/Hitori5x5leicht.csv",
+ "resources/Hitori_Spielfelder/Hitori8x8leicht.csv",
+ "resources/Hitori_Spielfelder/Hitori8x8medium.csv",
+ "resources/Hitori_Spielfelder/Hitori10x10medium.csv",
+ "resources/Hitori_Spielfelder/Hitori15x15_medium.csv"
+ };
+ for (String path : paths) {
+ File file = new File(path);
+ if (file.exists()) {
+ System.out.println("File found: " + file.getAbsolutePath());
+ } else {
+ System.out.println("File not found: " + file.getAbsolutePath());
+ }
+ }
+
+
+ filepath[0] = paths[j];
+ filepath[1] = num[0];
+ try{
+ HitoriMain.ablauf(cl, main, filepath);
+ } catch (FileNotFoundException s){
+ System.out.println("Fehler: " + s.getMessage());
+ }
+ });
+ }
+ JButton b = new JButton("Highscores");
+ b.addActionListener(e -> {
+ HighscoreGUI.highscoreScreen(cl, main);
+ });
+ buttonPanel.add(b);
+ menuPanel.add(buttonPanel, BorderLayout.CENTER);
+ JLabel text0 = new JLabel("Wählen Sie ein Level aus!");
+ menuPanel.add(text0, BorderLayout.NORTH);
+ setVisible(true);
+ setSize(600, 600);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ add(main);
+ main.add(menuPanel, "HAUPT");
+ cl.show(main, "HAUPT");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java b/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java
new file mode 100644
index 0000000..c846e55
--- /dev/null
+++ b/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java
@@ -0,0 +1,133 @@
+package de.hs_mannheim.informatik.pr2projekt.test;
+
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+
+import de.hs_mannheim.informatik.pr2projekt.domain.HitoriMain;
+import de.hs_mannheim.informatik.pr2projekt.gui.GameGUI;
+
+import java.io.FileNotFoundException;
+import java.util.Arrays;
+
+class HitoriTest{
+
+ @Test
+ void test1() {
+ String[][] array3x3 = {
+ {"W", "W", "W"},
+ {"W", "W", "W"},
+ {"W", "W", "W"}
+ };
+ assertTrue(Arrays.deepEquals(array3x3, HitoriMain.makeColorArray(3)));
+ }
+
+ @Test
+ void test2() {
+ String[][] array3x2 = {
+ {"W", "W", "W"},
+ {"W", "W", "W"},
+ };
+ assertFalse(Arrays.deepEquals(array3x2, HitoriMain.makeColorArray(3)));
+ }
+
+ @Test
+ void test3() {
+ assertEquals("Zeit: 00:00", GameGUI.startTimer());
+ }
+
+ @Test
+ void test4() {
+ String[][] data = {
+ {"W", "B", "W", "W"},
+ {"W", "W", "W", "B"},
+ {"W", "B", "W", "W"},
+ {"B", "W", "W", "B"}};
+ String[][] colors = {
+ {"W", "W", "W", "W"},
+ {"W", "W", "W", "B"},
+ {"W", "B", "W", "W"},
+ {"B", "W", "W", "B"}};
+ String path = "C:/Users/Berat/Desktop/hitoriNew/src/main/java/de/hs_mannheim/informatik/mvn/Hitori_Highscores/Hitori4x4_leicht.txt";
+ try {
+ assertFalse(HitoriMain.abgabeMöglich(path, data, colors));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ void test5() {
+ String[][] data = {
+ {"W", "B", "W", "W"},
+ {"W", "W", "W", "B"},
+ {"W", "B", "W", "W"},
+ {"B", "W", "W", "B"}};
+ String[][] colors = {
+ {"W", "B", "W", "W"},
+ {"W", "W", "W", "B"},
+ {"W", "B", "W", "W"},
+ {"B", "W", "W", "B"}};
+ String path = "C:/Users/Berat/Desktop/hitoriNew/src/main/java/de/hs_mannheim/informatik/mvn/Hitori_Spielfelder/Hitori4x4_leicht.csv";
+ try {
+ assertTrue(HitoriMain.abgabeMöglich(path, data, colors));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ void test6() {
+ String[][] data = {
+ {"B", "W", "W", "B", "W"},
+ {"W", "W", "B", "W", "W"},
+ {"B", "W", "W", "B", "W"},
+ {"W", "W", "B", "W", "W"},
+ {"B", "W", "W", "W", "B"}};
+ String[][] colors = {
+ {"W", "W", "W", "W", "W"},
+ {"W", "W", "W", "B", "W"},
+ {"W", "B", "W", "W", "W"},
+ {"W", "B", "W", "W", "W"},
+ {"W", "B", "W", "W", "W"}};
+ String path = "C:/Users/Berat/Desktop/hitoriNew/src/main/java/de/hs_mannheim/informatik/mvn/Hitori_Spielfelder/Hitori5x5_leicht.csv";
+ try {
+ assertFalse(HitoriMain.abgabeMöglich(path, data, colors));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ void test7() {
+ String[][] data = {
+ {"B", "W", "W", "B", "W"},
+ {"W", "W", "B", "W", "W"},
+ {"B", "W", "W", "B", "W"},
+ {"W", "W", "B", "W", "W"},
+ {"B", "W", "W", "W", "B"}};
+ String[][] colors = {
+ {"B", "W", "W", "B", "W"},
+ {"W", "W", "B", "W", "W"},
+ {"B", "W", "W", "B", "W"},
+ {"W", "W", "B", "W", "W"},
+ {"B", "W", "W", "W", "B"}};
+ String path = "C:/Users/Berat/Desktop/hitoriNew/src/main/java/de/hs_mannheim/informatik/mvn/Hitori_Spielfelder/Hitori5x5_leicht.csv";
+ try {
+ assertTrue(HitoriMain.abgabeMöglich(path, data, colors));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ void test8() {
+ String[] array = {"3", "4"};
+ assertFalse(Arrays.deepEquals(array, HitoriMain.getCords(3, 3)));
+ }
+
+ @Test
+ void test9() {
+ String[] array = {"3", "4"};
+ assertTrue(Arrays.deepEquals(array, HitoriMain.getCords(3, 4)));
+ }
+}
diff --git a/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/resources/log4j2.xml b/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/resources/log4j2.xml
new file mode 100644
index 0000000..5d2ccbf
--- /dev/null
+++ b/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/resources/log4j2.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file