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