large commits, added maven and tests
parent
18d440bdbc
commit
e873e54073
|
@ -5,6 +5,7 @@
|
||||||
<attribute name="module" value="true"/>
|
<attribute name="module" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="source"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
/target/
|
||||||
|
/.DS_Store
|
||||||
|
/.classpath
|
||||||
|
/.project
|
|
@ -0,0 +1,138 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>de.hs_mannheim</groupId>
|
||||||
|
<artifactId>MvnDemo</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.source>21</maven.compiler.source>
|
||||||
|
<maven.compiler.target>21</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-api</artifactId>
|
||||||
|
<version>5.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>5.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-core</artifactId>
|
||||||
|
<version>2.24.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-api</artifactId>
|
||||||
|
<version>2.24.2</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<!-- Compiler -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.13.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>${maven.compiler.source}</source>
|
||||||
|
<target>${maven.compiler.target}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<!-- JAR creation -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.6.0</version>
|
||||||
|
<configuration>
|
||||||
|
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<transformers>
|
||||||
|
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||||
|
<mainClass> de.hs_mannheim.informatik.mvn.Main</mainClass>
|
||||||
|
</transformer>
|
||||||
|
</transformers>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- Code coverage, cf.: target/site/jacoco -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jacoco</groupId>
|
||||||
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
|
<version>0.8.12</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>prepare-agent</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>report</id>
|
||||||
|
<phase>test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>report</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- Static code analysis, cf: target/site/pmd.html -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-pmd-plugin</artifactId>
|
||||||
|
<version>3.26.0</version>
|
||||||
|
<configuration>
|
||||||
|
<failOnViolation>false</failOnViolation>
|
||||||
|
<printFailingErrors>true</printFailingErrors>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>verify</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>check</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
<sourceDirectory>src/main/java</sourceDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<testSourceDirectory>src/test/java</testSourceDirectory>
|
||||||
|
</build>
|
||||||
|
<reporting>
|
||||||
|
<plugins>
|
||||||
|
<!-- generate Javadocs via "mvn site" and find them in the site
|
||||||
|
folder -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
<version>3.11.2</version>
|
||||||
|
<configuration>
|
||||||
|
<show>private</show>
|
||||||
|
<nohelp>true</nohelp>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
|
<version>3.6.0</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</reporting>
|
||||||
|
</project>
|
|
@ -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<String> 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<num;i++){
|
|
||||||
for(int j=0;j<num;j++){
|
|
||||||
JButton b = buttons[i][j];
|
|
||||||
b.setOpaque(true);
|
|
||||||
b.setContentAreaFilled(true);
|
|
||||||
b.setBorderPainted(false);
|
|
||||||
b.setFocusPainted(false);
|
|
||||||
b.setBackground(Color.WHITE);
|
|
||||||
gameGrid.add(b);
|
|
||||||
String[] pos = HitoriMain.getCords(i,j);
|
|
||||||
b.addActionListener(e -> {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<String> 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<String> 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<buttons.length; i++){
|
|
||||||
for(int j = 0; j<buttons.length;j++){
|
|
||||||
JButton b0 = buttons[i][j];
|
|
||||||
grid.add(b0);
|
|
||||||
grid.repaint();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void finish(String[] filepath, String path, String[][] data, String[][] colors) throws FileNotFoundException{
|
|
||||||
JFrame frame = new JFrame("Highscore anlegen");
|
|
||||||
JPanel mainPanel = new JPanel(new BorderLayout());
|
|
||||||
JLabel text = new JLabel("Geben Sie unten Ihren Namen an um sich in der Highscore Liste einzutragen.");
|
|
||||||
mainPanel.add(text, BorderLayout.NORTH);
|
|
||||||
JTextField field = new JTextField(20);
|
|
||||||
mainPanel.add(field, BorderLayout.CENTER);
|
|
||||||
JButton b = new JButton("In der Highscore Liste eintragen");
|
|
||||||
mainPanel.add(b, BorderLayout.SOUTH);
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.setSize(600,600);
|
|
||||||
frame.add(mainPanel);
|
|
||||||
b.addActionListener(e -> {
|
|
||||||
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] = "";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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<buttons.length;i++){
|
|
||||||
JButton b0 = new JButton(buttons[i]);
|
|
||||||
buttonPanel.add(b0);
|
|
||||||
int[] count = {i};
|
|
||||||
char rowChar = buttons[i].charAt(0);
|
|
||||||
String[] row = {String.valueOf(rowChar)};
|
|
||||||
b0.addActionListener(e -> {
|
|
||||||
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<String> 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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<buttons.length;i++){
|
|
||||||
JButton b0 = new JButton(buttons[i]);
|
|
||||||
buttonPanel.add(b0);
|
|
||||||
int[] count = {i};
|
|
||||||
char rowChar = buttons[i].charAt(0);
|
|
||||||
String[] row = {String.valueOf(rowChar)};
|
|
||||||
b0.addActionListener(e -> {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,43 +1,42 @@
|
||||||
package de.hs_mannheim.informatik.pr2projekt.domain;
|
package de.hs_mannheim.informatik.pr2projekt.domain;
|
||||||
|
|
||||||
|
import java.awt.CardLayout;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
import de.hs_mannheim.informatik.pr2projekt.gui.GameGUI;
|
import de.hs_mannheim.informatik.pr2projekt.gui.GameGUI;
|
||||||
import de.hs_mannheim.informatik.pr2projekt.gui.MenuGUI;
|
import de.hs_mannheim.informatik.pr2projekt.gui.MenuGUI;
|
||||||
|
|
||||||
public class HitoriMain extends JFrame implements ActionListener{
|
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{
|
public static void main(String[] args) throws FileNotFoundException{
|
||||||
filepath[0] = "";
|
new MenuGUI();
|
||||||
filepath[1] = "";
|
|
||||||
new HitoriMain();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public HitoriMain() throws FileNotFoundException {
|
public static void ablauf(CardLayout cl, JPanel main, String[] filepath) throws FileNotFoundException {
|
||||||
Stack<String> madeMoves = new Stack<>();
|
Stack<String> 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[][] data = getData(filepath[0], Integer.parseInt(filepath[1]));
|
||||||
String[][] colors = makeColorArray(data.length);
|
String[][] colors = makeColorArray(data.length);
|
||||||
JButton[][] buttons = makeButtonArray(data);
|
JButton[][] buttons = makeButtonArray(data);
|
||||||
GameGUI.paintGame(filepath, buttons, colors, madeMoves, data);
|
GameGUI.paintGame(cl, main, filepath, buttons, colors, madeMoves, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<String> readFromFile(String path){
|
public static ArrayList<String> readFromFile(String path){
|
||||||
|
@ -54,8 +53,7 @@ public class HitoriMain extends JFrame implements ActionListener{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String[][] getData(String filepath, int rows) throws FileNotFoundException{
|
public static String[][] getData(String filepath, int rows) throws FileNotFoundException{
|
||||||
String filepath0 = filepath;
|
Scanner sc = new Scanner(new File(filepath));
|
||||||
Scanner sc = new Scanner(new File(filepath0));
|
|
||||||
String[][] data = new String[rows][rows];
|
String[][] data = new String[rows][rows];
|
||||||
int rowInt = 0;
|
int rowInt = 0;
|
||||||
while (sc.hasNextLine() && rowInt < rows) {
|
while (sc.hasNextLine() && rowInt < rows) {
|
||||||
|
@ -83,8 +81,8 @@ public class HitoriMain extends JFrame implements ActionListener{
|
||||||
for(int i=0;i<data.length;i++){
|
for(int i=0;i<data.length;i++){
|
||||||
for(int j=0;j<data.length;j++){
|
for(int j=0;j<data.length;j++){
|
||||||
String number = data[i][j];
|
String number = data[i][j];
|
||||||
JButton b0 = new JButton(number);
|
JButton b = new JButton(number);
|
||||||
buttons[i][j] = b0;
|
buttons[i][j] = b;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return buttons;
|
return buttons;
|
||||||
|
@ -95,7 +93,6 @@ public class HitoriMain extends JFrame implements ActionListener{
|
||||||
String[][] result = getResult(data, colors);
|
String[][] result = getResult(data, colors);
|
||||||
ArrayList<String> filteredData = getSolution(path, result);
|
ArrayList<String> filteredData = getSolution(path, result);
|
||||||
String[][] ergebnis1 = getErgebnisArray(result, filteredData);
|
String[][] ergebnis1 = getErgebnisArray(result, filteredData);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for(int i=0;i<result.length;i++){
|
for(int i=0;i<result.length;i++){
|
||||||
for(int j=0;j<result.length;j++){
|
for(int j=0;j<result.length;j++){
|
||||||
|
@ -120,7 +117,7 @@ public class HitoriMain extends JFrame implements ActionListener{
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void totalResetButton(JButton[][] buttons, String[][] colors,Stack<String> madeMoves,String[][] data){
|
public static void totalResetButton(CardLayout cl, JPanel main, JButton[][] buttons, String[][] colors,Stack<String> madeMoves,String[][] data) throws FileNotFoundException{
|
||||||
madeMoves.clear();
|
madeMoves.clear();
|
||||||
for(int i = 0; i<data.length;i++){
|
for(int i = 0; i<data.length;i++){
|
||||||
for(int j = 0; j<data.length;j++){
|
for(int j = 0; j<data.length;j++){
|
||||||
|
@ -128,11 +125,7 @@ public class HitoriMain extends JFrame implements ActionListener{
|
||||||
buttons[i][j] = null;
|
buttons[i][j] = null;
|
||||||
}
|
}
|
||||||
JButton[][] buttons0 = makeButtonArray(data);
|
JButton[][] buttons0 = makeButtonArray(data);
|
||||||
try {
|
GameGUI.paintGame(cl, main, filepath, buttons0, colors, madeMoves, data);
|
||||||
GameGUI.paintGame(filepath, buttons0, colors, madeMoves, data);
|
|
||||||
} catch (FileNotFoundException s) {
|
|
||||||
System.out.println("File not found: " + s.getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,6 +185,37 @@ public class HitoriMain extends JFrame implements ActionListener{
|
||||||
}
|
}
|
||||||
return ergebnis;
|
return ergebnis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void sortByTime(String path) throws FileNotFoundException, IOException{
|
||||||
|
File file = new File(path);
|
||||||
|
ArrayList<Entry> 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
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<String> 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<num;i++){
|
||||||
|
for(int j=0;j<num;j++){
|
||||||
|
JButton b = buttons[i][j];
|
||||||
|
b.setOpaque(true);
|
||||||
|
b.setContentAreaFilled(true);
|
||||||
|
b.setBorderPainted(false);
|
||||||
|
b.setFocusPainted(false);
|
||||||
|
b.setBackground(Color.WHITE);
|
||||||
|
gameGrid.add(b);
|
||||||
|
String[] pos = HitoriMain.getCords(i,j);
|
||||||
|
b.addActionListener(e -> {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<String> 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<String> 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<buttons.length; i++){
|
||||||
|
for(int j = 0; j<buttons.length;j++){
|
||||||
|
JButton b0 = buttons[i][j];
|
||||||
|
grid.add(b0);
|
||||||
|
grid.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String startTimer() {
|
||||||
|
startTime = System.currentTimeMillis();
|
||||||
|
elapsedSeconds = 0;
|
||||||
|
return "Zeit: 00:00";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String stopTimer() {
|
||||||
|
timer.cancel();
|
||||||
|
long minutes = (elapsedSeconds % 3600) / 60;
|
||||||
|
long seconds = elapsedSeconds % 60;
|
||||||
|
String endtime = String.format("Zeit: %02d:%02d", minutes, seconds);
|
||||||
|
elapsedSeconds = 0; // Reset so the next start begins at zero
|
||||||
|
return endtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void finish(CardLayout cl, JPanel main, String endtime, String[] filepath, String path, String[][] data, String[][] colors) throws FileNotFoundException{
|
||||||
|
JPanel mainPanel = new JPanel(new BorderLayout());
|
||||||
|
JLabel text = new JLabel("Geben Sie unten Ihren Namen an um sich in der Highscore Liste einzutragen.");
|
||||||
|
mainPanel.add(text, BorderLayout.NORTH);
|
||||||
|
JTextField field = new JTextField(20);
|
||||||
|
mainPanel.add(field, BorderLayout.CENTER);
|
||||||
|
JButton b = new JButton("In der Highscore Liste eintragen");
|
||||||
|
mainPanel.add(b, BorderLayout.SOUTH);
|
||||||
|
mainPanel.setVisible(true);
|
||||||
|
mainPanel.setSize(600,600);
|
||||||
|
b.addActionListener(e -> {
|
||||||
|
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
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<buttons.length;i++){
|
||||||
|
JButton b0 = new JButton(buttons[i]);
|
||||||
|
buttonPanel.add(b0);
|
||||||
|
int[] count = {i};
|
||||||
|
b0.addActionListener(e -> {
|
||||||
|
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<String> 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
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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<buttons.length;i++){
|
||||||
|
JButton b0 = new JButton(buttons[i]);
|
||||||
|
buttonPanel.add(b0);
|
||||||
|
int[] count = {i};
|
||||||
|
String[] num = buttons[i].split("x");
|
||||||
|
b0.addActionListener(e -> {
|
||||||
|
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
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="WARN">
|
||||||
|
<Appenders>
|
||||||
|
<!-- Konsole Appender -->
|
||||||
|
<Console name="Console" target="SYSTEM_OUT">
|
||||||
|
<PatternLayout
|
||||||
|
pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %C{1} - %msg%n" />
|
||||||
|
</Console>
|
||||||
|
</Appenders>
|
||||||
|
|
||||||
|
<Loggers>
|
||||||
|
<!-- Root Logger -->
|
||||||
|
<Root level="info">
|
||||||
|
<AppenderRef ref="Console" />
|
||||||
|
</Root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
Loading…
Reference in New Issue