From 48bc601a0d37dc4a22672961506eaf9170e113a0 Mon Sep 17 00:00:00 2001 From: Joshua Date: Tue, 3 Dec 2024 15:33:15 +0100 Subject: [PATCH 1/5] Added BoardDisplay, startet connecting FrontEnd/BackAnd. Added new graphics. Added startLocalGameLoadingScreen --- graphics/botPlayerEasy.png | Bin 0 -> 854 bytes graphics/botPlayerHard.png | Bin 0 -> 875 bytes graphics/botPlayerNormal.png | Bin 0 -> 889 bytes src/BoardDisplay.java | 15 ++++++ src/GameBoard.java | 14 ++++-- src/MainFrame.java | 42 ++++++++++++++-- src/startLocalGame.java | 72 +++++++++++++++++++++++++-- src/startLocalGameLoadingScreen.java | 20 ++++++++ src/startMultiplayerGame.java | 13 ++++- 9 files changed, 161 insertions(+), 15 deletions(-) create mode 100644 graphics/botPlayerEasy.png create mode 100644 graphics/botPlayerHard.png create mode 100644 graphics/botPlayerNormal.png create mode 100644 src/BoardDisplay.java create mode 100644 src/startLocalGameLoadingScreen.java diff --git a/graphics/botPlayerEasy.png b/graphics/botPlayerEasy.png new file mode 100644 index 0000000000000000000000000000000000000000..263c4134f4c5092649e5c13f83b7d0e630001cfa GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U>5LnaSW-L z^Y-q++}jQUt%=79n0HDGTxvP(DeuD=Ca-tgmxZaOob#09!o(;Qmw?SR#x?)T4c9bJ zzf-F={qWIMuYm>v&F_|f#eCz^!|$gnzZ_iu{Pg+#`HTDg*VpI#I{M7Tp1oe;i{<~r z4}_SyC-0H^Gv9yueEIj6_e-}vaI9sxaI5wZ`yHlbk#n9jcs?+lE&TUYfyJEVcJ_1q z%KjddIUvJm;LdPHkfHdJ=lMG+XL^f1X=cwjC?DMFa7m-t-dC{c_*&^d>)uy?RrHYU zchCIo!*urKdIsjN^@px)iut*NX@)YxGmZvJri4C*8QQW9``$0zoLTx?@D$sF?Bm*O zj(6*(Ok$kz>Vqyjkhx?Mqk{}sC9)>ThLu~Hqt~eiY?oh|!mumv&cm*A;oId^&vq>^ zy&}6l&)(^#HbasCLov&Nn3t9ZqJs0^eJik!Km3l%;QOs@uU_A&j%0msO~JbDfEL4! zG|`6W@0G_Z8$y95)lHCP-~ZZYK2r>Pb=O@{hGZ6mcY%h@I__}XD2FYE@ytg51f{N8 zrkk23oU7+Lv9~-pRJ8sQQ>`$30PF2r2^vh#nrduHX-jBo9deh`gZMk@s3*c5?gs%x{j+Nq`Pe7;VTWo5Vf z?iI`_70=>=IZg%G+_GU<>$fFJQN#OVhh@Xgv&#knhH%#96UGA=2*>NMev=7Jz~ z-O!J7W-x;yNP~qnNWApg0)Zsux1Co+}A+ozwJTPnf2S&w?h5y0?!D$#oh|r literal 0 HcmV?d00001 diff --git a/graphics/botPlayerHard.png b/graphics/botPlayerHard.png new file mode 100644 index 0000000000000000000000000000000000000000..b44c624dc3d64633080fc428dec0d73c3198b327 GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U{>{XaSW-L z^Y*S`-W3OtV;>m<6($5^WNv#bHAmU~Bj+~_OZMvvZnsV2;B*n^O4;bQC+hU?WB057 z{oCIskosn({^O6gFD@|!n##cN;L+4yOxwN`{D1oL&;9xG^3mCAYj^LSU335M;qcjY z8+TqT{BYc{{{Q3iPyW}}*4&QzEzdSxAmYxG&jtlRobwCVaQ?uKjc zgzX*)8k~Qm=B~pOziH>i;`YN2GvB>le);4&`v~S4$_&pq8Z4O-{C2(AxkaLQaZJrA zsk9HvLlh^NoO*CRxaGmwYrJ;mJk7s^mh>H8yrovG@!1pO10H{8Z`i71EN=|b+Q$Gf zW#=VEi8jYwv%+DLe;a+Vd@eOy#LO437jDidhcGFdDcsoDl>u zV@@)hc`JLP$i8vcUk_F03%9l$7M;63&)#d6tYh{H>$tmhEt`xPlEB(xUYZ_=DxQDm z?Ze7_ZFhMJUMAmOCI9^1DJ_QUY&Q*A!Wa*DhcWK>Hm5v>J%V+?*3->zEPkw=xsP=R z-#3}vk_^G97SFowaNH<|?F_>+3v~m*qn3?xL}s;I^<1dz^r8Q0l#+rGDL2x?EgObY1Om| zXBj3+I~e7tt*olpqQYQnWeq4jvxD& z7@$}q(Ne&2V9pu=k)N}sJe|3FnZOb~xwnh>COn*5?W?Ha{4wJ*!LgxJ>?{@#@rb<=+3Xb1o_(Ug);o~n z)s?cT0vp&2+!a>@-_Gt^7Ji4hbphY?4PUB^MEY+ChHzLn2>>;E7l*u&yYuN)`c~zP z{=C}v+iwbPaSv=h-lve$$H3B2Rd-vY>D!BI2Nw&ptkz&rgh%Tfu{f8Nmk+tOD75`r f-vv(7AY#Fa{p!pL&po1MHh{REu6{1-oD!MU^e!2aSW-L z^Y-r9t}6~AM?YG>a$+fOl3pmdeP6%-q6z957t}x2-sv*gA$W)Lk=rd-;WzUv7v-#xd^eg^XlWrk-Q4VFv^epW9n z%_WN$^jmG;4ZrISMDl!Nn^aU7hyRC-Uo1lw0dkKFCinZJFQ&YoP)p!_xd(50%K zp9)zG+!@XYG8D5MkYO|kw_-SK;E{g$)i>iQyax)8YqL4tt(!K9amK3;s_a1KvPp~% za!d(*3~*b4Ol`@Am0Ov;*Qp0=pT9DNLCMcL=Hky+-!_+QR?6TjJ-+((`G9X+4Kff5 zs`w19Uzxqz^v?O`8+J3zsm_i5TKaD78m5BG39`-!q6{`Eq7B~PE00$;gfb|daq?XoHmhlg)dxfm$oyt0bJ^&xVBK1FC~NrzK}CxVceE>> z$T5Ab*Gv@3SeN>mCxajyQ_wo9lQT@P>pUkr0sBKW?{k3~?=e*&X zaMRJYr0i<$;|j?T4*li{Ktm^sHW|rJuG;zhoF>c4ZuiwIn7@2DW4m17iu1>ej|^L^ zE@rhZi0g7c!+1tlt|9EZ6_?}ZHH(C9IH!l}vYed9q*Z!ptJXZ>VsPZNE^v9Z=$wp5 zla!1z|M6m7F2~+m>x7t|F+9^?G0mzzckN48@dAM>4L$_e0q_-RVkx4ulC*cNWm>`kq?Zvf&iv?P`HCPm78KDW{ tjaZz^%Dac$TNK)V?eBslZy>o~Mg7jVO3xi09C8MUdAjhfXM&= literal 0 HcmV?d00001 diff --git a/src/BoardDisplay.java b/src/BoardDisplay.java new file mode 100644 index 0000000..40c2238 --- /dev/null +++ b/src/BoardDisplay.java @@ -0,0 +1,15 @@ +import javax.swing.*; +import java.awt.*; +// Erstellt Spielfeld für Spieler1/Spieler2 +public class BoardDisplay extends JPanel { + public BoardDisplay(int gridSize, Icon buttonIcon) { + super(new GridLayout(gridSize, gridSize)); + + // Buttons zum Panel hinzufügen + for (int i = 0; i < gridSize; i++) { + for (int j = 0; j < gridSize; j++) { + add(new JButton(buttonIcon)); + } + } + } +} diff --git a/src/GameBoard.java b/src/GameBoard.java index 43c3974..38d8cf6 100644 --- a/src/GameBoard.java +++ b/src/GameBoard.java @@ -26,6 +26,7 @@ public class GameBoard extends JPanel { JButton leftPlayerModul5 = new JButton("Modul 5"); JButton leftPlayerModul6 = new JButton("Modul 6"); JButton leftPlayerModul7 = new JButton("Reset"); + // Gegnerische ModulButtons JButton rightPlayerModul1 = new JButton("Modul 1"); JButton rightPlayerModul2 = new JButton("Modul 2"); @@ -68,10 +69,14 @@ public class GameBoard extends JPanel { rightButtonsPanel.add(rightPlayerModul7); // Spielfelder erstellen (eigenes und gegnerisches) - int gridSize = 13 + semesterCounter; // Größe des Spielfelds - JPanel ownBoardPanel = new JPanel(new GridLayout(gridSize, gridSize)); - JPanel opponentBoardPanel = new JPanel(new GridLayout(gridSize, gridSize)); + int gridSize = GameController.semesterToBoardSize(semesterCounter); // Größe des Spielfelds + // Spielfelder werden in BoardDisplay erstellt + //JPanel ownBoardPanel = new JPanel(new GridLayout(gridSize, gridSize)); + //JPanel opponentBoardPanel = new JPanel(new GridLayout(gridSize, gridSize)); + JPanel ownBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); + JPanel opponentBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); + /* Alter code ohne BoardDisplay // Buttons für das eigene Spielfeld hinzufügen for (int i = 0; i < gridSize; i++) { for (int j = 0; j < gridSize; j++) { @@ -85,6 +90,7 @@ public class GameBoard extends JPanel { opponentBoardPanel.add(new JButton(gameBoardEmtpy)); } } + */ // Panel für beide Spielfelder (nebeneinander in der Mitte) JPanel centerPanel = new JPanel(); @@ -99,7 +105,7 @@ public class GameBoard extends JPanel { add(centerPanel, BorderLayout.CENTER); } - GameBoard(MainFrame frame,int semesterCounter) { + GameBoard(MainFrame frame, int semesterCounter,Player p1, Player p2) { buildPanel(frame, semesterCounter); /* rightPlayerRightButton.addActionListener(new ActionListener() { diff --git a/src/MainFrame.java b/src/MainFrame.java index 2e53062..eb308ce 100644 --- a/src/MainFrame.java +++ b/src/MainFrame.java @@ -35,6 +35,7 @@ public class MainFrame extends JFrame { // Verschiedene Panels erstellen und hinzufügen MainMenuView mainMenuView = new MainMenuView(this); startLocalGame localGame = new startLocalGame(this); + //startLocalGameLoadingScreen LocalGameLoadingScreen = new startLocalGameLoadingScreen(this); startMultiplayerGame multiplayerGame = new startMultiplayerGame(this); coinToss coinToss = new coinToss(this); Verbinden verbinden = new Verbinden(this); @@ -60,6 +61,7 @@ public class MainFrame extends JFrame { public void showPanel(String panelName) { cardLayout.show(mainPanel, panelName); } + // --- ShowPanel der startMultiplayerGame Klasse public void showPanelSMG(String panelName, int num) { this.localMult = num; @@ -73,12 +75,14 @@ public class MainFrame extends JFrame { cardLayout.show(mainPanel, panelName); // Show the panel } - // --- ShowPanel der startLocalGame Klasse - public void showPanelSLG(String panelName,int semesterCounter) { - this.semesterCounter = semesterCounter; + // --- ShowPanel der startLocalGameLoadingScreen Klasse (DURCH BACKEND AUFGERUFEN) + public void showPanelSLG(String panelName,int semesterCounter, Player p1, Player p2) { + this.semesterCounter = semesterCounter; - //if (!isPanelPresent(panelName)) { //TODO potentiell raus - GameBoard gameBoard = new GameBoard(this, semesterCounter); + //if (!isPanelPresent(panelName)) { //TODO potentiell raus + // gameBoard muss player übergeben bekommen + GameBoard gameBoard = new GameBoard(this, semesterCounter, p1, p2); + //mainPanel.add(mainMenuView, "MainMenu"); mainPanel.add(gameBoard, panelName); mainPanel.revalidate(); // Refresh mainPanel.repaint(); @@ -86,6 +90,20 @@ public class MainFrame extends JFrame { cardLayout.show(mainPanel, panelName); // Show the panel } + + // --- ShowPanel der startLocalGame Klasse + public void showPanelSLGLS(String panelName,int semesterCounter) { + this.semesterCounter = semesterCounter; + // gameBoard muss player übergeben bekommen + startLocalGameLoadingScreen LocalGameLoadingScreen = new startLocalGameLoadingScreen(this, semesterCounter); + mainPanel.add(LocalGameLoadingScreen, panelName); + mainPanel.revalidate(); // Refresh + mainPanel.repaint(); + //} + + cardLayout.show(mainPanel, panelName); // Show the panel + } + /* TODO ist dies unnötig? private boolean isPanelPresent(String panelName) { for (Component component : mainPanel.getComponents()) { @@ -96,6 +114,20 @@ public class MainFrame extends JFrame { return false; } */ + // Methoden für übergabe von playern an GameBoard + /* + public void setPlayerData() { + this.semesterCounter = semesterCounter; + + //if (!isPanelPresent(panelName)) { //TODO potentiell raus + // gameBoard muss player übergeben bekommen + GameBoard gameBoard = new GameBoard(this, semesterCounter); + mainPanel.add(gameBoard, panelName); + mainPanel.revalidate(); // Refresh + mainPanel.repaint(); + }*/ + + public static void main(String[] args) { SwingUtilities.invokeLater(() -> { MainFrame frame = new MainFrame(); diff --git a/src/startLocalGame.java b/src/startLocalGame.java index 8b01131..f3374b5 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -3,6 +3,10 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class startLocalGame extends JPanel { + // Player + //Player p1; + //Player p2; + // Funktionshilfen int semesterCounter = 1; // Semester Counter Label String leftPlayerNickname = "Spieler 1"; @@ -11,7 +15,9 @@ public class startLocalGame extends JPanel { // Grafiken ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png"); ImageIcon humanPlayerIcon = new ImageIcon("graphics/humanPlayer.png"); - ImageIcon aiPlayerIcon = new ImageIcon("graphics/aiPlayer.png"); + ImageIcon aiPlayerEasyIcon = new ImageIcon("graphics/botPlayerEasy.png"); + ImageIcon aiPlayerNormalIcon = new ImageIcon("graphics/botPlayerNormal.png"); + ImageIcon aiPlayerHardIcon = new ImageIcon("graphics/botPlayerHard.png"); // Labels und Buttons JLabel frameTitle = new JLabel("Lokales Spiel"); @@ -19,7 +25,7 @@ public class startLocalGame extends JPanel { JLabel leftPlayerName = new JLabel("Name"); JLabel rightPlayerName = new JLabel("KI-Level"); JLabel leftPlayerIcon = new JLabel(humanPlayerIcon); - JLabel rightPlayerIcon = new JLabel(aiPlayerIcon); + JLabel rightPlayerIcon = new JLabel(aiPlayerEasyIcon); JLabel semesterCounterLabel = new JLabel(String.valueOf(semesterCounter)); JButton backButton = new JButton(backButtonIcon); @@ -93,6 +99,7 @@ public class startLocalGame extends JPanel { rightPlayerTextField.setText(rightPlayerNickname); add(rightPlayerTextField); + // ActionListener für Buttons semesterUpButton.addActionListener(e -> { if (semesterCounter < 6) { @@ -142,12 +149,67 @@ public class startLocalGame extends JPanel { backButton.addActionListener(e -> frame.showPanel("MainMenu")); - startButton.addActionListener(e -> frame.showPanelSLG("GameBoard", semesterCounter)); // TODO ECHTE FUNKTION EINFÜGEN + //startButton.addActionListener(e -> frame.showPanelSLG("GameBoard", semesterCounter,p1, p2)); // TODO ECHTE FUNKTION EINFÜGEN + startButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + frame.showPanelSLGLS("startLocalGameLoadingScreen", semesterCounter); //TODO + if (leftPlayerIcon.getIcon() == humanPlayerIcon) {// TODO Diverse KiIcons erstellen für diffs + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } + } else if (leftPlayerIcon.getIcon() == aiPlayerEasyIcon) { + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } + } + + } + }); +// GameController.startLocalGame(SpecificAiPlayerEasy.class, rightPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + // TODO Zwischenscreen einfügen ("Spiel wird erstellt") + /* + if (leftPlayerIcon.getIcon() == humanPlayerIcon) {// TODO Diverse KiIcons erstellen für diffs + if (rightPlayerIcon.getIcon() == aiPlayerIcon) { // Platzhalter da nur eine KI gerade exisitert + //... + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } + } else if (leftPlayerIcon.getIcon() == aiPlayerIcon) { + //... + GameController.startLocalGame(SpecificAiPlayerEasy.class, rightPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + } + */ + + } private void toggleLeftPlayerIcon() { if (leftPlayerIcon.getIcon() == humanPlayerIcon) { - leftPlayerIcon.setIcon(aiPlayerIcon); + leftPlayerIcon.setIcon(aiPlayerEasyIcon); } else { leftPlayerIcon.setIcon(humanPlayerIcon); } @@ -155,7 +217,7 @@ public class startLocalGame extends JPanel { private void toggleRightPlayerIcon() { if (rightPlayerIcon.getIcon() == humanPlayerIcon) { - rightPlayerIcon.setIcon(aiPlayerIcon); + rightPlayerIcon.setIcon(aiPlayerEasyIcon); } else { rightPlayerIcon.setIcon(humanPlayerIcon); } diff --git a/src/startLocalGameLoadingScreen.java b/src/startLocalGameLoadingScreen.java new file mode 100644 index 0000000..c4d4569 --- /dev/null +++ b/src/startLocalGameLoadingScreen.java @@ -0,0 +1,20 @@ +import javax.swing.*; +import java.awt.*; + +public class startLocalGameLoadingScreen extends JPanel{ + startLocalGameLoadingScreen(MainFrame frame, int semesterCounter) { + // Layout setzen + setLayout(new BorderLayout()); + + // Label mit dem Text erstellen + JLabel loadingLabel = new JLabel("Spiel wird gestartet, bitte warten..."); + loadingLabel.setHorizontalAlignment(SwingConstants.CENTER); // Horizontal zentrieren + loadingLabel.setVerticalAlignment(SwingConstants.CENTER); // Vertikal zentrieren + + // Schriftgröße anpassen (optional) + loadingLabel.setFont(new Font("Arial", Font.PLAIN, 18)); + + // Label zum Panel hinzufügen + add(loadingLabel, BorderLayout.CENTER); + } +} diff --git a/src/startMultiplayerGame.java b/src/startMultiplayerGame.java index e1d00be..44788ab 100644 --- a/src/startMultiplayerGame.java +++ b/src/startMultiplayerGame.java @@ -1,4 +1,6 @@ import javax.swing.*; +import java.io.IOException; +import java.net.InetSocketAddress; public class startMultiplayerGame extends JPanel { // Funktionshilfen @@ -76,7 +78,16 @@ public class startMultiplayerGame extends JPanel { PlayerTextField.setText(PlayerNickname); add(PlayerTextField); - // ActionListener für Buttons + /* TODO: Muss in Lucas klasse rein. + public static void startOnlineGame(Class localPlayerClass, String localPlayerName, InetSocketAddress + address, int size) throws IOException { + */ + + //GameController.startOnlineGame(...); + + + + // ActionListener für Buttons // SEMESTERBUTTONS semesterUpButton.addActionListener(e -> { if (semesterCounter < 6) { From 7ee0f9c0979454f080ce561556be0a8b88d0d02b Mon Sep 17 00:00:00 2001 From: Joshua Date: Tue, 3 Dec 2024 16:42:37 +0100 Subject: [PATCH 2/5] Added AI difficulties, and updated methods to cycle between them correctly --- src/startLocalGame.java | 56 ++++++++++++++-------------- src/startLocalGameLoadingScreen.java | 2 +- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/src/startLocalGame.java b/src/startLocalGame.java index f3374b5..5258499 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -10,7 +10,7 @@ public class startLocalGame extends JPanel { // Funktionshilfen int semesterCounter = 1; // Semester Counter Label String leftPlayerNickname = "Spieler 1"; - String rightPlayerNickname = "Spieler 2"; + String rightPlayerNickname = "Einfach"; // Grafiken ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png"); @@ -160,7 +160,7 @@ public class startLocalGame extends JPanel { } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { - GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerHard.class, GameController.semesterToBoardSize(semesterCounter)); } } else if (leftPlayerIcon.getIcon() == aiPlayerEasyIcon) { if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { @@ -168,7 +168,7 @@ public class startLocalGame extends JPanel { } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { - GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerHard.class, GameController.semesterToBoardSize(semesterCounter)); } } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { @@ -176,7 +176,7 @@ public class startLocalGame extends JPanel { } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { - GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerHard.class, GameController.semesterToBoardSize(semesterCounter)); } } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { @@ -184,42 +184,34 @@ public class startLocalGame extends JPanel { } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerMedium.class, GameController.semesterToBoardSize(semesterCounter)); } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { - GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); + GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerHard.class, GameController.semesterToBoardSize(semesterCounter)); } } } }); -// GameController.startLocalGame(SpecificAiPlayerEasy.class, rightPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); - // TODO Zwischenscreen einfügen ("Spiel wird erstellt") - /* - if (leftPlayerIcon.getIcon() == humanPlayerIcon) {// TODO Diverse KiIcons erstellen für diffs - if (rightPlayerIcon.getIcon() == aiPlayerIcon) { // Platzhalter da nur eine KI gerade exisitert - //... - GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); - } - } else if (leftPlayerIcon.getIcon() == aiPlayerIcon) { - //... - GameController.startLocalGame(SpecificAiPlayerEasy.class, rightPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); - } - */ - } private void toggleLeftPlayerIcon() { if (leftPlayerIcon.getIcon() == humanPlayerIcon) { leftPlayerIcon.setIcon(aiPlayerEasyIcon); - } else { + } else if (leftPlayerIcon.getIcon() == aiPlayerEasyIcon){ + leftPlayerIcon.setIcon(aiPlayerNormalIcon); + } else if (leftPlayerIcon.getIcon() == aiPlayerNormalIcon) { + leftPlayerIcon.setIcon(aiPlayerHardIcon); + } else if (leftPlayerIcon.getIcon() == aiPlayerHardIcon) { leftPlayerIcon.setIcon(humanPlayerIcon); } } private void toggleRightPlayerIcon() { - if (rightPlayerIcon.getIcon() == humanPlayerIcon) { + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { + rightPlayerIcon.setIcon(aiPlayerNormalIcon); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon){ + rightPlayerIcon.setIcon(aiPlayerHardIcon); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { rightPlayerIcon.setIcon(aiPlayerEasyIcon); - } else { - rightPlayerIcon.setIcon(humanPlayerIcon); } } @@ -228,15 +220,21 @@ public class startLocalGame extends JPanel { // Linker Spieler if (leftPlayerIcon.getIcon() == humanPlayerIcon) { leftPlayerTextField.setText("Spieler 1"); - } else { - leftPlayerTextField.setText("Leicht"); + } else if (leftPlayerIcon.getIcon() == aiPlayerEasyIcon){ + leftPlayerTextField.setText("Einfach"); + } else if (leftPlayerIcon.getIcon() == aiPlayerNormalIcon) { + leftPlayerTextField.setText("Mittel"); + } else if (leftPlayerIcon.getIcon() == aiPlayerHardIcon) { + leftPlayerTextField.setText("Schwer"); } // Rechter Spieler - if (rightPlayerIcon.getIcon() == humanPlayerIcon) { - rightPlayerTextField.setText("Spieler 2"); - } else { - rightPlayerTextField.setText("Leicht"); + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon){ + rightPlayerTextField.setText("Einfach"); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { + rightPlayerTextField.setText("Mittel"); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + rightPlayerTextField.setText("Schwer"); } } } \ No newline at end of file diff --git a/src/startLocalGameLoadingScreen.java b/src/startLocalGameLoadingScreen.java index c4d4569..7499e99 100644 --- a/src/startLocalGameLoadingScreen.java +++ b/src/startLocalGameLoadingScreen.java @@ -1,6 +1,6 @@ import javax.swing.*; import java.awt.*; - +//Kann evtl. als genereller LoadingScreen verwendet werden und nicht "nur" für localGame public class startLocalGameLoadingScreen extends JPanel{ startLocalGameLoadingScreen(MainFrame frame, int semesterCounter) { // Layout setzen From 15ff3034d377f23ccc0823b1a993b9dde86ea04c Mon Sep 17 00:00:00 2001 From: Joshua Date: Wed, 4 Dec 2024 11:51:00 +0100 Subject: [PATCH 3/5] Added Comments to MainFrame, Fixed functionality of left/right buttons after adding more difficulties in startLocalGame and startMultiplayerGame --- src/MainFrame.java | 3 ++- src/startLocalGame.java | 38 ++++++++++++++++++++++++----- src/startMultiplayerGame.java | 46 ++++++++++++++++++++++++++--------- 3 files changed, 69 insertions(+), 18 deletions(-) diff --git a/src/MainFrame.java b/src/MainFrame.java index eb308ce..9afa7d2 100644 --- a/src/MainFrame.java +++ b/src/MainFrame.java @@ -11,7 +11,8 @@ public class MainFrame extends JFrame { // Von startMultiplayerGame an JoinGame int localMult; - // Von startLocalGame an GameBoard + // Von startLocalGame an startLocalGameLoadingScreen + // Von startLocalGameLoadingScreen an GameBoard int semesterCounter; // ---------- // diff --git a/src/startLocalGame.java b/src/startLocalGame.java index 5258499..9b263de 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -2,6 +2,10 @@ import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +// TODO +// Evtl. ist Namen selber setzten noch unmöglich +// + public class startLocalGame extends JPanel { // Player //Player p1; @@ -118,7 +122,7 @@ public class startLocalGame extends JPanel { leftPlayerLeftButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - toggleLeftPlayerIcon(); + toggleLeftPlayerIconLeft(); updateTextFields(); } }); @@ -126,7 +130,7 @@ public class startLocalGame extends JPanel { leftPlayerRightButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - toggleLeftPlayerIcon(); + toggleLeftPlayerIconRight(); updateTextFields(); } }); @@ -134,7 +138,7 @@ public class startLocalGame extends JPanel { rightPlayerLeftButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - toggleRightPlayerIcon(); + toggleRightPlayerIconLeft(); updateTextFields(); } }); @@ -142,7 +146,7 @@ public class startLocalGame extends JPanel { rightPlayerRightButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - toggleRightPlayerIcon(); + toggleRightPlayerIconRight(); updateTextFields(); } }); @@ -193,7 +197,19 @@ public class startLocalGame extends JPanel { } - private void toggleLeftPlayerIcon() { + private void toggleLeftPlayerIconLeft() { + if (leftPlayerIcon.getIcon() == humanPlayerIcon) { + leftPlayerIcon.setIcon(aiPlayerHardIcon); + } else if (leftPlayerIcon.getIcon() == aiPlayerEasyIcon){ + leftPlayerIcon.setIcon(humanPlayerIcon); + } else if (leftPlayerIcon.getIcon() == aiPlayerNormalIcon) { + leftPlayerIcon.setIcon(aiPlayerEasyIcon); + } else if (leftPlayerIcon.getIcon() == aiPlayerHardIcon) { + leftPlayerIcon.setIcon(aiPlayerNormalIcon); + } + } + + private void toggleLeftPlayerIconRight() { if (leftPlayerIcon.getIcon() == humanPlayerIcon) { leftPlayerIcon.setIcon(aiPlayerEasyIcon); } else if (leftPlayerIcon.getIcon() == aiPlayerEasyIcon){ @@ -205,7 +221,17 @@ public class startLocalGame extends JPanel { } } - private void toggleRightPlayerIcon() { + private void toggleRightPlayerIconLeft() { + if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { + rightPlayerIcon.setIcon(aiPlayerHardIcon); + } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon){ + rightPlayerIcon.setIcon(aiPlayerEasyIcon); + } else if (rightPlayerIcon.getIcon() == aiPlayerHardIcon) { + rightPlayerIcon.setIcon(aiPlayerNormalIcon); + } + } + + private void toggleRightPlayerIconRight() { if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { rightPlayerIcon.setIcon(aiPlayerNormalIcon); } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon){ diff --git a/src/startMultiplayerGame.java b/src/startMultiplayerGame.java index 44788ab..e536744 100644 --- a/src/startMultiplayerGame.java +++ b/src/startMultiplayerGame.java @@ -1,6 +1,8 @@ import javax.swing.*; -import java.io.IOException; -import java.net.InetSocketAddress; + +// TODO +// Evtl. ist Namen selber setzten noch unmöglich +// public class startMultiplayerGame extends JPanel { // Funktionshilfen @@ -9,7 +11,9 @@ public class startMultiplayerGame extends JPanel { // Grafiken ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png"); ImageIcon humanPlayerIcon = new ImageIcon("graphics/humanPlayer.png"); - ImageIcon aiPlayerIcon = new ImageIcon("graphics/aiPlayer.png"); + ImageIcon aiPlayerEasyIcon = new ImageIcon("graphics/botPlayerEasy.png"); + ImageIcon aiPlayerNormalIcon = new ImageIcon("graphics/botPlayerNormal.png"); + ImageIcon aiPlayerHardIcon = new ImageIcon("graphics/botPlayerHard.png"); // Labels JLabel frameTitle = new JLabel("Multiplayer Spiel"); @@ -105,12 +109,12 @@ public class startMultiplayerGame extends JPanel { // PLAYERTOGGLEBUTTONS PlayerLeftButton.addActionListener(e -> { - toggleLeftPlayerIcon(); + togglePlayerIconLeft(); updateTextFields(); }); PlayerRightButton.addActionListener(e -> { - toggleLeftPlayerIcon(); + togglePlayerIconRight(); updateTextFields(); }); @@ -122,19 +126,39 @@ public class startMultiplayerGame extends JPanel { } // TOGGLE METHODEN - private void toggleLeftPlayerIcon() { + private void togglePlayerIconLeft() { if (PlayerIcon.getIcon() == humanPlayerIcon) { - PlayerIcon.setIcon(aiPlayerIcon); - } else { + PlayerIcon.setIcon(aiPlayerHardIcon); + } else if (PlayerIcon.getIcon() == aiPlayerEasyIcon){ + PlayerIcon.setIcon(humanPlayerIcon); + } else if (PlayerIcon.getIcon() == aiPlayerNormalIcon) { + PlayerIcon.setIcon(aiPlayerEasyIcon); + } else if (PlayerIcon.getIcon() == aiPlayerHardIcon) { + PlayerIcon.setIcon(aiPlayerNormalIcon); + } + } + + private void togglePlayerIconRight() { + if (PlayerIcon.getIcon() == humanPlayerIcon) { + PlayerIcon.setIcon(aiPlayerEasyIcon); + } else if (PlayerIcon.getIcon() == aiPlayerEasyIcon){ + PlayerIcon.setIcon(aiPlayerNormalIcon); + } else if (PlayerIcon.getIcon() == aiPlayerNormalIcon) { + PlayerIcon.setIcon(aiPlayerHardIcon); + } else if (PlayerIcon.getIcon() == aiPlayerHardIcon) { PlayerIcon.setIcon(humanPlayerIcon); } } private void updateTextFields() { if (PlayerIcon.getIcon() == humanPlayerIcon) { - PlayerTextField.setText(PlayerNickname); - } else { - PlayerTextField.setText("Leicht"); + PlayerTextField.setText("Spieler 1"); + } else if (PlayerIcon.getIcon() == aiPlayerEasyIcon){ + PlayerTextField.setText("Einfach"); + } else if (PlayerIcon.getIcon() == aiPlayerNormalIcon) { + PlayerTextField.setText("Mittel"); + } else if (PlayerIcon.getIcon() == aiPlayerHardIcon) { + PlayerTextField.setText("Schwer"); } } } From 0ef34e18ebf8351e6f6462006f186c73fde181e7 Mon Sep 17 00:00:00 2001 From: Kaver Date: Wed, 4 Dec 2024 15:38:10 +0100 Subject: [PATCH 4/5] Anpassungen/Erweiterungen an dem Spielfeld durch BoardDisplay und GameBoard Test Button hinzugefuegt um auf Spielfeld JPanel zu wechseln --- src/BoardDisplay.java | 53 ++++++++++++++++++++++++++++++----- src/GameBoard.java | 61 ++++++++++++++++++++++------------------- src/startLocalGame.java | 11 +++++--- 3 files changed, 86 insertions(+), 39 deletions(-) diff --git a/src/BoardDisplay.java b/src/BoardDisplay.java index 40c2238..360184d 100644 --- a/src/BoardDisplay.java +++ b/src/BoardDisplay.java @@ -1,15 +1,54 @@ import javax.swing.*; import java.awt.*; -// Erstellt Spielfeld für Spieler1/Spieler2 +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + public class BoardDisplay extends JPanel { public BoardDisplay(int gridSize, Icon buttonIcon) { - super(new GridLayout(gridSize, gridSize)); + super(new GridLayout(gridSize + 1, gridSize + 1)); // +1 wegen extra Zeile/Splate - // Buttons zum Panel hinzufügen - for (int i = 0; i < gridSize; i++) { - for (int j = 0; j < gridSize; j++) { - add(new JButton(buttonIcon)); + // Erstellung von Spielfeld + for (int i = 0; i <= gridSize; i++) { + for (int j = 0; j <= gridSize; j++) { + if (i == 0 && j == 0) { + add(new JLabel(" ")); + } else if (i == 0) { + JLabel colLabel = new JLabel(String.valueOf(j)); + colLabel.setHorizontalAlignment(SwingConstants.CENTER); + colLabel.setFont(new Font("Arial", Font.BOLD, 14)); + add(colLabel); + } else if (j == 0) { + JLabel rowLabel = new JLabel(String.valueOf((char) ('A' + i - 1))); + rowLabel.setHorizontalAlignment(SwingConstants.CENTER); + rowLabel.setFont(new Font("Arial", Font.BOLD, 14)); + add(rowLabel); + } else { + // Spielfeld (interaktive Zellen) + JButton field = new JButton(""); + field.setBackground(Color.LIGHT_GRAY); + field.setOpaque(true); + field.setBorderPainted(true); + + field.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if(SwingUtilities.isRightMouseButton(e)) { + handleFieldClick(field); + } + } + + @Override + public void mouseExited(MouseEvent e) { + // field.setBackground(Color.LIGHT_GRAY); + } + }); + add(field); + } } } } -} + + private void handleFieldClick(JButton field) { + field.setBackground(Color.RED); + } +} \ No newline at end of file diff --git a/src/GameBoard.java b/src/GameBoard.java index 38d8cf6..32d43c3 100644 --- a/src/GameBoard.java +++ b/src/GameBoard.java @@ -1,3 +1,5 @@ +import javafx.scene.control.ToggleGroup; + import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -19,22 +21,22 @@ public class GameBoard extends JPanel { JButton backButton = new JButton(backButtonIcon); // Eigene ModulButtons - JButton leftPlayerModul1 = new JButton("Modul 1"); //TODO: Dynamische Namen durch abgleich mit Semester - JButton leftPlayerModul2 = new JButton("Modul 2"); - JButton leftPlayerModul3 = new JButton("Modul 3"); - JButton leftPlayerModul4 = new JButton("Modul 4"); - JButton leftPlayerModul5 = new JButton("Modul 5"); - JButton leftPlayerModul6 = new JButton("Modul 6"); - JButton leftPlayerModul7 = new JButton("Reset"); + JToggleButton leftPlayerModul1 = new JToggleButton("Modul 1"); //TODO: Dynamische Namen durch abgleich mit Semester + JToggleButton leftPlayerModul2 = new JToggleButton("Modul 2"); + JToggleButton leftPlayerModul3 = new JToggleButton("Modul 3"); + JToggleButton leftPlayerModul4 = new JToggleButton("Modul 4"); + JToggleButton leftPlayerModul5 = new JToggleButton("Modul 5"); + JToggleButton leftPlayerModul6 = new JToggleButton("Modul 6"); + JToggleButton leftPlayerModul7 = new JToggleButton("Reset"); // Gegnerische ModulButtons - JButton rightPlayerModul1 = new JButton("Modul 1"); - JButton rightPlayerModul2 = new JButton("Modul 2"); - JButton rightPlayerModul3 = new JButton("Modul 3"); - JButton rightPlayerModul4 = new JButton("Modul 4"); - JButton rightPlayerModul5 = new JButton("Modul 5"); - JButton rightPlayerModul6 = new JButton("Modul 6"); - JButton rightPlayerModul7 = new JButton("Bereit"); + JToggleButton rightPlayerModul1 = new JToggleButton("Modul 1"); + JToggleButton rightPlayerModul2 = new JToggleButton("Modul 2"); + JToggleButton rightPlayerModul3 = new JToggleButton("Modul 3"); + JToggleButton rightPlayerModul4 = new JToggleButton("Modul 4"); + JToggleButton rightPlayerModul5 = new JToggleButton("Modul 5"); + JToggleButton rightPlayerModul6 = new JToggleButton("Modul 6"); + JToggleButton rightPlayerModul7 = new JToggleButton("Bereit"); public void buildPanel(MainFrame frame, int semesterCounter) { // Hauptlayout - BorderLayout für die Anordnung der Komponenten @@ -76,21 +78,24 @@ public class GameBoard extends JPanel { JPanel ownBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); JPanel opponentBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); - /* Alter code ohne BoardDisplay - // Buttons für das eigene Spielfeld hinzufügen - for (int i = 0; i < gridSize; i++) { - for (int j = 0; j < gridSize; j++) { - ownBoardPanel.add(new JButton(gameBoardEmtpy)); - } - } + //Buttons in eine Gruppe packen damit diese beim drücken eines anderen Buttons wieder entwählt werden + ButtonGroup leftButtonGroup= new ButtonGroup(); + leftButtonGroup.add(rightPlayerModul1); + leftButtonGroup.add(rightPlayerModul2); + leftButtonGroup.add(rightPlayerModul3); + leftButtonGroup.add(rightPlayerModul4); + leftButtonGroup.add(rightPlayerModul5); + leftButtonGroup.add(rightPlayerModul6); + leftButtonGroup.add(rightPlayerModul7); - // Buttons für das gegnerische Spielfeld hinzufügen - for (int i = 0; i < gridSize; i++) { - for (int j = 0; j < gridSize; j++) { - opponentBoardPanel.add(new JButton(gameBoardEmtpy)); - } - } - */ + ButtonGroup rightButtonGroup= new ButtonGroup(); + rightButtonGroup.add(leftPlayerModul1); + rightButtonGroup.add(leftPlayerModul2); + rightButtonGroup.add(leftPlayerModul3); + rightButtonGroup.add(leftPlayerModul4); + rightButtonGroup.add(leftPlayerModul5); + rightButtonGroup.add(leftPlayerModul6); + rightButtonGroup.add(leftPlayerModul7); // Panel für beide Spielfelder (nebeneinander in der Mitte) JPanel centerPanel = new JPanel(); diff --git a/src/startLocalGame.java b/src/startLocalGame.java index 9b263de..27b5b70 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -8,8 +8,8 @@ import java.awt.event.ActionListener; public class startLocalGame extends JPanel { // Player - //Player p1; - //Player p2; + Player p1; + Player p2; // Funktionshilfen int semesterCounter = 1; // Semester Counter Label @@ -40,6 +40,7 @@ public class startLocalGame extends JPanel { JButton rightPlayerLeftButton = new JButton("<-"); JButton rightPlayerRightButton = new JButton("->"); JButton startButton = new JButton("Start!"); + JButton testButton = new JButton("Test"); JTextField leftPlayerTextField = new JTextField(20); JTextField rightPlayerTextField = new JTextField(20); @@ -71,6 +72,9 @@ public class startLocalGame extends JPanel { semesterCounterLabel.setHorizontalAlignment(SwingConstants.CENTER); add(semesterCounterLabel); + testButton.setBounds(500,800,50,50); + add(testButton); + backButton.setBounds(1380, 20, 80, 80); add(backButton); @@ -150,9 +154,8 @@ public class startLocalGame extends JPanel { updateTextFields(); } }); - backButton.addActionListener(e -> frame.showPanel("MainMenu")); - + testButton.addActionListener(e -> frame.showPanelSLG("GameBoard",1,p1,p2)); //startButton.addActionListener(e -> frame.showPanelSLG("GameBoard", semesterCounter,p1, p2)); // TODO ECHTE FUNKTION EINFÜGEN startButton.addActionListener(new ActionListener() { @Override From 7a9b70c271ebbe9b54f86baf1a86d31e4ddadedc Mon Sep 17 00:00:00 2001 From: Joshua Date: Tue, 10 Dec 2024 12:36:34 +0100 Subject: [PATCH 5/5] Started making changes to JoinGame etc. --- src/JoinGame.java | 25 ++++++++++++++++++++++++- src/startLocalGame.java | 3 ++- src/startLocalGameLoadingScreen.java | 4 ++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/JoinGame.java b/src/JoinGame.java index b3ac5a0..3251d2d 100644 --- a/src/JoinGame.java +++ b/src/JoinGame.java @@ -1,5 +1,14 @@ import java.awt.*; import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/* +TODO: evtl an Lucas: die "JoinGame" muss noch informationen erhalten, welche Spieler erstellt wurden und welches Semester +Also die startMultiplayerGame muss JoinGame mit parametern für (HumanPlayer/AiEasy/AiNormal/AiHard, Semesteranzahl, Spielername) (3 Parameter) erhalten + + */ + public class JoinGame extends JPanel { ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png"); @@ -51,5 +60,19 @@ public class JoinGame extends JPanel { backButton.addActionListener(e -> frame.showPanel("MultiplayerGame")); losButton.addActionListener(e -> frame.showPanel("Verbinden")); + /* + losButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + frame.showPanel("Verbinden"); + //public static void startOnlineGame(Class localPlayerClass, String localPlayerName, InetSocketAddress + // address, int size) throws IOException { + if(playerType == 1) { //Beispiel (für playertape wäre z.B. 1 humanPlayer etc.) + GameController.startOnlineGame(HumanPlayer.class, playerName, adress); // + } + + } + }); + */ } -} +} \ No newline at end of file diff --git a/src/startLocalGame.java b/src/startLocalGame.java index 27b5b70..cf08aa9 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -154,6 +154,7 @@ public class startLocalGame extends JPanel { updateTextFields(); } }); + backButton.addActionListener(e -> frame.showPanel("MainMenu")); testButton.addActionListener(e -> frame.showPanelSLG("GameBoard",1,p1,p2)); //startButton.addActionListener(e -> frame.showPanelSLG("GameBoard", semesterCounter,p1, p2)); // TODO ECHTE FUNKTION EINFÜGEN @@ -161,7 +162,7 @@ public class startLocalGame extends JPanel { @Override public void actionPerformed(ActionEvent e) { frame.showPanelSLGLS("startLocalGameLoadingScreen", semesterCounter); //TODO - if (leftPlayerIcon.getIcon() == humanPlayerIcon) {// TODO Diverse KiIcons erstellen für diffs + if (leftPlayerIcon.getIcon() == humanPlayerIcon) {// TODO Wird name wirklich weitergegeben? if (rightPlayerIcon.getIcon() == aiPlayerEasyIcon) { GameController.startLocalGame(HumanPlayer.class, leftPlayerNickname, SpecificAiPlayerEasy.class, GameController.semesterToBoardSize(semesterCounter)); } else if (rightPlayerIcon.getIcon() == aiPlayerNormalIcon) { diff --git a/src/startLocalGameLoadingScreen.java b/src/startLocalGameLoadingScreen.java index 7499e99..c8f180a 100644 --- a/src/startLocalGameLoadingScreen.java +++ b/src/startLocalGameLoadingScreen.java @@ -9,7 +9,7 @@ public class startLocalGameLoadingScreen extends JPanel{ // Label mit dem Text erstellen JLabel loadingLabel = new JLabel("Spiel wird gestartet, bitte warten..."); loadingLabel.setHorizontalAlignment(SwingConstants.CENTER); // Horizontal zentrieren - loadingLabel.setVerticalAlignment(SwingConstants.CENTER); // Vertikal zentrieren + loadingLabel.setVerticalAlignment(SwingConstants.CENTER); // Vertikal zentrieren // Schriftgröße anpassen (optional) loadingLabel.setFont(new Font("Arial", Font.PLAIN, 18)); @@ -17,4 +17,4 @@ public class startLocalGameLoadingScreen extends JPanel{ // Label zum Panel hinzufügen add(loadingLabel, BorderLayout.CENTER); } -} +} \ No newline at end of file