From 7cf8423cba53099df3bd7a39fc0b9f4bcbd07109 Mon Sep 17 00:00:00 2001 From: ekresse Date: Wed, 6 Jan 2021 13:11:52 +0100 Subject: [PATCH] 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 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