From 07888eb9bd90d2af8d8ed922f977813edfd08826 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Wed, 6 Jan 2021 12:20:51 +0100 Subject: [PATCH 1/6] Sound wird jetzt in einem eigenen Thread abgespielt --- src/de/jaujau/UnitTests/TEST_Audio.java | 17 +++++++++--- src/de/jaujau/daten/Audio.java | 36 +++++++++---------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/de/jaujau/UnitTests/TEST_Audio.java b/src/de/jaujau/UnitTests/TEST_Audio.java index bb72648..e5ab97d 100755 --- a/src/de/jaujau/UnitTests/TEST_Audio.java +++ b/src/de/jaujau/UnitTests/TEST_Audio.java @@ -18,9 +18,20 @@ class TEST_Audio { @Test void test() { - //sound.spieleJauJau(); - //sound.spieleJau(); - sound.test(); + //Test Sound in einem eigenen Thread abspielen + sound.spieleJau(); + //um das Programm zu beschäftigen + for(int i = 0; i < 500000; i++) { + System.out.println(i); + } + + //Test Sound in einem eigenen Thread abspielen + sound.spieleJauJau(); + //um das Programm zu beschäftigen + for(int i = 0; i < 500000; i++) { + System.out.println(i); + } + } } diff --git a/src/de/jaujau/daten/Audio.java b/src/de/jaujau/daten/Audio.java index 165a321..af7c000 100755 --- a/src/de/jaujau/daten/Audio.java +++ b/src/de/jaujau/daten/Audio.java @@ -2,8 +2,6 @@ package de.jaujau.daten; import java.io.IOException; -import java.util.concurrent.CountDownLatch; - import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; @@ -23,11 +21,7 @@ public class Audio { * Spielt den "Jau" Ton ab */ public void spieleJau() { - try { - playSound("/sound/jau.wav"); - } catch (Exception e) { - e.printStackTrace(); - } + spieleTon("/sound/jaujau.wav"); } @@ -35,35 +29,31 @@ public class Audio { * Spielt den "JauJau" Ton ab */ public void spieleJauJau() { - try { - playSound("/sound/jaujau.wav"); - } catch (Exception e) { - e.printStackTrace(); - } + spieleTon("/sound/jau.wav"); } + /** - * Spielt den "JauJau" Ton ab + * Spielt einen Ton ein einem eingene Thread ab + * @param Pfad zu der Sounddatei im Jar-Archiv */ - public void test() { + private void spieleTon(String Pfad) { new Thread(new Runnable() { @Override public void run() { try { - playSound("/sound/jaujau.wav"); + playSound(Pfad); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } - } - }).start(); - -/* for(int i = 0; i < 500000; i++) { - System.out.println(i); - } -*/ + } + + + //Kann gelöscht werden wenn es nicht mehr in der GUI benötigt wird + public void test() { + spieleJauJau(); } From ae2ae87284260c85c714ecdb6596c12bc19738e3 Mon Sep 17 00:00:00 2001 From: ekresse Date: Wed, 6 Jan 2021 12:47:37 +0100 Subject: [PATCH 2/6] GUI Update 3.1 --- src/de/jaujau/gui/Dashboard_GUI.java | 30 +++++++++++++++------------ src/de/jaujau/gui/GUI.java | 2 +- src/img/texturen/standart/32.png | Bin 66023 -> 8463 bytes 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/de/jaujau/gui/Dashboard_GUI.java b/src/de/jaujau/gui/Dashboard_GUI.java index 6cc9e45..efc80f7 100644 --- a/src/de/jaujau/gui/Dashboard_GUI.java +++ b/src/de/jaujau/gui/Dashboard_GUI.java @@ -60,10 +60,11 @@ public class Dashboard_GUI extends JPanel{ JPanel imagepanel = new JPanel(); JLabel labels[] = new JLabel[32]; private Audio sound = new Audio(); + private Spiel aktuellesSpiel; - public Dashboard_GUI(Spiel aktuellesSpiel) { - + public Dashboard_GUI(Spiel Spiel) { + aktuellesSpiel = Spiel; setLayout(new BorderLayout(0, 0)); panelCont.setLayout(cl); panelCont.add(highscore, "1"); @@ -97,6 +98,13 @@ public class Dashboard_GUI extends JPanel{ ablagestapel.setBounds(618, 267, 137, 210); spielfeld.add(ablagestapel); + ziehstapel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); + aktualisiereHand(aktuellesSpiel); + } + }); ziehstapel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); ziehstapel.setPreferredSize(new Dimension(242, 362)); ziehstapel.setHorizontalAlignment(SwingConstants.CENTER); @@ -134,15 +142,6 @@ public class Dashboard_GUI extends JPanel{ highscore.setLayout(new BorderLayout(0, 0)); - - - aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktualisiereHand(aktuellesSpiel); cl.show(panelCont, "3"); add(panelCont); @@ -150,10 +149,10 @@ public class Dashboard_GUI extends JPanel{ } - public void showgame(){ + public void showgame(Spiel Spiel){ + aktuellesSpiel = Spiel; System.out.println("DASHBOARD: Game darstellen"); cl.show(panelCont, "2"); - repaint(); revalidate(); } @@ -212,6 +211,11 @@ public class Dashboard_GUI extends JPanel{ void aktualisiereHand(Spiel aktuellesSpiel) { + for(Component c : imagepanel.getComponents()){ + imagepanel.remove(c); + imagepanel.revalidate(); + } + for(int i = 0; i< aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).size(); i++){ labels[i] = new JLabel(); diff --git a/src/de/jaujau/gui/GUI.java b/src/de/jaujau/gui/GUI.java index 6fcbbe4..6c532e2 100644 --- a/src/de/jaujau/gui/GUI.java +++ b/src/de/jaujau/gui/GUI.java @@ -162,7 +162,7 @@ public class GUI extends JFrame{ public void mouseClicked(MouseEvent e) { aktuellesSpiel = new Spiel(); System.out.println("GUI: Spiel GUI geöffnet"); - Dashboard_GUI.showgame(); + Dashboard_GUI.showgame(aktuellesSpiel); } }); diff --git a/src/img/texturen/standart/32.png b/src/img/texturen/standart/32.png index 51250770cc86ca8a7495c2cb0679e369f4baa95a..c7af09e57a1b1f0c03b34faae443a546aed16c23 100755 GIT binary patch literal 8463 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 IM6N<$f*+^y?EnA( From 3bc679a6576bf61a5e8aae47d46947e2250067d1 Mon Sep 17 00:00:00 2001 From: ekresse Date: Wed, 6 Jan 2021 12:48:31 +0100 Subject: [PATCH 3/6] Update Image --- .classpath | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.classpath b/.classpath index afbfe1a..35b4612 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,11 @@ - + + + + + From 7cf8423cba53099df3bd7a39fc0b9f4bcbd07109 Mon Sep 17 00:00:00 2001 From: ekresse Date: Wed, 6 Jan 2021 13:11:52 +0100 Subject: [PATCH 4/6] GUI Kartenfunktionen Update --- src/de/jaujau/daten/Spielerverwaltung.java | 1 - src/de/jaujau/gui/Dashboard_GUI.java | 64 +++++++++++++-------- src/de/jaujau/gui/GUI.java | 2 +- src/img/texturen/standart/32.png | Bin 8463 -> 8894 bytes 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/src/de/jaujau/daten/Spielerverwaltung.java b/src/de/jaujau/daten/Spielerverwaltung.java index 7143e72..460d6b1 100644 --- a/src/de/jaujau/daten/Spielerverwaltung.java +++ b/src/de/jaujau/daten/Spielerverwaltung.java @@ -95,7 +95,6 @@ public class Spielerverwaltung { int zeilennummer = 0; boolean insArray = false; while (line != null) { - System.out.println(line); lineArray = line.toCharArray(); for (int i = 0; i < lineArray.length; i++) { diff --git a/src/de/jaujau/gui/Dashboard_GUI.java b/src/de/jaujau/gui/Dashboard_GUI.java index efc80f7..0903365 100644 --- a/src/de/jaujau/gui/Dashboard_GUI.java +++ b/src/de/jaujau/gui/Dashboard_GUI.java @@ -10,6 +10,7 @@ import javax.swing.table.DefaultTableModel; import de.jaujau.daten.Audio; import de.jaujau.daten.Spieler; import de.jaujau.daten.Spielerverwaltung; +import de.jaujau.daten.Texturenpakete; import de.jaujau.spiellogik.Anwendung; import de.jaujau.spiellogik.Spiel; @@ -35,6 +36,7 @@ import java.awt.ComponentOrientation; import java.awt.Cursor; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import javax.swing.UIManager; public class Dashboard_GUI extends JPanel{ private static final long serialVersionUID = -7380187913989942586L; @@ -57,35 +59,43 @@ public class Dashboard_GUI extends JPanel{ private final JLabel ziehstapel = new JLabel(""); private final JScrollPane scrollPane = new JScrollPane(); private final JLabel lblNewLabel_2_1 = new JLabel(""); - JPanel imagepanel = new JPanel(); + JPanel spielerkarten = new JPanel(); JLabel labels[] = new JLabel[32]; private Audio sound = new Audio(); private Spiel aktuellesSpiel; + private final JPanel gegenerkarten = new JPanel(); - public Dashboard_GUI(Spiel Spiel) { - + public Dashboard_GUI(Spiel Spiel, Texturenpakete texturenpakete) { + texturenpakete.addPaket("StandartTexturenBeta3.zip"); + texturenpakete.setAktivesPaket(0); + System.out.println(texturenpakete.getAktivesPaket()); aktuellesSpiel = Spiel; setLayout(new BorderLayout(0, 0)); panelCont.setLayout(cl); panelCont.add(highscore, "1"); panelCont.add(game, "2"); game.setLayout(new BorderLayout(0, 0)); + spielfeld.setBackground(new Color(128, 128, 128)); game.add(spielfeld, BorderLayout.CENTER); spielfeld.setLayout(null); - player_hand.setBounds(0, 660, 1269, 212); + player_hand.setForeground(new Color(169, 169, 169)); + player_hand.setBackground(new Color(169, 169, 169)); + player_hand.setBounds(0, 629, 1269, 243); spielfeld.add(player_hand); player_hand.setLayout(new BorderLayout(0, 0)); JScrollPane scrollPane_1 = new JScrollPane(); player_hand.add(scrollPane_1, BorderLayout.CENTER); + spielerkarten.setBackground(new Color(169, 169, 169)); - imagepanel.setAutoscrolls(true); - imagepanel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - scrollPane_1.setViewportView(imagepanel); - imagepanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); + spielerkarten.setAutoscrolls(true); + spielerkarten.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + scrollPane_1.setViewportView(spielerkarten); + spielerkarten.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); + gegner_hand.setBackground(UIManager.getColor("Button.shadow")); gegner_hand.setBounds(0, 0, 1269, 152); @@ -94,22 +104,26 @@ public class Dashboard_GUI extends JPanel{ gegner_hand.setLayout(new BorderLayout(0, 0)); gegner_hand.add(scrollPane); + gegenerkarten.setBackground(new Color(169, 169, 169)); + + scrollPane.setViewportView(gegenerkarten); ablagestapel.setHorizontalAlignment(SwingConstants.CENTER); ablagestapel.setBounds(618, 267, 137, 210); + spielfeld.add(ablagestapel); ziehstapel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { aktuellesSpiel.getKartensatz().ziehen(Spieler.SPIELER); - aktualisiereHand(aktuellesSpiel); + aktualisiereHand(aktuellesSpiel, texturenpakete); } }); ziehstapel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); ziehstapel.setPreferredSize(new Dimension(242, 362)); ziehstapel.setHorizontalAlignment(SwingConstants.CENTER); ziehstapel.setBounds(1093, 267, 137, 210); - ziehstapel.setIcon(new ImageIcon(new javax.swing.ImageIcon(getClass().getResource("/img/texturen/standart/32.png")).getImage().getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); + ziehstapel.setIcon(new ImageIcon(texturenpakete.getTextur(32).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); spielfeld.add(ziehstapel); @@ -209,34 +223,34 @@ public class Dashboard_GUI extends JPanel{ } - void aktualisiereHand(Spiel aktuellesSpiel) { + void aktualisiereHand(Spiel aktuellesSpiel, Texturenpakete texturen) { - for(Component c : imagepanel.getComponents()){ - imagepanel.remove(c); - imagepanel.revalidate(); + //Alle Elemente entfernen + for(Component c : spielerkarten.getComponents()){ + spielerkarten.remove(c); + spielerkarten.revalidate(); } + //Alle Karten auf der Hand darstellen for(int i = 0; i< aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).size(); i++){ - labels[i] = new JLabel(); - String path = "/img/texturen/standart/" + Integer.toString(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)) + ".png"; labels[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); labels[i].setAlignmentY(Component.TOP_ALIGNMENT); labels[i].setBounds(new Rectangle(0, 0, 120, 180)); labels[i].setSize(new Dimension(120, 180)); labels[i].setHorizontalTextPosition(SwingConstants.CENTER); labels[i].setHorizontalAlignment(SwingConstants.CENTER); - labels[i].setIcon(new ImageIcon(new javax.swing.ImageIcon(getClass().getResource(path)).getImage().getScaledInstance(labels[i].getWidth(), labels[i].getHeight(), Image.SCALE_SMOOTH))); - imagepanel.add(labels[i]); - imagepanel.updateUI(); //Panel erneuern - - - + labels[i].setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); + spielerkarten.add(labels[i]); + spielerkarten.updateUI(); //Panel erneuern } - - - } + + + void aktualisiereAblage(Spiel aktuellesSpiel, Texturenpakete texturen){ + ablagestapel.setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getletzteKarte()).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); + } + } diff --git a/src/de/jaujau/gui/GUI.java b/src/de/jaujau/gui/GUI.java index 6c532e2..5812d49 100644 --- a/src/de/jaujau/gui/GUI.java +++ b/src/de/jaujau/gui/GUI.java @@ -119,7 +119,7 @@ public class GUI extends JFrame{ getContentPane().add(dashboard, BorderLayout.CENTER); dashboard.setLayout(new BorderLayout(0, 0)); - Dashboard_GUI Dashboard_GUI = new Dashboard_GUI(aktuellesSpiel); + Dashboard_GUI Dashboard_GUI = new Dashboard_GUI(aktuellesSpiel, texturenpakete); //Spiel_GUI Spiel_GUI = new Spiel_GUI(); dashboard.add(Dashboard_GUI, BorderLayout.CENTER); diff --git a/src/img/texturen/standart/32.png b/src/img/texturen/standart/32.png index c7af09e57a1b1f0c03b34faae443a546aed16c23..95e21068cf78c8a3e2c7d70f9e4c8192b4f3cd41 100755 GIT binary patch literal 8894 zcmch7XIxXww=P9Ms)`g50YQP6js=ijMMR2#^xma}-m4%|q@x1TJ5oYVsG*n85)=pt zy+;TTdM|gs_xyk7e7yJ5`H;Pny?&E5GkZO=o>|Ytyw`X`P4SR|fPjGdt%{O1aNj2& zAauM<3VeIaOC|%{$lX*7JqZYCd;a|pdI;Pa0!##NmE=G8O>fWn`+Ycq4eXr^QV^yP zq)^-36X2**xt08y&{j)NOGxlT4J7jjy4h#kcm91wmCuO2xBvz*tBr1Y%=IvQF|5{iSXorv3Ev zG0jJ&U1^HsX`wr4-+d?9B$^=K{R`Gb#l`pD!4Ik*&aXVOcp%(;(AI@$<~o;sY#*ku zc;AA&=JqL-o3{Xb`%~tpB{`wTy(dbIE^~jUA$&10F;BU;Qj(J7tgJZp_V%7~a{g{| zx4vRbnl^ugT}#f%L0n&548q}$U%dD>GNShU`EzuW`xCa%%V*pgS-WJT2ko8+*qt__ zk?L)E4FXo85YhgqT&8RL&#Q}*75{k` z>}>kCY^ya|4^limsTAc1fdZS~BH{XIX6fD758)M6EnmHHsNePWnpvJ8X{0gvWm8)R zn-SuwJM2p*I+B{Xh0#3dck9JY>z(wjFgLN5J|@e9alh*M9PRwrX;>JY^~ zm4&l{Lb!3AO^le=-}fxu$-H+TJ{;Oz>WPVqv%%Ea=3xB`HK3U}#J_9huy4GJT4ynV89{_`eSlhfXq`+Ty!hz+%vECoNmSDsiz zv0@YrK^j5*FmKQ>g~uylq&TCP->yZ8Mz+ye?mlG7t3*ko&|$n}Bv&@qZZt!@@&Jc= zLB5|Yw||DsMOIX|tE#A|tc7;34O?FLWb-7CH!X%!ri+3y$bfg0TZ22-WL{Oy!KxGa z?GJLt#K(g(G#j0n9!ZziKh>sL>5ngbmnQfMJ5A*KgB$KEiCq@#xb%p;!)7LuyLokD zIY9GqT-jcw=#dn1CHW0&?O0@lRJ5u4DQvk%vzDEmy;>6ca3n({77CityXKbgyIa*t zLrV3@eZ?zM36b{|X4OaGvonhs)2|k&P`WnN($X4P?E2iiKg7p(^R3d5SUOO_;SD`TnO_riT#L*G3XNouQ!>b< z3DyLNR2mR|Cf%Tl`93bt7?itkuUNW+%FT0qq->T_&^&Nd+|30oeBpoWj8#y~Zrys0 zt*iHzFNZTpc&tXp#>II7$RQZ*lzsPf`k)Q3ps3h$f?qKASJd$LAA<^PEw~oDT5*{8 zvA=X8H4h=z6=~qqMpCm#eD8~8B#t99+t&q?Nn*P%j<=1QSNdn5hS7u)UNsmKe}7@G zUkd!%giqci97;c8MJuzC3Ol1~hJqWbOu+(FqAs($Hq~cam>Ta2L?ryqYUaw4|NPy@ zQmZyc=hM98b=WRSAvvW8b)vID&Bx*x)wQ?ZyhN2k@=##oafp+CmgjFd{M|gVyHi!B zk`g{!250#6EGndwbyz}NMB_qafBX{c1ZcpU7kIMM9)*n}WFZJR*)jFT`wg%prIO;? zDSINjAX5r1Rfq@`lBZ9fp0f6TA&4OW5M9|IhHe<7ShUZjhU3_-ExySTWW3x%Zb>+7 z8~Gh-HSH;%uHMgnnmqniP3=(HnJIGgFNdIDRku)^BmL!mn%mX`sl8iNtW=hkgpwv+ z$&f_0ko3>VKQy}fo5+{!jQu@=7j9&&c$PHPEOs^FP@&D zr9{xo;(8`KJ7GaVp4O9@oHQ~FMvIP4DLKi4Wjgr0Q&<1Yyik)3J{Ts{J{BRAtV0fW zUQ31Ro02e#8d%6)(b2F)raxfz{uA49Ccna#b8H z#{SHs={g`?k`W=hP>vvoqQQL8`1!LYP%I*{8`O9fiZ3f&1UFjz=E%I{w%wlLx`h9U49cmox^tB{+%82rr~$rqvl>w=#x|! zm6RBjPR_%Ua$R-T^}u=713LQEuZx0$d;`hL%Ei*f$5m$w-{k9X|3!_K7-QF`$0jsG zh|EL5_t~|Xx_K{1JUzi_E&4(q=N>92M1+T1xjwWTudzo)MzPkFL!&?B*;K`qAGHSy z``4+@KYVr9rDZTOr!%0&cc%gBp%Ohx;_$n>+bl!h{7bF1x0Mp2$kCLCbDv%xjow=w z)Qg{Qo#Oh^+i&D1)ZTQs!1vE5eEVnD_OK(|(gAX5f0+FVafXc6%?YWMA zIc(Zm8G%4V-scVq6>*jl=O8L5%y-ZU9h@zRS3ljHpA$3<*?XP&`v`3 zkx19dZqpN~7wj@gA=o5$Urx!4tJsZPRISg)6xtt$ih?$+pf zGFnhw& ztHtfcd~;bAHWEWen8SGGQ<;$24lu~rpoT!goA=81>sO0O-po*#HJKNVRQ9Ghp?Dgu zy-mYXr%}1AFLH!;o!nR-eRqwhGTm+L=&CeK`spxZ1gUe#Vl>IKHX4|Q^Csh3SR^e@ z-OzQMeizjtB$~3+mVFv~?ZLZ?pM^b3O#l2Hhe?j)-g*00qQpB%qII(l;sk{JXT?Vk z9XYq-m^c+LFAv7@i7yXwyV%>;7*78_`C5n6y7vm;# z>6k0WgefR4{eH7FALuPLshsL~vX+J-W_hqY_8wSgl;bJp#YE_qx=SFaJ#(i9(FU(8aH-e5ltvn1$@4KE$sG~-<-AW>Kyk@ zFH=Vcd}Siln=RS1+?SO8Yo(0V(6RSP;&&?do=D-~fL*BdK;?v>KrasuusBJi9>oQK zabHba7d1n9n}fR}Qi^fCF*TNoyU?Pi1`R6gdP&8~SJx+ce;9lZM!RIIjTzgbKTUR6 z96Nu+Xb)%sgMM~#Vto7HAohxhrZ&GglKS(^uxmS0+d}#?RH48TG`^CySrA>5Zxc;e zQ21FfE7R$qJhpX5f<;jmT-*<2t@f+-^P!GTvprfZwG2~w5z>M>%1#WUDDIA3!)$I@*6JS_#ZiDMwuF64NS7;PRiciXBj@HwKy`G zl4p@XhX;hoTnhWmAK9jLE!?9Of*U2sd8?mvdluCGl})0VgiToW4s6r^~U6ePYGOV-)O=v98Zhz4@IvR9DtFV(N!z ztF)!1(%T1;_)f8f&M%DTjU6}b!8a>xmRo3#&`2O(bX-rSUh(or^hALIKhVtvRK&YD z#D`BS_Gm)n=mZb@tpzyO^S&v|Lj) zF0A%;nt|HI&)whYxwDN$fkBgxk1{9SK55d(^1wy@?pivb5b2gvBB#9rGZ}l<1Jg=i zwykDtr+6z)iSv~YRf|_xb;t2dGNwlUg$(^_JvxPRcZH42+!UQhD0TE*eT283BA6@T zk+|)Uwhs7kp_bTZr$LshP`NAmo^8i!!E2}*6gg4W7-8)j0-S(CISU1jW6F|*;ufcF3(vOTq5$fI_3s5i$4+P{8vZU$2`S3cR8aRtLNe%Nwu z?X5to%tAukVjeNrP44{t$X9D^Rav-|hwBK zm*btkt*xQ%`J(&{^gA7McWQ<}vPgXe!_X)sxiF0QT?a!!$*lVux9FP{S-RzE1^Fu5 z`H&eqt?Nzwu?C)5PtEO96W@8JAcun__TA-J33JGoX*dKvW!^(Ac8Yz$CPS4es(ZOp z3eYS2L~2RU{Fb?&Cn9V7#zj8tsODlv;XVWDH|`l>!|1PsB!;SAqiYcS=1FOS5Z3h) zbucJkrx}$@&+Ozxc^c3{NeObEp5jT(2I($V^5fEZK`b&gwd*(MLJy>x4lPTi11rzl z9Dhj5IzPBv6LJIcnm(io94FE0_``QTY{rGppY5Q0td2A8k;CK(rQoisFGBG9`5bZ_E@+GgTJ^H(dQrtb7b8hG8>aqgp|H>MAS!k*_TlsUe;~0GXlp`4K94HT*!uKg3wwA|dg)+Dl-uC6j&Ht9RqS^-M+ePpuxa zVfhH7xdBf`s-8Fg*~cVxauE9cfU$fkuje9x+E1&MK|@3OP#BlG^H!54Thm_uc=as~ zin{Olzu^55X+n+eOCxHTMof(M!*i)nw3*huN>j?4Yq6m7GSk+q9M(2XrHIjP3i8@b zAFX7V3qYVl4=bvnuSs4uE6S%*z!A_dN7pBzpez2G+J*MuZPfy&sj=YGivo!84a^p-i=B0rh4XJnr!KHiw~?K#{KjVSKh02T=45Sci(JJoH=3k*yS zpoL$*S`P4NC^eUQc(W(SAr~n#zWRNd!6rL__i*Gz7dxp_0mRCFuK;3T}9GfXeW#Jl~H_Wa~z;SKm@JoAi#|7hk+M7-UoGs0`U zL^Mi*t6!q}p-5eD@IiTDf%9yW)|1xAGp`EE^>w4a36E+6-?GSTb=Zjuj81R2`u3o} zP+q%`b`nu>rm7Cs{`i9heHQ0}!NSC8RjyK_F|!YlD#qt8z~69dX`ryvX?~e`RI`Rg zq#3NTvDIOGG3ESdYI~vHE}rBvUd$^2821PYyt_95-P+bS$81$hOl(%y95E;p^eMcO8k_~FzQ*PyZZBvA(2l{c;c+Q{GN(m!sq?%mlonF$G*=Y!rPbYfX8mG^Qs2gAu-0LLBRGoYOtSg; z^GdGwdJq{=R4U2CmvGdP1YRn;(1_*Z4>;tVT}k|S$k7i-nJ*sth2+nla=Rv8nfaYd zbi1_IUyJ(T79WUh_{(e^U8gdl=4R1~%|&@WTThRzi$(WOZoWB#g05yt)el_R zq+7O-N!cuytQgESHi6C8r8jyJ+tnO>8=Dg%aq4Xr^!q00=DO>KX5o17n>WHKTBxJk zNWavu-eUUY1)lA&bfRlqvnN(a4~b2eVp>NEHDC3TpKiN?ix?ou#Z*EaTcJTc)IMYf z%&v#7fg8n}XOC{q({A>pPtbD{fhWf|T0g~gu&N*%9vzz^FgK;Jce&~6OxZVq2oj$c ztL1thY(O|qM6K;>*3enIApe}Xfyt?BdJ@B-U6e6rqln{&QSX|&1|99I$DOvaK{#?C zyF`~&xRh`_+CN;Df2iZfEu>?=l*KXvL>)ah)* z<&yaaAdeok&oKYY@q*tM#*FY^QA4RkTt40^8EJ zD0Cy20J`o+d+cT6Bk?O78MHK3=oL$o^seU?=Kf_H{y4F@`5FW^zF=dMHaf?V3Vywd z&e20cRaXPn!pOEzl!{T^onfNZo9Jhux2GZX1EZN2q4wikr^}R?g;KVv8`aEBp#d%N zBEB0$2kSp(#bnuBn)`MF1BL~l3zR~qxvmTIZ1B#dDtf-k)VmCJVqU!Ji=(-y>c$0! zSu|I&3b>#dB|8CZda!(CA#)z@cCWW*aszHU#U~NsjEwpoxivK@o?v_nZlYS!R(1E$ z7Ads`EOaqzGmZ+YprE>QpQ)@FmEmNnsg_Pq_$KXowm5BCSSPPc2PCSSr&Txzti>Ju-cy*QG)*nWeUpodt>3INxPdBsKH5?WE>kF|12RPa>n(}d}tTZ1qJn&+^Z3& zfcZ}K^E+%it{s8~1n<&}26ST?g#Cm~g1t9#{eN?`DjJ8hdj}lhupMt4EA)Jj6P?E= z?}RWfNfpZi*j*SlI2Xfwj zuK)Guf878$1iJ9wZvUrO|4RnI;eR{-|DKEwjjkQKNv}5>!imzKDatdHjf*;e0vprY zBui{Vrt;jaNeqh+s_*I@y>G53k5gF}39>vT2s!9~WKcX&ma};Z5U+)b=bbsFw1!36 zurn^N4I%;K?hCx)$A3nC5(D+&t%YjfO@U9~PuzN_g+rv;4rqe*NKCx$sbzhfF=}|9 z^x6?pnj1;RT9a}z$ZdJ-{6Lt%%F1Hf=r2YGWRq+Jx(c9lwBm4{A?4HWPGTPeGZz)f zd3iw~$p-`;o}S*?N{9&{Kd&Y_RfUmKSMr(~+`hTA{}J_yk8k*7*Wz{!qXm8*Cc(pD z&&%G`e&N`_EQ&sHgzMPZmEbLvZzqx00A;Xjy5tw$H&x6E#K-qeJhqBtRu1f zkLqeLd*`(kwf#Mwdb$YNOTwxaik)_5Juroz$FfrEd#e>?gBH4nqLF_#`x$F1-s^b`2Gj8IcX)SqcM#UZb1}MFX`ZqYIXb$1y%fdv+y;IZ zm|UHY00%nX?b$74`w=9=J)ml7KG_m@G8BjhGzgvd?+I#%UJ>18*u4zOyO?eE1YqRh zw<`}vMgbHNE5Scfm5Z+Jk?1jkHWarCwpMy9_#SUzZoP~luQVbyx$PVm9lZ;vJ?jt$ zKp0Y8Eh^wJsO#;I7izwx9A5|BWp?f4&OPOJfBhP>TU+fo*X+5A0|??<7UA9?WmJ{v zJ7kV@w&%`2W32FhKpj6nWeQt{-@jKM-0GPvDe2oskFd45+?^8lf;YeYmSx;>7}e1a z2u3W>$WC*j&&HLWS1PA5n0NcOh_w*oS{(y8$pI}hSWIfmS{-XifzSG;S4l>)6kb4V3`|px%QvHSDav+|EWgl`u*AM1{W4^%Xw!J}YZg zJ-4=EU48w=??SSfMpv>XX20@NnS9&J9sADFva+(;jg5`CN8;LVbc#sn=;@yULqSy< zt_-gUg%#|Rp1s=5$NH~KfsGmG+x$HRE4I3X?}>u}{WK9!FqizzxO|GO$|~snO8v8I zJNYavE&0vb(9Eyg@)9alMEuXz(wM|t9_3)yB(bDKY(F5?`Uz8k5BzF?#+8Qkkp~D# z%{K-`UxSY^_J_DBB#U&wgrs5i^+nmSkR$({IsyVBn}5#&AhWqxiRQ)K773=z0tEnF zdqRt$Ou-3NX?eQ4)P7gix8-h{7@Vew9$n*&(+fEKE3f)msDv(Ado)Knldrn%kFAZ3 zUnlLN*xDIvfBu4p>@SY*XA~9Fa*1YcRiU8v+bmDDjF&O)EB$Ax%l2WGav}a9vWHaj zxLdotclADem~j1F@Y>AC=;4%!Cv|>)zQlbF+4mY6G=Pl02571S2W>=)vSBy*-z`gq zZr5p2)bt&+S>jM&%FvsulZ`*clz`?n!E{et@n2b9Y}SpKE%@+W4wl6W5l>)NjX;i3 zqp4pZ556iVvTlolriYkbDw`w?oKgDPR6lxeHUJ@FLpH!}`nmB3>&gDK+h_3xQtACRf!VZ^V zBoZTh^66a=e#JirHxFwCLP%_Rd09nOl|x1*r?*#Wd1d9Ts%n8&q4K%;WAB1ee;}c4 z%`_$+9(n;sAXGFpxuvDEshLH0fe9wtF}qdSjY4M-Z94sQJ?|tPS4e(HQMV_x-@x!Lc_R9bpq+N`!p4$45Tl n12y&1d*x1+9Rx*jRgKXJ^S`m}p&=)qZ*ulxM^MIDZw)11US2MY!DA_SrlzJExdy6%$rE_D;O@})k@}T+ z1+=83-KL zygTjJEPL9ir6&4DQ`5W}T4mB<+~Pn^L815NO`pD&K+MOFUM?<3Yg=2%pFhvcLg(h@ zIxZI+79O9h_+J?zQjb%YmX? zhzg{&g98H{9mMSH!#ci{uTZ%f{JY124#@xZ5(a~{SyYsN{hF1XjdZx$u?jk%ekmcZ zV752tospRtiBE@TI{WpFSL}rxoj)qQpx``+P2@c^K{5QdYf4V+{zSesh?<&u#@>Uf z2ExHHYwYKCcYRt}saQmGb48Zp7cW!d_!3w!9WZq>l+(Bs+EOw1FKr1j?f21E z10O|$xGdnieL{?ksGVck!onSEMlGlkQBee_lGm38UA?c#`98G7&WL{f`gLSci% zcEl!v^CwOBG!YriD!F3*$jHd7tgNcpLRO#B(x8ThOMtScln)8NV8NggFh8?SOE+5; zo1b4hF#{@SnVQlE0bXgi(zp%F^n7;`4Z1(fS=dN^dj)1d)+){`jtDP4{<*!4mRDLT zucNLG>YSeb?uM)z2HdI>Ge_`zH-#pZ7{lgRzsu#$O z<>loC^6~L8uc({DbsyN9P7|k7QGtF(BWCXI{kckqLmQhxdH3rvWx&vh@fjGUzW#do z*U7xa{CD&uW-u7V(QygY(z~*<(%b>2&5Gph?d|SP$jA4RN7|J;CxG(!IAPe#99c`t zmY0R?I}s|Ini>vO#G0vcIzzy7LGszzM(@NLrosuhASb7q4iq}ygz)V~%@U4W&}U@K zD@H>gfclPj!oq^Dy1EPEswxaI{rv9w1FIiqvTTg_Ad3p1iDS?G# zk?`bKR(|PKDY&yx7Zumn73%D4dOsKi^9TrNpVxP=SiuC#(u+_N6585MWI~e7ch$op z7{DkH$b1{s@o}T;lj34_F^ZVFI=-Nc49e4pUs7{93JIx^2Xpz_1@)xy@h9hDxpddN zNc#Z`HsopU{*tTjLr*s~^f1N6QBm`}oIa;+ItBI|{%G`!^C-TRKqPbOYIhetuAcp1vn5 zE94^Nl9B_%JqXyziG(}vuqyl=tc90|0pt3&lBG?I9RlrURjpQ91y@lqAw60tRb4x5 zvXILQA{%eHRc6z#uLP5oMZ>~U*F>(<7g%1PjE~=)#cpqZdEFBj9ZTg^7 zRl@|&08Zu=(c}&c@Qi<*{w|wW=pq08$G@Nb?~DIk@xROeXz2fK_}{(#Z%6-G{zoT3 z|Nkx@$h}d(bajQI!Ee^hZ6X_1ttny^3+|N&P!R>0GqaKqIaR!+B`8i0x;}%MgTMIG zr+GDm;tvCg)x^IE6qHbcrc3lN;Wy7drD1^PDr<;hFQk9YbAd|B%$}1UM9Szw&Msze z=Jmy^DXD6_Yar7)I@b?=)(i8N?7@Ua&0$S$iJuwU->?u+#c)|b$>BG_b@n7H{$w5= z8;b$=)q&z@xb~t3TEwck@G`A|k=GI+i`8a1&2laW(#v0SDww!^$IH&n6PX-5 z#0LnoMgFH`C=$O`qCQ4`#6Ot3Xy?;6SBY>r%6RFV2igrNCpqSa|Mkw6-77v7DKX%M1nZrEKGO-d>uvpjREif&_LZKr?3h4G7= zy?yufsi2Rhz}63&8i&;5cb@$4*vaAZiF`rVu+-geb;n%=g%{lK?4s)&Je>F_!y+5T z&TA~3UCp;*BhklOw&A$%&l6WZzj9kUuJpUz5#QX9Sza`5bKWK38HHZG{nZ9IyS5iR zHv7iR&)0`Jo$m387VEouLal%)MrVUWl$3ZArp_y-<$c9UN!eK3n;&5J#aqW*mDPwm;d~ zi8*-TA;~<7d9R4f$x+ZuFYK2WO#*`TIofIYurm4A5yXo~Psuia1={?W$J{&J9`6r) zD7kLVM|!*~IWBB+I~`<(?X0$>@>wwdl+2qnJ%rvJn1Bcfg3fj>09a~wxLD%HmMm2i zl1(!VSCt>Pwu_#Jo*(0a1_zsIgcGMT;o4jjYRHo>iD@y?sFx1<^-oZdc| z!>OxoaJcOHoJn{V_31m!PcO|v8sRH#;juW5xGU=U!$ZS0o*evdC$cs7w<8{JI7hOg z^YY@^cVjr|lQ-(-gieKLX3cihzm%W^H3&cqgW_--MriE%VH5|#LhcyfZ4Qv%nFZrg zolGeucob~v==u1OKS6r+YG6P@7R_-~`A|8oZ{OeNsNz(cI3=Q~Wt zjcU-q@Ur@7>-?C*xQ&+bLvG;qrCEir!z9Dq>f>@-h&qd@12!=+%hP6_3|7{OrPv`w zZSC52v0{?4r@_JG;?-+7jn*0v*7+9n&E45WjPs?9>v>_A9J zOYBD&0tN@Pszu#FNX?Isc)I>1wQsCfwlJU1H5OmXPyg&-U{1EUb^>so%P9vk&Dq+i z+<%l~}-Wc=?bd^e7-E z5gmc(?GOwWRw++@Zl1&xrj=But7GA@)%mD~m2P+($khG=zIgAa=P*t>@FlE;l?^)} zz*pc=oduW=HMPdZ&INq|qe4j|ny=*=TA{yPKPTsZL1leIWy2mGW;)3b7G5{zphIfx zjbt+>!O&G}2dzO4MR&t?&vROyN||WugJXGm`r;4nZm3lmcZWRjwejWU2kafw(^D!} ztb5T3yR582XdIJEtcYlGa=w)!IXT-fL@Joef`IbFU=o*m>55#(T?h%=+EH9O&*{&k zLs$3qI_nBy>B6qAP(fEzo3XXuTP-w-pXDdY$=>^OxwAyz_eT+)T-g{?9MD#kVfy$C zjLO)($jDIFLSbV|%j{X9g+Kr-0^m9#i~ArzWsPZbypfrx!ACwd+x&agpNNz*P)$sF z`#hMYM@L)VeVyb&(9~N-dn3(lk4D8i&grSMlEl;W{ND23f5Gzf%!w2>R#xonmwP`A5?>S_w5=AtS5j##A>E+oE)nms8`{(b(T=L zNuZ29>xT~$6CiZ-)_Z>0xT#DPf|II1z~Wsl*&#+#eqT!K_>@%uw5+6rfxN#D1S;^j zp5Ex@#WezpWtE|!YHQqwO97T-kf~X)%jQcvqGHv)JjtsaT~<~=EuigLR3#`ij&|Pi z0N(3bF%~hfm|-y+r_C?ket6Ugyh$=OXLw5Hc6*YQfM;*psl;j4k9P`ddZo>}yavB_ zypP?XF~{2pD@q9?8hC8iN?U2=@$u@HdQzJ)dLc@Se)AL4 zyAzb{QR(-skm*)Bla}sL1Z8Jm3C6S68pe?n+enZ27cgy$T%{ms3u&(+H{G=hf|fmp4e;NmSe#ZT9?3@J!t zXz2W`r+b+85D_=x^-&bxNA4*gPAHC?0E-j3Zhg2ejR{7HjQ#Q&U5%4UZ#y3s;&m*a27bSr)G<9DiTGpe zl;-@R#S~*3wtIPb;%8J4Dd|Svu8+@#)>c-Q&}D2$7;2VC^uB##li9xZ`F_!DX*Gdv z6>?B^b|a_XeY3YmODfsT83|VvgZ&w-HGN> zi%G$->cG49dr}9)ZZ<6|2DAaspq|{7gDxOy9@_Q-7Z=({U^C{7UG4NP3+gbM77UjA zD^gr^YUdi#f4H-u7K>doJzX6~z?P5!5FDJG>`h#wCLZ1(5P?HjMc3*xZCY;Y7?DJr zl|`RyzNIM7NPrp^9!+CwUV+QWRO~T?`xy8Ib1Zi*bINt;0U;MnXz|XpuMdE}SC($z zCKr_G=n30iNqqB)I04o$nV4!%n9DC-Eu%PHstePr0A^e-@(RmlTLohYlpGhiz~mr}Vz{y5Otg)eOhck9+&N>v~zbLLDE!@wTk2(HY6u7+O zh~K=vjxu}K)PE99JTMww_5x91*G7ttZZ!RHP?a$3azcN$FxmDf*8`99EitRT1BUFF z^KieIQ?i9aAW2|ocrNy7@O%t2`h&e6CY#Rg7*S2NtzS+Gj|3JLDlu`}$B|JVRg7^= zyWzthX<}^`y@cTEfVShKlHC2}RxqGVTL9`a?l3<#Y*R~R@7ny>@G!(P4s6P&byC4r z!{=i6%fIx;f9-#mGns3k zXAksJ;@t@(xhJ^=`xi%Ww1$$mNLWSG-j04!p7NYLN6zN?|F-P!jfiP@q%4ABA4 zmyU{&_7|0s=JI5}JS6m692Y4($P2upQOyd7zlHcm`R|AS zl4MUZHMtKu-BVOUn90wDICpMxMzXVu#KdnGBj!xx>|O{zJMX;N1&ch2 z7za>raR~;}hN77b5{+b{qocz!Xq68T>-SfLB;jw$t3BAHq}SJidS8oNlHVfEO@#t! z!E)WpG<$o3F34tP7&yJ-;ynNz=kLGH7T{v#;HFok98y}u?GFp; z={jZFpu?jh6%i2;(9fNn?`tzOOUrf3C?I(Sq@X23X^xi0M)IJ{%*^PR80?_#ZYk2N z=AMl{XZPN89?;3{DoUqARhL9|cx$T&2*|fE<>cgmJ}W-QR$cCzB{8U9+mJDA3UO-h z3PKtf?ZX!*udeg-@ZfXt^t5(RS!QKGF4r;ZL7QJNpJfH9m&Z-%e|J(@-X9fM--#Sj zy#8Z$Vmgw&_*+2{3y(TTaW=h(l!PQ2R#)!?^H;OPX=?J`p;68VYgi!?o&^z*JfWg8 zY>x%Ync9_Q13MVV!{g+vXE2GzII-Tt)5|NBTG*4FmzS4?Wp}B`Z3$%QOo=NZs-Y86 z%7R0I%*;GsSzQ|@8=67+Ir$kU{*NC3EM08}T;!?X=HU+(_TGGH8iUk^1}_~Q9dq-7 zFZK0^$;q1HVkQ9rUEz5-OQ?XO>0Y@==TrB{#aD zFspUXl2}`pRsbSRY5v>-*x(p4i$AV2v+GG}&i6u^nrmCL>Cni?NR$MOkUVWxQBhG? zMTMfG;s~z$0-FY#hsS(9u3S7l7=@LDoqcTsnT`(i$$B*N%lD0fI2%A+={@_pg~34u z*5t3+tU$sl-E&-{Wtg0fj*gTRjw=B-b;OhGM5i-dlW5x`A+fb3Fu|un42IJQxtEre z*#Y?setv$CyU}HG0w7xR!41&YqF=U*0 zv?6I7xE>l($lIemTf--3(pARQ4UvB_y`G*g`NHe!1OZl#l?_0V&6L*G&d#0ZdjNYK zAMd?i=2x|KeY*MV*)va1Pdz<7tZ=C+;(|Ko^=^*?gp920@nXYAgK(UJJdkcBy)f02 zC#6+#0OzpWi&|e_T^F8248*W|(Eta}v@t-)$hbDEyGXm0>0 zDlo3V#>T$A`ekBd0L<419bXnh$HH zu@r?~?%R+6AmwK_UEI{t0;CHK8fqUKE@5>me!oOPV7d5;@^Xt`3BKQ^rZj=I2OS__ z4i_2+(DK>+cK=)CG+{3Yww$PrmR6FdnoDmKA&_~wimIc>7#tj2xO{)KP{&Spq3qOl zK?)KOXvoUSS`?SbT>a7J*YKJlQL#w;{+yUiUUU=zGeAm9PtO+d`8G=7T;c>VsK*Hk z4V4C9^MSmm9AJ>);ZK69+Hdw%&(VPUAcy1F22QufB-w_Y(G zR#sM~rg`r`Zt-%EyO)h6PfSSY)YrO-iitTpJ40F9-Sr0a-!lOF$VAfB_1mR9ZV)iNM$PWg zGR&K=fYoVq*{tHoFg`WCyogK}<|c->paYCx)UHz z2M6sg_Gf91ZVHGUIM~?@8=dph)6+fW?~-+m0lz(M%ezE7(gob|9~ZlQt6L?) zJJZn=5)x9?@!$*StE;rQ&?j0)tniJdot)dtMJFXiMVw@KWj&&yysApvV_)0a+FC Date: Wed, 6 Jan 2021 14:25:00 +0100 Subject: [PATCH 5/6] GUI Erste Spielimpressionen --- src/de/jaujau/gui/Dashboard_GUI.java | 74 +++++++++++++++++++++++----- src/de/jaujau/spiellogik/Spiel.java | 12 +++-- 2 files changed, 72 insertions(+), 14 deletions(-) diff --git a/src/de/jaujau/gui/Dashboard_GUI.java b/src/de/jaujau/gui/Dashboard_GUI.java index 0903365..46685ab 100644 --- a/src/de/jaujau/gui/Dashboard_GUI.java +++ b/src/de/jaujau/gui/Dashboard_GUI.java @@ -22,6 +22,7 @@ import javax.swing.DefaultComboBoxModel; import java.awt.Dimension; import java.awt.Image; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; @@ -36,7 +37,10 @@ import java.awt.ComponentOrientation; import java.awt.Cursor; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + import javax.swing.UIManager; +import java.awt.Font; public class Dashboard_GUI extends JPanel{ private static final long serialVersionUID = -7380187913989942586L; @@ -55,7 +59,7 @@ public class Dashboard_GUI extends JPanel{ private final JPanel spielfeld = new JPanel(); private final JPanel player_hand = new JPanel(); private final JPanel gegner_hand = new JPanel(); - private final JLabel ablagestapel = new JLabel("Ablagestapel"); + private final JLabel ablagestapel = new JLabel(""); private final JLabel ziehstapel = new JLabel(""); private final JScrollPane scrollPane = new JScrollPane(); private final JLabel lblNewLabel_2_1 = new JLabel(""); @@ -63,9 +67,12 @@ public class Dashboard_GUI extends JPanel{ JLabel labels[] = new JLabel[32]; private Audio sound = new Audio(); private Spiel aktuellesSpiel; - private final JPanel gegenerkarten = new JPanel(); + private JPanel gegenerkarten = new JPanel(); + private JLabel label_aktuellerSpieler; + private Texturenpakete texturenpakete; - public Dashboard_GUI(Spiel Spiel, Texturenpakete texturenpakete) { + public Dashboard_GUI(Spiel Spiel, Texturenpakete texturen) { + texturenpakete = texturen; texturenpakete.addPaket("StandartTexturenBeta3.zip"); texturenpakete.setAktivesPaket(0); System.out.println(texturenpakete.getAktivesPaket()); @@ -107,6 +114,7 @@ public class Dashboard_GUI extends JPanel{ gegenerkarten.setBackground(new Color(169, 169, 169)); scrollPane.setViewportView(gegenerkarten); + ablagestapel.setPreferredSize(new Dimension(242, 362)); ablagestapel.setHorizontalAlignment(SwingConstants.CENTER); ablagestapel.setBounds(618, 267, 137, 210); @@ -135,8 +143,20 @@ public class Dashboard_GUI extends JPanel{ sound.test(); } }); - btnNewButton_1.setBounds(293, 346, 89, 23); + btnNewButton_1.setBounds(26, 197, 89, 23); spielfeld.add(btnNewButton_1); + + JLabel beschreibung_aktuellerSpieler = new JLabel("Aktueller Spieler:"); + beschreibung_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18)); + beschreibung_aktuellerSpieler.setForeground(Color.WHITE); + beschreibung_aktuellerSpieler.setBounds(435, 163, 156, 31); + spielfeld.add(beschreibung_aktuellerSpieler); + + label_aktuellerSpieler = new JLabel("Auswahlphase"); + label_aktuellerSpieler.setForeground(Color.WHITE); + label_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18)); + label_aktuellerSpieler.setBounds(601, 163, 163, 31); + spielfeld.add(label_aktuellerSpieler); panelCont.add(start, "3"); start.setLayout(new BorderLayout(0, 0)); panel.setPreferredSize(new Dimension(10, 30)); @@ -156,19 +176,21 @@ public class Dashboard_GUI extends JPanel{ highscore.setLayout(new BorderLayout(0, 0)); - + //Erstes Panel wird angezeigt cl.show(panelCont, "3"); add(panelCont); renderStart(); //Startseite beim ersten öffnen aktualisieren + } - + //Spiel Panel wird gezeigt public void showgame(Spiel Spiel){ + //Neues Spiel wird übergeben aktuellesSpiel = Spiel; System.out.println("DASHBOARD: Game darstellen"); cl.show(panelCont, "2"); - repaint(); - revalidate(); + aktuellesSpiel.spiel(); + aktualisiereGUI(); } public void showstart(){ @@ -215,9 +237,7 @@ public class Dashboard_GUI extends JPanel{ }; table.setAutoCreateRowSorter(true); //Tabelle Sortierbar durch Tabellenkopf table.getTableHeader().setReorderingAllowed(false); //Tabelle nicht mehr drag and drop - table.setModel(tableModel); - - + table.setModel(tableModel); highscore.add( new JScrollPane( table ) ); @@ -240,6 +260,15 @@ public class Dashboard_GUI extends JPanel{ labels[i].setSize(new Dimension(120, 180)); labels[i].setHorizontalTextPosition(SwingConstants.CENTER); labels[i].setHorizontalAlignment(SwingConstants.CENTER); + labels[i].setName(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i).toString()); + labels[i].addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + aktuellesSpiel.karteLegen(Integer.parseInt(e.getComponent().getName())); + System.out.println("Karte: " + e.getComponent().getName() + " ausgewählt."); + aktualisiereGUI(); + } + }); labels[i].setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); spielerkarten.add(labels[i]); spielerkarten.updateUI(); //Panel erneuern @@ -249,8 +278,31 @@ public class Dashboard_GUI extends JPanel{ void aktualisiereAblage(Spiel aktuellesSpiel, Texturenpakete texturen){ ablagestapel.setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getletzteKarte()).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); + ablagestapel.revalidate(); + ablagestapel.repaint(); } + void aktualisiereSpieleranzeige(Spiel aktuellesSpiel) { + if(aktuellesSpiel.getamZug() == Spieler.COMPUTER) { + label_aktuellerSpieler.setText("Gegner"); + label_aktuellerSpieler.setForeground(Color.RED); + } + if(aktuellesSpiel.getamZug() == Spieler.SPIELER) { + label_aktuellerSpieler.setText("Gegner"); + label_aktuellerSpieler.setForeground(Color.GREEN); + } + + if(aktuellesSpiel.getamZug() == null) { + label_aktuellerSpieler.setText("Auswahlphase"); + label_aktuellerSpieler.setForeground(Color.WHITE); + } + } + + public void aktualisiereGUI(){ + aktualisiereSpieleranzeige(aktuellesSpiel); + aktualisiereAblage(aktuellesSpiel, texturenpakete); + aktualisiereHand(aktuellesSpiel, texturenpakete); + } } diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index 58a28e2..d24dd79 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -52,13 +52,15 @@ public class Spiel { * alterniert zwischen Spieler und Computer, legt Beginner fest */ public void spiel() { - if(!spielgestartet) { + System.out.println("Spiel gestartet."); + //Spiel nicht gestartet + if(!spielgestartet) { Random zufallszahl = new Random(); int zahl = zufallszahl.nextInt(1); if(zahl == 1) { //Starter durch zufall bestimmen amZug = Spieler.SPIELER; } - else { + else { amZug = Spieler.COMPUTER; } spielgestartet = true; @@ -73,6 +75,8 @@ public class Spiel { kartensatz.ablegen(kartenindex); //nicht in der Hand befindliche Karte zum Start aufdecken return; } + + //Spiel gestartet if(amZug == Spieler.SPIELER) { amZug = Spieler.COMPUTER; if(spielzug.zugMoeglich(Spieler.COMPUTER)) { @@ -85,7 +89,9 @@ public class Spiel { } } - + public Spieler getamZug() { + return amZug; + } /** * falls eine Karte gelegt werden kann wird diese gelegt * @param kartenindex From 25e34f7def0ea3a2f28cc331f8d843c9c9514c8b Mon Sep 17 00:00:00 2001 From: ekresse Date: Wed, 6 Jan 2021 15:38:48 +0100 Subject: [PATCH 6/6] Update 1.1.4 --- src/de/jaujau/gui/Dashboard_GUI.java | 84 ++++++++++++++-------------- src/de/jaujau/gui/GUI.java | 1 + src/de/jaujau/gui/Hilfe_GUI.java | 1 + src/de/jaujau/spiellogik/Spiel.java | 7 ++- 4 files changed, 49 insertions(+), 44 deletions(-) diff --git a/src/de/jaujau/gui/Dashboard_GUI.java b/src/de/jaujau/gui/Dashboard_GUI.java index 46685ab..952d2b7 100644 --- a/src/de/jaujau/gui/Dashboard_GUI.java +++ b/src/de/jaujau/gui/Dashboard_GUI.java @@ -61,17 +61,20 @@ public class Dashboard_GUI extends JPanel{ private final JPanel gegner_hand = new JPanel(); private final JLabel ablagestapel = new JLabel(""); private final JLabel ziehstapel = new JLabel(""); - private final JScrollPane scrollPane = new JScrollPane(); private final JLabel lblNewLabel_2_1 = new JLabel(""); JPanel spielerkarten = new JPanel(); JLabel labels[] = new JLabel[32]; private Audio sound = new Audio(); private Spiel aktuellesSpiel; - private JPanel gegenerkarten = new JPanel(); private JLabel label_aktuellerSpieler; private Texturenpakete texturenpakete; + private final JPanel spielfeldmitte = new JPanel(); + private final JPanel info_panel = new JPanel(); + private final JPanel rechts = new JPanel(); + private final JPanel mitte = new JPanel(); public Dashboard_GUI(Spiel Spiel, Texturenpakete texturen) { + setMinimumSize(new Dimension(1000, 600)); texturenpakete = texturen; texturenpakete.addPaket("StandartTexturenBeta3.zip"); texturenpakete.setAktivesPaket(0); @@ -85,15 +88,18 @@ public class Dashboard_GUI extends JPanel{ spielfeld.setBackground(new Color(128, 128, 128)); game.add(spielfeld, BorderLayout.CENTER); - spielfeld.setLayout(null); + spielfeld.setLayout(new BorderLayout(0, 0)); + player_hand.setPreferredSize(new Dimension(100, 240)); player_hand.setForeground(new Color(169, 169, 169)); player_hand.setBackground(new Color(169, 169, 169)); - player_hand.setBounds(0, 629, 1269, 243); - spielfeld.add(player_hand); + spielfeld.add(player_hand, BorderLayout.SOUTH); player_hand.setLayout(new BorderLayout(0, 0)); JScrollPane scrollPane_1 = new JScrollPane(); + scrollPane_1.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + scrollPane_1.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); + scrollPane_1.setPreferredSize(new Dimension(100, 240)); player_hand.add(scrollPane_1, BorderLayout.CENTER); spielerkarten.setBackground(new Color(169, 169, 169)); @@ -104,22 +110,31 @@ public class Dashboard_GUI extends JPanel{ spielerkarten.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); gegner_hand.setBackground(UIManager.getColor("Button.shadow")); - - gegner_hand.setBounds(0, 0, 1269, 152); - - spielfeld.add(gegner_hand); + spielfeld.add(gegner_hand, BorderLayout.NORTH); gegner_hand.setLayout(new BorderLayout(0, 0)); - gegner_hand.add(scrollPane); - gegenerkarten.setBackground(new Color(169, 169, 169)); + spielfeldmitte.setPreferredSize(new Dimension(100, 20)); + spielfeldmitte.setLayout(new BorderLayout(0, 0)); - scrollPane.setViewportView(gegenerkarten); - ablagestapel.setPreferredSize(new Dimension(242, 362)); - ablagestapel.setHorizontalAlignment(SwingConstants.CENTER); - ablagestapel.setBounds(618, 267, 137, 210); - + JLabel beschreibung_aktuellerSpieler = new JLabel("Aktueller Spieler:"); + beschreibung_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18)); + beschreibung_aktuellerSpieler.setForeground(Color.WHITE); + info_panel.add(beschreibung_aktuellerSpieler); + label_aktuellerSpieler = new JLabel("Auswahlphase"); + label_aktuellerSpieler.setForeground(Color.WHITE); + label_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18)); + info_panel.add(label_aktuellerSpieler); - spielfeld.add(ablagestapel); + + spielfeld.add(spielfeldmitte, BorderLayout.CENTER); + + spielfeldmitte.add(info_panel, BorderLayout.NORTH); + rechts.setPreferredSize(new Dimension(250, 10)); + + spielfeldmitte.add(rechts, BorderLayout.EAST); + rechts.setLayout(new BorderLayout(0, 0)); + ziehstapel.setAlignmentX(Component.CENTER_ALIGNMENT); + rechts.add(ziehstapel, BorderLayout.CENTER); ziehstapel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { @@ -130,33 +145,16 @@ public class Dashboard_GUI extends JPanel{ ziehstapel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); ziehstapel.setPreferredSize(new Dimension(242, 362)); ziehstapel.setHorizontalAlignment(SwingConstants.CENTER); - ziehstapel.setBounds(1093, 267, 137, 210); - ziehstapel.setIcon(new ImageIcon(texturenpakete.getTextur(32).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); - + ziehstapel.setIcon(new ImageIcon(texturenpakete.getTextur(32).getScaledInstance(150, 210, Image.SCALE_SMOOTH))); - spielfeld.add(ziehstapel); + spielfeldmitte.add(mitte, BorderLayout.SOUTH); + mitte.setLayout(null); + spielfeldmitte.add(ablagestapel, BorderLayout.CENTER); + ablagestapel.setIcon(new ImageIcon(Dashboard_GUI.class.getResource("/img/texturen/standart/32.png"))); - JButton btnNewButton_1 = new JButton("Audio"); - btnNewButton_1.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - sound.test(); - } - }); - btnNewButton_1.setBounds(26, 197, 89, 23); - spielfeld.add(btnNewButton_1); - JLabel beschreibung_aktuellerSpieler = new JLabel("Aktueller Spieler:"); - beschreibung_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18)); - beschreibung_aktuellerSpieler.setForeground(Color.WHITE); - beschreibung_aktuellerSpieler.setBounds(435, 163, 156, 31); - spielfeld.add(beschreibung_aktuellerSpieler); - - label_aktuellerSpieler = new JLabel("Auswahlphase"); - label_aktuellerSpieler.setForeground(Color.WHITE); - label_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18)); - label_aktuellerSpieler.setBounds(601, 163, 163, 31); - spielfeld.add(label_aktuellerSpieler); + ablagestapel.setPreferredSize(new Dimension(242, 362)); + ablagestapel.setHorizontalAlignment(SwingConstants.CENTER); panelCont.add(start, "3"); start.setLayout(new BorderLayout(0, 0)); panel.setPreferredSize(new Dimension(10, 30)); @@ -269,7 +267,7 @@ public class Dashboard_GUI extends JPanel{ aktualisiereGUI(); } }); - labels[i].setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); + labels[i].setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)).getScaledInstance(150, 210, Image.SCALE_SMOOTH))); spielerkarten.add(labels[i]); spielerkarten.updateUI(); //Panel erneuern } @@ -277,7 +275,7 @@ public class Dashboard_GUI extends JPanel{ void aktualisiereAblage(Spiel aktuellesSpiel, Texturenpakete texturen){ - ablagestapel.setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getletzteKarte()).getScaledInstance(ziehstapel.getWidth(), ziehstapel.getHeight(), Image.SCALE_SMOOTH))); + ablagestapel.setIcon(new ImageIcon(texturen.getTextur(aktuellesSpiel.getKartensatz().getletzteKarte()).getScaledInstance(150, 210, Image.SCALE_SMOOTH))); ablagestapel.revalidate(); ablagestapel.repaint(); } diff --git a/src/de/jaujau/gui/GUI.java b/src/de/jaujau/gui/GUI.java index 5812d49..710f4a5 100644 --- a/src/de/jaujau/gui/GUI.java +++ b/src/de/jaujau/gui/GUI.java @@ -40,6 +40,7 @@ public class GUI extends JFrame{ // Constructors // public GUI (Texturenpakete texturenpakete, Spielerverwaltung speicherung) { + setMinimumSize(new Dimension(1000, 600)); aktuellesSpiel = new Spiel(); // jaujau.getAktuellesSpiel(); diff --git a/src/de/jaujau/gui/Hilfe_GUI.java b/src/de/jaujau/gui/Hilfe_GUI.java index a1ea6c1..2a0d30d 100644 --- a/src/de/jaujau/gui/Hilfe_GUI.java +++ b/src/de/jaujau/gui/Hilfe_GUI.java @@ -20,6 +20,7 @@ public class Hilfe_GUI extends JFrame { * Create the frame. */ public Hilfe_GUI() { + setAlwaysOnTop(true); setBounds(100, 100, 588, 382); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index d24dd79..2c83104 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -79,6 +79,8 @@ public class Spiel { //Spiel gestartet if(amZug == Spieler.SPIELER) { amZug = Spieler.COMPUTER; + + //wenn möglich Computer soll Karte legen if(spielzug.zugMoeglich(Spieler.COMPUTER)) { //karteLegen(computerGegner.cpu_Zug()); } @@ -86,6 +88,7 @@ public class Spiel { } else { amZug= Spieler.SPIELER; + // Warten auf GUI Eingabe } } @@ -105,7 +108,9 @@ public class Spiel { } if(kartensatz.getHand(amZug).isEmpty()) { audio.spieleJauJau(); - //Spieler hat gewonnen, keine Karte mehr auf der Hand -- Was passiert? // Spieler Gewonnen aufrufen, Punkte aktualisieren + //Spieler hat gewonnen, keine Karte mehr auf der Hand -- Was passiert? + // Spieler Gewonnen aufrufen, Punkte aktualisieren + // Highscore Page oder Startseite aufrufen } spiel(); effekteSetzen();