diff --git a/PR2Projekt/.classpath b/PR2Projekt/.classpath index 160ba5f..5c5b866 100644 --- a/PR2Projekt/.classpath +++ b/PR2Projekt/.classpath @@ -1,11 +1,35 @@ - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PR2Projekt/.project b/PR2Projekt/.project index 13ac5a5..38886c7 100644 --- a/PR2Projekt/.project +++ b/PR2Projekt/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature 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 new file mode 100644 index 0000000..34f2395 --- /dev/null +++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain.java @@ -0,0 +1,235 @@ +package de.hs_mannheim.informatik.mvn.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.mvn.gui.GameGUI; +import de.hs_mannheim.informatik.mvn.gui.MenuGUI; + +public class HitoriMain extends JFrame implements ActionListener{ + + private static String[] filepath = {"", ""}; + + public static void main(String[] args) throws FileNotFoundException{ + new MenuGUI(); + } + + public static void ablauf(CardLayout cl, JPanel main, String[] filepath) throws FileNotFoundException { + Stack madeMoves = new Stack<>(); + String[][] data = getData(filepath[0], Integer.parseInt(filepath[1])); + String[][] colors = makeColorArray(data.length); + JButton[][] buttons = makeButtonArray(data); + GameGUI.paintGame(cl, main, filepath, buttons, colors, madeMoves, data); + } + + public static ArrayList readFromFile(String path){ + ArrayList lines = new ArrayList<>(); + try (BufferedReader reader = new BufferedReader(new FileReader(path))) { + String line; + while ((line = reader.readLine()) != null) { + lines.add(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + return lines; + } + + public static String[][] getData(String filepath, int rows) throws FileNotFoundException{ + Scanner sc = new Scanner(new File(filepath)); + String[][] data = new String[rows][rows]; + int rowInt = 0; + while (sc.hasNextLine() && rowInt < rows) { + String line = sc.nextLine(); + data[rowInt] = line.split(","); + rowInt++; + } + sc.close(); + return data; + } + + + public static String[][] makeColorArray(int size){ + String[][] colors = new String[size][size]; + 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) throws FileNotFoundException{ + madeMoves.clear(); + for(int i = 0; i getSolution(String path, String[][] result) throws FileNotFoundException{ + Scanner sc = new Scanner(new File(path)); + ArrayList filteredData = new ArrayList<>(); + boolean isUnderComment = false; + while (sc.hasNextLine()) { + String line = sc.nextLine().trim(); + if (line.equals("//Lösung (schwarze Felder)")) { + isUnderComment = true; + continue; + } + if (isUnderComment && !line.isEmpty()) { + String[] lineArray = line.split(","); + int num1 = Integer.parseInt(lineArray[0]); + int num2 = Integer.parseInt(lineArray[1]); + String newNum1 = String.valueOf(num1-1); + String newNum2 = String.valueOf(num2-1); + String newLine = newNum1+","+newNum2; + filteredData.add(newLine); + } + } + sc.close(); + return filteredData; + } + + public static 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 static void sortByTime(String path) throws FileNotFoundException, IOException{ + File file = new File(path); + ArrayList 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) { + // TODO Auto-generated method stub + + } +} + +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 index 557685f..196e0f9 100644 --- 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 @@ -1,15 +1,15 @@ -package src.main.java.de.hs_mannheim.informatik.mvn.domain; +package de.hs_mannheim.informatik.mvn.domain; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; +import java.lang.System.Logger; 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); + //private static final Logger logger = LogManager.getLogger(LogHighscores.class); public static void newRecord(String path, String username, String time) throws FileNotFoundException { String timePart = time.substring("Zeit: ".length()).trim(); @@ -26,7 +26,7 @@ public class LogHighscores { sc.nextLine(); } sc.close(); - + /* try (BufferedWriter writer = new BufferedWriter(new FileWriter(filepath, true))) { String eintrag = timePart + " " + username; logger.info("Neuer Eintrag: {}", eintrag); @@ -36,5 +36,6 @@ public class LogHighscores { } 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 index 4b6f384..57c48e2 100644 --- 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 @@ -1,4 +1,4 @@ -package src.test.java.de.hs_mannheim.informatik.mvn.gui; +package de.hs_mannheim.informatik.mvn.gui; import java.awt.BorderLayout; import java.awt.CardLayout; @@ -19,8 +19,8 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingUtilities; -import src.main.java.de.hs_mannheim.informatik.mvn.domain.HitoriMain; -import src.main.java.de.hs_mannheim.informatik.mvn.domain.LogHighscores; +import de.hs_mannheim.informatik.mvn.domain.HitoriMain; +import de.hs_mannheim.informatik.mvn.domain.LogHighscores; public class GameGUI extends JFrame implements ActionListener { 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 index c3fdd82..0d57ab7 100644 --- 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 @@ -1,4 +1,4 @@ -package src.test.java.de.hs_mannheim.informatik.mvn.gui; +package de.hs_mannheim.informatik.mvn.gui; import java.awt.BorderLayout; import java.awt.CardLayout; @@ -16,7 +16,7 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; -import src.main.java.de.hs_mannheim.informatik.mvn.domain.HitoriMain; +import de.hs_mannheim.informatik.mvn.domain.HitoriMain; public class HighscoreGUI extends JFrame implements ActionListener { 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 index 78f3e4c..fbd94bc 100644 --- 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 @@ -1,4 +1,4 @@ -package src.test.java.de.hs_mannheim.informatik.mvn.gui; +package de.hs_mannheim.informatik.mvn.gui; import java.awt.BorderLayout; import java.awt.CardLayout; @@ -13,7 +13,7 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; -import src.main.java.de.hs_mannheim.informatik.mvn.domain.HitoriMain; +import de.hs_mannheim.informatik.mvn.domain.HitoriMain; public class MenuGUI extends JFrame implements ActionListener { diff --git a/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java similarity index 91% rename from PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java rename to PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java index fd69167..f8099f8 100644 --- a/PR2Projekt/src/test/java/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java +++ b/PR2Projekt/src/test/java/de/hs_mannheim/informatik/mvn/test/HitoriTest.java @@ -1,12 +1,17 @@ -package src.test.java.de.hs_mannheim.informatik.mvn.test; +package de.hs_mannheim.informatik.mvn.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.Test; -import src.java.main.de.hs_mannheim.informatik.domain.HitoriMain; -import src.java.main.de.hs_mannheim.informatik.gui.GameGUI; import java.io.FileNotFoundException; import java.util.Arrays; +import org.junit.jupiter.api.Test; + +import de.hs_mannheim.informatik.mvn.domain.HitoriMain; +import de.hs_mannheim.informatik.mvn.gui.GameGUI; + class HitoriTest{ @Test