diff --git a/pom.xml b/pom.xml index 777d54d..87b8451 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,18 @@ + + + org.apache.logging.log4j + log4j-core + 2.24.2 + + + + org.apache.logging.log4j + log4j-api + 2.24.2 + org.junit.jupiter junit-jupiter-api @@ -35,12 +47,6 @@ test - - org.apache.logging.log4j - log4j-core - 2.24.2 - - com.github.bhlangonijr chesslib diff --git a/src/main/java/de/mannheim/th/chess/domain/Game.java b/src/main/java/de/mannheim/th/chess/domain/Game.java index 6a888b4..8d30394 100644 --- a/src/main/java/de/mannheim/th/chess/domain/Game.java +++ b/src/main/java/de/mannheim/th/chess/domain/Game.java @@ -3,12 +3,12 @@ package de.mannheim.th.chess.domain; import com.github.bhlangonijr.chesslib.Board; import com.github.bhlangonijr.chesslib.Square; import com.github.bhlangonijr.chesslib.move.Move; -import com.github.bhlangonijr.chesslib.move.MoveList; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import de.mannheim.th.chess.ui.SpielFrame; import de.mannheim.th.chess.utl.Clock; /** @@ -18,12 +18,16 @@ public class Game{ private Board board; private Clock clock; + private SpielFrame sp; private ArrayList moves; private ArrayList movelist = new ArrayList<>(); - public Game() { + public Game(String modus) { board = new Board(); - clock = new Clock("blitz"); + clock = new Clock(modus); + + //SpielFrame erstellen anhand Modus + sp = new SpielFrame(this); } diff --git a/src/main/java/de/mannheim/th/chess/ui/GameWindow.java b/src/main/java/de/mannheim/th/chess/ui/GameWindow.java index d220a5c..7fa393f 100644 --- a/src/main/java/de/mannheim/th/chess/ui/GameWindow.java +++ b/src/main/java/de/mannheim/th/chess/ui/GameWindow.java @@ -7,7 +7,7 @@ import de.mannheim.th.chess.domain.Game; */ public class GameWindow{ - private Game gamelogic = new Game(); + //private Game gamelogic = new Game(); public GameWindow() { diff --git a/src/main/java/de/mannheim/th/chess/ui/MainFrame.java b/src/main/java/de/mannheim/th/chess/ui/MainFrame.java index 96235ee..f864964 100644 --- a/src/main/java/de/mannheim/th/chess/ui/MainFrame.java +++ b/src/main/java/de/mannheim/th/chess/ui/MainFrame.java @@ -1,54 +1,29 @@ package de.mannheim.th.chess.ui; -import java.awt.EventQueue; - import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; -import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JOptionPane; -import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; -import java.util.ArrayList; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFileChooser; -import java.awt.BorderLayout; import java.awt.Component; import java.awt.Font; -import java.awt.Graphics; import java.awt.Color; public class MainFrame extends JFrame { - private ArrayList spiele = new ArrayList<>(); - private static final long serialVersionUID = 1L; private JPanel contentPane; - /** - * Launch the application. - */ - public static void main(String[] args) { - EventQueue.invokeLater(new Runnable() { - public void run() { - try { - MainFrame frame = new MainFrame(); - frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - /** * Create the frame. */ @@ -98,12 +73,12 @@ public class MainFrame extends JFrame { @Override public void actionPerformed(ActionEvent e) { - SpielFrame sp = new SpielFrame(); - spiele.add(sp); + ModeSelectionFrame msf = new ModeSelectionFrame(); } }); + contentPane.add(btnNewButton); contentPane.add(Box.createVerticalStrut(15)); diff --git a/src/main/java/de/mannheim/th/chess/ui/ModeSelectionFrame.java b/src/main/java/de/mannheim/th/chess/ui/ModeSelectionFrame.java new file mode 100644 index 0000000..36918f1 --- /dev/null +++ b/src/main/java/de/mannheim/th/chess/ui/ModeSelectionFrame.java @@ -0,0 +1,91 @@ +package de.mannheim.th.chess.ui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; + +import de.mannheim.th.chess.domain.Game; + +public class ModeSelectionFrame extends JFrame { + + private ArrayList spiele = new ArrayList<>(); + private static final long serialVersionUID = 1L; + private JPanel contentPane; + + /** + * Create the frame. + */ + public ModeSelectionFrame() { + + setBackground(Color.LIGHT_GRAY); + setResizable(true); + setAlwaysOnTop(true); + setTitle("Modeselection"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 400, 200); + + contentPane = new JPanel(); + contentPane.setBackground(new Color(90, 90, 90)); + contentPane.setForeground(Color.BLACK); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + + setContentPane(contentPane); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); + + + + JLabel jl = new JLabel("Welchen Modus wollen Sie spielen?"); + jl.setFont(new Font("Calibri", Font.ITALIC, 24)); + jl.setAlignmentX(Component.CENTER_ALIGNMENT); + contentPane.add(jl); + + contentPane.add(Box.createVerticalStrut(15)); + + //Moduseingabe + String[] moeglichkeiten = { "Blitz", "Schnellschach", "Klassisch"}; + JComboBox jcb1 = new JComboBox(moeglichkeiten); + jcb1.setMaximumSize(new Dimension(100, 24)); + contentPane.add(jcb1); + + contentPane.add(Box.createVerticalStrut(15)); + + JButton btnNewButton = new JButton("Spiel starten"); + + btnNewButton.setBackground(Color.LIGHT_GRAY); + btnNewButton.setForeground(Color.BLACK); + btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16)); + btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT); + btnNewButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + + //Moduslogik + String modus = String.valueOf(jcb1.getSelectedItem()); + Game g = new Game(modus); + + spiele.add(g); + + } + + }); + contentPane.add(btnNewButton); + + setVisible(true); + } + +} diff --git a/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java b/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java index 926ae2c..61c65d0 100644 --- a/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java +++ b/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java @@ -11,7 +11,6 @@ import com.github.bhlangonijr.chesslib.Square; import de.mannheim.th.chess.App; import de.mannheim.th.chess.domain.Game; -import java.awt.EventQueue; import java.awt.Font; import javax.swing.BorderFactory; @@ -53,29 +52,12 @@ public class SpielFrame extends JFrame { private boolean playerWhite = true; private boolean moveFinished = false; - /** - * Launch the application. Die Main-Methode für den WindowBuilder. - */ - public static void main(String[] args) { - EventQueue.invokeLater(new Runnable() { - public void run() { - try { - SpielFrame frame = new SpielFrame(); - frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - /** * Create the frame. */ - public SpielFrame() { - - game = new Game(); - + public SpielFrame(Game g) { + this.game = g; + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 1920, 1080); setTitle("Schach"); @@ -157,12 +139,12 @@ public class SpielFrame extends JFrame { // filtert möglichen Züge heraus int position = positions.get(buttonChoosed); - clickableButtons = game - .getLegalMoves( - Square.encode(Rank.allRanks[7 - position / 8], File.allFiles[position % 8])) - .stream().peek(System.out::println).map(m -> m.getTo()).peek(System.out::println) - .map(s -> 56 - s.getRank().ordinal() * 8 + s.getFile().ordinal()) - .collect(Collectors.toList()); + clickableButtons = game.getLegalMoves( + Square.encode(Rank.allRanks[7 - position / 8], File.allFiles[position % 8])) + .stream().peek(System.out::println).map(m -> m.getTo()).peek(System.out::println) + .map(s -> 56 - s.getRank().ordinal() * 8 + s.getFile().ordinal()) + .collect(Collectors.toList()); + //filtert mögliche Züge und nicht mögliche Züge in eine Map aus Listen Map> buttonsSeperated = buttons.stream() @@ -202,6 +184,8 @@ public class SpielFrame extends JFrame { b.setEnabled(false); } } + + } else { diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 0000000..ab8a49f --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/target/classes/de/mannheim/th/chess/App.class b/target/classes/de/mannheim/th/chess/App.class index 920e2cb..a8d459d 100644 Binary files a/target/classes/de/mannheim/th/chess/App.class and b/target/classes/de/mannheim/th/chess/App.class differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index ebf066f..e69de29 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1 +0,0 @@ -de\mannheim\th\chess\App.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 15c463f..d271d64 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,10 +1,12 @@ -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\App.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\domain\Game.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\domain\MoveChecker.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\domain\MoveReader.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\model\Database.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\ui\Creator.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\ui\GameWindow.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\ui\Ui.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\utl\Clock.java -C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\utl\GameReader.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/App.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/domain/Game.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/domain/MoveChecker.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/domain/MoveReader.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/model/Database.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/ui/Creator.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/ui/GameWindow.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/ui/MainFrame.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/ui/ModeSelectionFrame.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/utl/Clock.java +/home/matias-mas-viehl/git/Schach/src/main/java/de/mannheim/th/chess/utl/GameReader.java diff --git a/target/test-classes/de/mannheim/th/chess/AppTest.class b/target/test-classes/de/mannheim/th/chess/AppTest.class index b602933..4e6415e 100644 Binary files a/target/test-classes/de/mannheim/th/chess/AppTest.class and b/target/test-classes/de/mannheim/th/chess/AppTest.class differ