Merge branch 'patch-1' of
https://gitlab.imn.htwk-leipzig.de/weicker/inb1-a-jaujau.git into patch-1 Conflicts: src/de/jaujau/spiellogik/Spielzug.java Implementierung des Computer Gegners
This commit is contained in:
@@ -1,5 +1,15 @@
|
||||
Seb 245
|
||||
Elmo 240
|
||||
Moritz 220
|
||||
Alaa Aldin 217
|
||||
Fabian 215
|
||||
Alaa-Aldin 217
|
||||
Fabian 215
|
||||
Thomas 1233
|
||||
Emil -21331
|
||||
Heinz +312
|
||||
Gert 234
|
||||
Kasper 24
|
||||
Jens 234
|
||||
Paul 234
|
||||
Till 553
|
||||
Reiner 462
|
||||
Achim 2344
|
||||
|
37
src/de/jaujau/UnitTests/TEST_Audio.java
Normal file
37
src/de/jaujau/UnitTests/TEST_Audio.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package de.jaujau.UnitTests;
|
||||
|
||||
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import de.jaujau.daten.Audio;
|
||||
|
||||
class TEST_Audio {
|
||||
|
||||
Audio sound;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
sound = new Audio();
|
||||
}
|
||||
|
||||
@Test
|
||||
void 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
101
src/de/jaujau/daten/Audio.java
Normal file
101
src/de/jaujau/daten/Audio.java
Normal file
@@ -0,0 +1,101 @@
|
||||
package de.jaujau.daten;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.sound.sampled.AudioFormat;
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
import javax.sound.sampled.SourceDataLine;
|
||||
|
||||
/**
|
||||
* Klasse für das Abspielen eines Tons
|
||||
* @author Sebastian Kacza
|
||||
*
|
||||
*/
|
||||
public class Audio {
|
||||
|
||||
public Audio() {}
|
||||
|
||||
|
||||
/**
|
||||
* Spielt den "Jau" Ton ab
|
||||
*/
|
||||
public void spieleJau() {
|
||||
spieleTon("/sound/jaujau.wav");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Spielt den "JauJau" Ton ab
|
||||
*/
|
||||
public void spieleJauJau() {
|
||||
spieleTon("/sound/jau.wav");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Spielt einen Ton ein einem eingene Thread ab
|
||||
* @param Pfad zu der Sounddatei im Jar-Archiv
|
||||
*/
|
||||
private void spieleTon(String Pfad) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
playSound(Pfad);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
|
||||
//Kann gelöscht werden wenn es nicht mehr in der GUI benötigt wird
|
||||
public void test() {
|
||||
spieleJauJau();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* !!! DIESE METHODE IST NICHT VON MIR !!!
|
||||
* Quelle: https://stackoverflow.com/questions/2416935/how-to-play-wav-files-with-java
|
||||
*/
|
||||
/**
|
||||
* Spiel eine Audio dateim im WAV-Format die im internen Ordner gespeichert ist ab.
|
||||
* @param path Ptad zu der Sounddatei
|
||||
* @throws Exception
|
||||
*/
|
||||
private void playSound (String path) throws Exception {
|
||||
//AudioInputStream audioStream = AudioSystem.getAudioInputStream(new File ("test.wav"));
|
||||
AudioInputStream audioStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream(path));
|
||||
|
||||
int BUFFER_SIZE = 128000;
|
||||
AudioFormat audioFormat = null;
|
||||
SourceDataLine sourceLine = null;
|
||||
|
||||
audioFormat = audioStream.getFormat();
|
||||
|
||||
sourceLine = AudioSystem.getSourceDataLine(audioFormat);
|
||||
sourceLine.open(audioFormat);
|
||||
sourceLine.start();
|
||||
|
||||
int nBytesRead = 0;
|
||||
byte[] abData = new byte[BUFFER_SIZE];
|
||||
while (nBytesRead != -1) {
|
||||
try {
|
||||
nBytesRead =
|
||||
audioStream.read(abData, 0, abData.length);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (nBytesRead >= 0) {
|
||||
int nBytesWritten = sourceLine.write(abData, 0, nBytesRead);
|
||||
}
|
||||
}
|
||||
|
||||
sourceLine.drain();
|
||||
sourceLine.close();
|
||||
}
|
||||
}
|
@@ -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++) {
|
||||
|
||||
|
287
src/de/jaujau/gui/Dashboard_GUI.java
Normal file
287
src/de/jaujau/gui/Dashboard_GUI.java
Normal file
@@ -0,0 +1,287 @@
|
||||
package de.jaujau.gui;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.CardLayout;
|
||||
import java.awt.Color;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import de.jaujau.daten.Spieler;
|
||||
import de.jaujau.daten.Spielerverwaltung;
|
||||
import de.jaujau.daten.Texturenpakete;
|
||||
import de.jaujau.spiellogik.Spiel;
|
||||
import javax.swing.JLabel;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Image;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.ImageIcon;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Component;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.ComponentOrientation;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import javax.swing.UIManager;
|
||||
import java.awt.Font;
|
||||
|
||||
public class Dashboard_GUI extends JPanel{
|
||||
private static final long serialVersionUID = -7380187913989942586L;
|
||||
JPanel panelCont = new JPanel();
|
||||
JPanel highscore = new JPanel();
|
||||
JPanel game = new JPanel();
|
||||
JPanel start = new JPanel();
|
||||
CardLayout cl = new CardLayout();
|
||||
Spielerverwaltung spielerverwaltung = new Spielerverwaltung();
|
||||
private final JPanel panel = new JPanel();
|
||||
private final JPanel panel_1 = new JPanel();
|
||||
private JComboBox<String> comboBox = new JComboBox<String>();
|
||||
private final JPanel panel_2 = new JPanel();
|
||||
private final JLabel lblNewLabel_1 = new JLabel("Entwickler: Sebastian, Moritz, Fabian, Aladin, Elmar");
|
||||
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("");
|
||||
private final JLabel ziehstapel = new JLabel("");
|
||||
JPanel spielerkarten = new JPanel();
|
||||
JLabel labels[] = new JLabel[32];
|
||||
private Spiel aktuellesSpiel;
|
||||
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);
|
||||
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(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));
|
||||
|
||||
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));
|
||||
|
||||
|
||||
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"));
|
||||
|
||||
spielfeld.add(gegner_hand, BorderLayout.NORTH);
|
||||
gegner_hand.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
spielfeldmitte.setPreferredSize(new Dimension(100, 20));
|
||||
spielfeldmitte.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
JLabel beschreibung_aktuellerSpieler = new JLabel("Aktueller Spieler:");
|
||||
beschreibung_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18));
|
||||
beschreibung_aktuellerSpieler.setForeground(Color.BLACK);
|
||||
info_panel.add(beschreibung_aktuellerSpieler);
|
||||
label_aktuellerSpieler = new JLabel("Auswahlphase");
|
||||
label_aktuellerSpieler.setForeground(Color.BLACK);
|
||||
label_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18));
|
||||
info_panel.add(label_aktuellerSpieler);
|
||||
|
||||
|
||||
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) {
|
||||
aktuellesSpiel.karteZiehen();
|
||||
aktualisiereGUI();
|
||||
}
|
||||
});
|
||||
ziehstapel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
||||
ziehstapel.setPreferredSize(new Dimension(242, 362));
|
||||
ziehstapel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
ziehstapel.setIcon(new ImageIcon(texturenpakete.getTextur(32).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
||||
|
||||
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")));
|
||||
|
||||
|
||||
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));
|
||||
|
||||
start.add(panel, BorderLayout.NORTH);
|
||||
|
||||
JLabel lblNewLabel = new JLabel("Spielername:");
|
||||
panel.add(lblNewLabel);
|
||||
comboBox.setMinimumSize(new Dimension(60, 22));
|
||||
comboBox.setEditable(true);
|
||||
panel.add(comboBox);
|
||||
start.add(panel_1, BorderLayout.CENTER);
|
||||
|
||||
start.add(panel_2, BorderLayout.SOUTH);
|
||||
|
||||
panel_2.add(lblNewLabel_1);
|
||||
|
||||
highscore.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
//Erstes Panel wird angezeigt
|
||||
cl.show(panelCont, "3");
|
||||
add(panelCont);
|
||||
renderStart(); //Startseite beim ersten <20>ffnen aktualisieren
|
||||
|
||||
}
|
||||
|
||||
//Spiel Panel wird gezeigt
|
||||
public void showgame(Spiel Spiel){
|
||||
//Neues Spiel wird <20>bergeben
|
||||
aktuellesSpiel = Spiel;
|
||||
System.out.println("DASHBOARD: Game darstellen");
|
||||
cl.show(panelCont, "2");
|
||||
aktuellesSpiel.spiel(this);
|
||||
aktualisiereGUI();
|
||||
}
|
||||
|
||||
public void showstart(){
|
||||
System.out.println("DASHBOARD: Start darstellen");
|
||||
cl.show(panelCont, "3");
|
||||
renderStart();
|
||||
}
|
||||
|
||||
|
||||
public void showhighscore(){
|
||||
System.out.println("DASHBOARD: Highscore darstellen");
|
||||
renderHighscore();
|
||||
cl.show(panelCont, "1");
|
||||
repaint();
|
||||
revalidate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void renderStart(){
|
||||
comboBox.removeAllItems();
|
||||
for(int i = 0; i<spielerverwaltung.gethighscoreTabelle().length; i++) {
|
||||
comboBox.addItem(spielerverwaltung.gethighscoreTabelle()[i][0]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Highscore Tabelle
|
||||
public void renderHighscore() {
|
||||
|
||||
|
||||
|
||||
String[][] rowData = spielerverwaltung.gethighscoreTabelle(); //Bsp. Datensatz muss noch entfernt werden.
|
||||
|
||||
String[] columnNames = {"Name", "Punkte"};
|
||||
highscore.setLayout(new BorderLayout(0, 0));
|
||||
JTable table = new JTable(); //Leere Tabelle
|
||||
DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames) { //Tabelle formatieren und Zellen nicht bearbeitbar machen
|
||||
private static final long serialVersionUID = 838285314713L;
|
||||
public boolean isCellEditable(int row, int column) {
|
||||
//all cells false
|
||||
return false;
|
||||
}
|
||||
};
|
||||
table.setAutoCreateRowSorter(true); //Tabelle Sortierbar durch Tabellenkopf
|
||||
table.getTableHeader().setReorderingAllowed(false); //Tabelle nicht mehr drag and drop
|
||||
table.setModel(tableModel);
|
||||
highscore.add( new JScrollPane( table ) );
|
||||
|
||||
|
||||
}
|
||||
|
||||
void aktualisiereHand() {
|
||||
|
||||
//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();
|
||||
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].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<65>hlt.");
|
||||
aktualisiereGUI();
|
||||
}
|
||||
});
|
||||
labels[i].setIcon(new ImageIcon(texturenpakete.getTextur(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
||||
spielerkarten.add(labels[i]);
|
||||
spielerkarten.updateUI(); //Panel erneuern
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void aktualisiereAblage(){
|
||||
ablagestapel.setIcon(new ImageIcon(texturenpakete.getTextur(aktuellesSpiel.getKartensatz().getletzteKarte()).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
||||
ablagestapel.revalidate();
|
||||
ablagestapel.repaint();
|
||||
}
|
||||
|
||||
void aktualisiereSpieleranzeige() {
|
||||
if(aktuellesSpiel.getamZug() == Spieler.COMPUTER) {
|
||||
label_aktuellerSpieler.setText("Gegner");
|
||||
label_aktuellerSpieler.setForeground(Color.RED);
|
||||
}
|
||||
if(aktuellesSpiel.getamZug() == Spieler.SPIELER) {
|
||||
label_aktuellerSpieler.setText("Spieler");
|
||||
label_aktuellerSpieler.setForeground(Color.GREEN);
|
||||
}
|
||||
|
||||
if(aktuellesSpiel.getamZug() == null) {
|
||||
label_aktuellerSpieler.setText("Auswahlphase");
|
||||
label_aktuellerSpieler.setForeground(Color.WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
public void aktualisiereGUI(){
|
||||
aktualisiereSpieleranzeige();
|
||||
aktualisiereAblage();
|
||||
aktualisiereHand();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -3,19 +3,21 @@ package de.jaujau.gui;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import de.jaujau.daten.Spielerverwaltung;
|
||||
import de.jaujau.daten.Texturenpakete;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
import de.jaujau.daten.Spielerverwaltung;
|
||||
import de.jaujau.daten.Texturenpakete;
|
||||
import de.jaujau.spiellogik.Spiel;
|
||||
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.FlowLayout;
|
||||
import javax.swing.BoxLayout;
|
||||
import java.awt.Font;
|
||||
|
||||
|
||||
|
||||
@@ -28,20 +30,22 @@ public class GUI extends JFrame{
|
||||
// Fields
|
||||
//
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Spielerverwaltung spielerverwaltung;
|
||||
private boolean menuehidden = false;
|
||||
Hilfe_GUI frame = new Hilfe_GUI();
|
||||
|
||||
private Spiel aktuellesSpiel;
|
||||
|
||||
//
|
||||
// Constructors
|
||||
//
|
||||
public GUI (Spielerverwaltung speicherung) {
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
public GUI (Texturenpakete texturenpakete, Spielerverwaltung speicherung) {
|
||||
setMinimumSize(new Dimension(1000, 600));
|
||||
|
||||
|
||||
// jaujau.getAktuellesSpiel();
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setTitle("JauJau");
|
||||
setPreferredSize(new Dimension(800, 500));
|
||||
setSize(982, 642);
|
||||
this.spielerverwaltung = speicherung;
|
||||
setSize(1565, 916);
|
||||
getContentPane().setLayout(new BorderLayout(0, 0));
|
||||
|
||||
JPanel Menue = new JPanel();
|
||||
@@ -82,16 +86,44 @@ public class GUI extends JFrame{
|
||||
menuhide.setPreferredSize(new Dimension(220, 200));
|
||||
menuhide.setBackground(new Color(25, 29, 74));
|
||||
Menue.add(menuhide);
|
||||
menuhide.setLayout(new BorderLayout(0, 0));
|
||||
menuhide.setLayout(null);
|
||||
|
||||
JLabel startlabel = new JLabel("Startseite");
|
||||
|
||||
startlabel.setBounds(0, 11, 220, 29);
|
||||
startlabel.setVerticalAlignment(SwingConstants.TOP);
|
||||
startlabel.setForeground(Color.WHITE);
|
||||
startlabel.setFont(new Font("Tahoma", Font.PLAIN, 24));
|
||||
startlabel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
menuhide.add(startlabel);
|
||||
|
||||
JLabel highscorelabel = new JLabel("Highscore");
|
||||
|
||||
highscorelabel.setBounds(0, 51, 220, 29);
|
||||
highscorelabel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
highscorelabel.setForeground(Color.WHITE);
|
||||
highscorelabel.setFont(new Font("Tahoma", Font.PLAIN, 24));
|
||||
menuhide.add(highscorelabel);
|
||||
|
||||
JLabel gamelabel = new JLabel("Spielen");
|
||||
|
||||
gamelabel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
gamelabel.setForeground(Color.WHITE);
|
||||
gamelabel.setFont(new Font("Tahoma", Font.PLAIN, 24));
|
||||
gamelabel.setBounds(0, 91, 220, 29);
|
||||
menuhide.add(gamelabel);
|
||||
|
||||
JPanel dashboard = new JPanel();
|
||||
dashboard.setBackground(new Color(73, 128, 242));
|
||||
getContentPane().add(dashboard, BorderLayout.CENTER);
|
||||
dashboard.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
Spiel_GUI Spiel_GUI = new Spiel_GUI();
|
||||
dashboard.add(Spiel_GUI);
|
||||
|
||||
Dashboard_GUI Dashboard_GUI = new Dashboard_GUI(aktuellesSpiel, texturenpakete);
|
||||
|
||||
//Spiel_GUI Spiel_GUI = new Spiel_GUI();
|
||||
dashboard.add(Dashboard_GUI, BorderLayout.CENTER);
|
||||
|
||||
//Event Listener
|
||||
|
||||
menuebtn.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
@@ -121,11 +153,38 @@ public class GUI extends JFrame{
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
gamelabel.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
aktuellesSpiel = new Spiel(Dashboard_GUI);
|
||||
System.out.println("GUI: Spiel GUI ge<67>ffnet");
|
||||
Dashboard_GUI.showgame(aktuellesSpiel);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
highscorelabel.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
System.out.println("GUI: Highscore ge<67>ffnet");
|
||||
Dashboard_GUI.showhighscore();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
startlabel.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
System.out.println("GUI: Start ge<67>ffnet");
|
||||
Dashboard_GUI.showstart();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// Methods
|
||||
//
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@@ -1,8 +1,6 @@
|
||||
package de.jaujau.gui;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.EventQueue;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
@@ -14,12 +12,17 @@ import javax.swing.JTextArea;
|
||||
|
||||
public class Hilfe_GUI extends JFrame {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private JPanel contentPane;
|
||||
|
||||
/**
|
||||
* Create the frame.
|
||||
*/
|
||||
public Hilfe_GUI() {
|
||||
setAlwaysOnTop(true);
|
||||
setBounds(100, 100, 588, 382);
|
||||
contentPane = new JPanel();
|
||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
|
@@ -1,119 +0,0 @@
|
||||
package de.jaujau.gui;
|
||||
import java.awt.CardLayout;
|
||||
import java.awt.Color;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
|
||||
import de.jaujau.daten.Spielerverwaltung;
|
||||
import javax.swing.GroupLayout;
|
||||
import javax.swing.GroupLayout.Alignment;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.FlowLayout;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
|
||||
import java.awt.Font;
|
||||
|
||||
|
||||
public class Menue_GUI
|
||||
extends JPanel {
|
||||
|
||||
private CardLayout cardLayout;
|
||||
|
||||
private JPanel panel1, panel2, panel3;
|
||||
private int sizemenu = 270;
|
||||
|
||||
|
||||
// Konstruktor
|
||||
public Menue_GUI(Spielerverwaltung speicherung) {
|
||||
|
||||
setBorder(javax.swing.BorderFactory.createTitledBorder("Content"));
|
||||
|
||||
cardLayout = new CardLayout();
|
||||
|
||||
this.setLayout(cardLayout);
|
||||
|
||||
// Objekte der Panel erzeugen, die angezeigt werden sollen
|
||||
panel1 = new JPanel();
|
||||
panel1.setName("panel1");
|
||||
panel2 = new JPanel();
|
||||
panel2.setName("panel2");
|
||||
panel3 = new JPanel();
|
||||
panel3.setName("panel3");
|
||||
|
||||
panel1.setBackground(Color.YELLOW);
|
||||
panel2.setBackground(Color.WHITE);
|
||||
panel3.setBackground(Color.GREEN);
|
||||
|
||||
JLabel label1 = new JLabel("Startseite");
|
||||
label1.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||
JLabel label2 = new JLabel("Highscore");
|
||||
label2.setFont(new Font("Tahoma", Font.PLAIN, 18));
|
||||
label2.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
label2.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||
|
||||
|
||||
renderHighscore(); //Highscore Tabelle wird geladen
|
||||
panel2.setVisible( true );
|
||||
|
||||
|
||||
|
||||
JLabel label3 = new JLabel("Panel 3: Spiel");
|
||||
panel2.add(label2, BorderLayout.NORTH);
|
||||
panel3.add(label3);
|
||||
|
||||
this.add(panel1, "Start");
|
||||
panel1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
|
||||
panel1.add(label1);
|
||||
|
||||
JLabel lblNewLabel_1 = new JLabel("New label");
|
||||
panel1.add(lblNewLabel_1);
|
||||
this.add(panel2, "Highscore");
|
||||
this.add(panel3, "Spiel");
|
||||
|
||||
JPanel panel4 = new JPanel();
|
||||
panel4.setBackground(Color.LIGHT_GRAY);
|
||||
this.add(panel4, "Einstellungen");
|
||||
|
||||
JLabel lblNewLabel = new JLabel("Einstellungen");
|
||||
panel4.add(lblNewLabel);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void showPanel(String panel) {
|
||||
|
||||
cardLayout.show(this, panel);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void renderHighscore() {
|
||||
|
||||
String[][] rowData = {{ "Seb", "245" }, { "Elmo", "240" }, { "Moritz","220" }, { "Alaa Aldin", "217" }, {"Fabian", "215"}}; //Bsp. Datensatz muss noch entfernt werden.
|
||||
|
||||
String[] columnNames = {"Name", "Punkte"};
|
||||
panel2.setLayout(new BorderLayout(0, 0));
|
||||
JTable table = new JTable(); //Leere Tabelle
|
||||
DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames) { //Tabelle formatieren und Zellen nicht bearbeitbar machen
|
||||
private static final long serialVersionUID = 838285314713L;
|
||||
public boolean isCellEditable(int row, int column) {
|
||||
//all cells false
|
||||
return false;
|
||||
}
|
||||
};
|
||||
table.setAutoCreateRowSorter(true); //Tabelle Sortierbar durch Tabellenkopf
|
||||
table.getTableHeader().setReorderingAllowed(false); //Tabelle nicht mehr drag and drop
|
||||
table.setModel(tableModel);
|
||||
|
||||
|
||||
panel2.add( new JScrollPane( table ) );
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -2,43 +2,33 @@ package de.jaujau.gui;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.Box;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import javax.swing.JLabel;
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.Image;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import java.awt.Component;
|
||||
import javax.swing.GroupLayout;
|
||||
import javax.swing.GroupLayout.Alignment;
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import java.awt.CardLayout;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.Insets;
|
||||
|
||||
|
||||
public class Navigation_GUI
|
||||
extends JPanel
|
||||
implements ActionListener {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private JPanel panel;
|
||||
private Menue_GUI Menue_GUI;
|
||||
|
||||
|
||||
// Konstruktor
|
||||
public Navigation_GUI(Menue_GUI menue_GUI) {
|
||||
this.Menue_GUI = menue_GUI;
|
||||
public Navigation_GUI() {
|
||||
|
||||
// Hiermit bekommst du Zugriff auf das <20>bergebene Objekt mainPanel
|
||||
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
|
||||
@@ -84,7 +74,6 @@ implements ActionListener {
|
||||
panel_2.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
Menue_GUI.showPanel("Start");
|
||||
}
|
||||
});
|
||||
panel_2.setBackground(new Color(0, 102, 204));
|
||||
@@ -101,7 +90,6 @@ implements ActionListener {
|
||||
panel_3.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
Menue_GUI.showPanel("Highscore");
|
||||
}
|
||||
});
|
||||
panel_3.setBackground(new Color(0, 102, 204));
|
||||
@@ -134,15 +122,5 @@ implements ActionListener {
|
||||
// In dieser Methode <20>nderst du das anzuzeigende Panel
|
||||
// <20>ber die showPanel-Methode in mainPanel
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
|
||||
if(e.getActionCommand().equals("Highscore"))
|
||||
Menue_GUI.showPanel("Highscore");
|
||||
|
||||
if(e.getActionCommand().equals("Spiel"))
|
||||
Menue_GUI.showPanel("Spiel");
|
||||
|
||||
if(e.getActionCommand().equals("Einstellungen"))
|
||||
Menue_GUI.showPanel("Einstellungen");
|
||||
}
|
||||
}
|
@@ -1,65 +0,0 @@
|
||||
package de.jaujau.gui;
|
||||
import java.awt.Image;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.BoxLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import de.jaujau.daten.Kartensatz;
|
||||
import de.jaujau.daten.Spielerverwaltung;
|
||||
import de.jaujau.daten.Texturenpakete;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class Spiel_GUI extends JPanel implements ActionListener {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Spielerverwaltung spielerverwaltung;
|
||||
Texturenpakete texturen = new Texturenpakete();
|
||||
/**
|
||||
* Create the application.
|
||||
* @param speicherung
|
||||
*/
|
||||
public Spiel_GUI() {
|
||||
setLayout(null);
|
||||
System.out.println("Spiel_GUI: Spiel-GUI aufgerufen");
|
||||
initialize(spielerverwaltung);
|
||||
}
|
||||
/**
|
||||
* Initialize the contents of the frame.
|
||||
*/
|
||||
|
||||
//Test GUI f<>r JauJau
|
||||
|
||||
private void initialize(Spielerverwaltung speicherung) {
|
||||
this.spielerverwaltung = speicherung;
|
||||
setBounds(100, 100, 963, 762);
|
||||
JPanel panel_main = new JPanel();
|
||||
panel_main.setPreferredSize(new Dimension(600, 600));;
|
||||
panel_main.setLayout(new BoxLayout(panel_main, BoxLayout.X_AXIS));
|
||||
|
||||
|
||||
texturen.addPaket("StandartTexturenBeta3.zip");
|
||||
texturen.setAktivesPaket(0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void paint(Graphics g) {
|
||||
g.drawImage(texturen.getTextur(31), 50, 50, null);
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -1,8 +1,5 @@
|
||||
package de.jaujau.gui;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* Class texturenauswaehlen_GUI
|
||||
*/
|
||||
|
@@ -15,97 +15,29 @@ import de.jaujau.gui.GUI;
|
||||
|
||||
public class Anwendung {
|
||||
|
||||
private Spiel aktuellesSpiel;
|
||||
private Texturenpakete texturenpakete;
|
||||
private Spielerverwaltung speicherung;
|
||||
private GUI gui;
|
||||
private GUI view;
|
||||
|
||||
|
||||
//
|
||||
// Constructors
|
||||
//
|
||||
public Anwendung() {
|
||||
|
||||
speicherung = new Spielerverwaltung();
|
||||
gui = new GUI(speicherung);
|
||||
|
||||
speicherung = new Spielerverwaltung();
|
||||
texturenpakete = new Texturenpakete();
|
||||
view = new GUI(texturenpakete, speicherung);
|
||||
|
||||
|
||||
};
|
||||
//
|
||||
// Methods
|
||||
|
||||
//
|
||||
// Accessor methods
|
||||
//
|
||||
/**
|
||||
* Set the value of aktuellesSpiel
|
||||
*
|
||||
* @param newVar the new value of aktuellesSpiel
|
||||
*/
|
||||
public void setAktuellesSpiel(Spiel newSpiel) {
|
||||
aktuellesSpiel = newSpiel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of aktuellesSpiel
|
||||
*
|
||||
* @return the value of aktuellesSpiel
|
||||
*/
|
||||
public Spiel getAktuellesSpiel() {
|
||||
return aktuellesSpiel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of texturenpakete
|
||||
*
|
||||
* @param newVar the new value of texturenpakete
|
||||
*/
|
||||
public void setTexturenpakete(Texturenpakete newTexture) {
|
||||
texturenpakete = newTexture;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of texturenpakete
|
||||
*
|
||||
* @return the value of texturenpakete
|
||||
*/
|
||||
public Texturenpakete getTexturenpakete() {
|
||||
return texturenpakete;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of speicherung
|
||||
*
|
||||
* @param newVar the new value of speicherung
|
||||
*/
|
||||
public void setSpeicherung(Spielerverwaltung newVer) {
|
||||
speicherung = newVer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of speicherung
|
||||
*
|
||||
* @return the value of speicherung
|
||||
*/
|
||||
public Spielerverwaltung getSpeicherung() {
|
||||
return speicherung;
|
||||
}
|
||||
|
||||
//
|
||||
// Other methods
|
||||
//
|
||||
public static void openMenue_GUI(Anwendung jaujau) { // Menue_GUI oeffnen!
|
||||
jaujau.gui.setVisible(true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Anwendung jaujau = new Anwendung();
|
||||
openMenue_GUI(jaujau);
|
||||
|
||||
/**
|
||||
/**
|
||||
* Launch the application.
|
||||
*/
|
||||
|
||||
|
||||
Anwendung jaujau = new Anwendung();
|
||||
jaujau.view.setVisible(true);
|
||||
}
|
||||
}
|
@@ -18,8 +18,16 @@ public class Computer_gegner {
|
||||
//
|
||||
// Fields
|
||||
//
|
||||
|
||||
|
||||
Spiel spiel;
|
||||
Kartensatz kartensatz;
|
||||
Wert letztekartewert;
|
||||
Farbe letztekartefarbe;
|
||||
ArrayList<Integer> hand;
|
||||
boolean farbeInHand = false;
|
||||
boolean wertInHand = false;
|
||||
boolean aussetzen = false;
|
||||
boolean ziehen = false;
|
||||
boolean bubeInHand = false;
|
||||
//
|
||||
// Constructors
|
||||
//
|
||||
@@ -51,18 +59,20 @@ public class Computer_gegner {
|
||||
* Als n<>chstes Werden Karten der aktuellen Farbe gelegt
|
||||
* Dann Karten die den aktuellenw Wert besitzen
|
||||
* Zuletzt Buben um sich eine Farbe zu w<>nschen
|
||||
* @param keine
|
||||
* @param Kartensatz
|
||||
* @return Kartenindex der Karte die gelegt werden soll
|
||||
*/
|
||||
public int cpu_Zug() {
|
||||
Spiel spiel = Anwendung.getAktuellesSpiel(); //Erzeugt ein Abbild des aktuellen Spiels
|
||||
Kartensatz kartensatz = spiel.getKartensatz(); //Erzeugt ein Abbild des aktuellen Kartensatzes, mit stand der Karten
|
||||
Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); //Speichert den Wert der Karte, die zuletzt gelegt wurde
|
||||
Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); //Speichert die Farbe der Karte, die zuletzt gelegt wurde
|
||||
ArrayList<Integer> hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat
|
||||
boolean farbeInHand = false; //Speichert, ob die aktuell liegende Farbe in der Hand des Computers vorhanden ist
|
||||
boolean wertInHand = false; //Speichert, ob der aktuell liegende Wert in der Hand des Computers vorhanden ist
|
||||
int rueckgabeindex = 0; //Speichert den Kartenindex, der Karte, die gelegt werden soll
|
||||
public int cpu_Zug(Kartensatz karten) {
|
||||
kartensatz = karten; //Erzeugt ein Abbild des aktuellen Kartensatzes, mit Stand der Karten
|
||||
letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); //Speichert den Wert der Karte, die zuletzt gelegt wurde
|
||||
letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); //Speichert die Farbe der Karte, die zuletzt gelegt wurde
|
||||
hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat
|
||||
farbeInHand = false; //Speichert, ob die aktuell liegende Farbe in der Hand des Computers vorhanden ist
|
||||
wertInHand = false; //Speichert, ob der aktuell liegende Wert in der Hand des Computers vorhanden ist
|
||||
int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll
|
||||
aussetzen = spiel.getAussetzen(); //Speichert, ob der Computer aktuell aussetzen m<>sste
|
||||
ziehen = spiel.getZwei_ziehen(); //Speichert, ob der Computer aktuell ziehen m<>sste
|
||||
bubeInHand = false;
|
||||
|
||||
for(int i = 0; i < hand.size(); i++) { //Schleife geht alle Karten in der Hand des Computers durch
|
||||
Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE(); //Holt sich die Farbe der aktuellen Handkarte
|
||||
@@ -75,6 +85,24 @@ public class Computer_gegner {
|
||||
if(wertHK == letztekartewert) { //Pr<50>ft ob Wert der aktuellen Handkarte zur liegenden Karte passt
|
||||
wertInHand = true;
|
||||
}
|
||||
|
||||
if(wertHK == Wert.BUBE) { //Pr<50>ft, ob ein Bube (W<>nscher) auf der Hand vorhanden ist
|
||||
bubeInHand = true;
|
||||
}
|
||||
}
|
||||
|
||||
//W<>hlt aus, welche Karte gelegt wird
|
||||
if (aussetzen || ziehen) { //Muss der Computer aussetzen oder ziehen, versucht er eine passende Konterkarte zu legen
|
||||
rueckgabeindex = wertLegen(letztekartewert);
|
||||
}
|
||||
else if(farbeInHand) { //Hat der Computer die Farbe auf der Hand, versucht er diese zu legen
|
||||
rueckgabeindex = farbeLegen(letztekartefarbe);
|
||||
}
|
||||
else if(wertInHand) { //Hat der Computer nicht die passende Farbe, aber einen passenden Wert, legt er diesen
|
||||
rueckgabeindex = wertLegen(letztekartewert);
|
||||
}
|
||||
else if(bubeInHand) { //Hat der Computer weder die passende Farbe, noch den passenden Wert auf der Hand, aber einen W<>nscher, legt er diesen
|
||||
rueckgabeindex = wertLegen(Wert.BUBE);
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +110,84 @@ public class Computer_gegner {
|
||||
return rueckgabeindex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Funktion sucht Karte passend zur gesuchten Farbe aus der Hand und gibt diese zur<75>ck
|
||||
* Passen mehrere Karten, gibt sie die letzte passende zur<75>ck
|
||||
* @return integer Index der zur<75>ckgegebenen Karte
|
||||
*/
|
||||
private int farbeLegen(Farbe gesuchteFarbe) {
|
||||
int ind = -1;
|
||||
|
||||
for(int i = 0; i < hand.size(); i++) {
|
||||
Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE();
|
||||
if(farbeHK == gesuchteFarbe) {
|
||||
ind = hand.get(i);
|
||||
}
|
||||
}
|
||||
return ind;
|
||||
}
|
||||
|
||||
/**
|
||||
* Funktion sucht Karte passend zum gesuchten Wert aus der Hand und gibt diese zur<75>ck
|
||||
* Passen mehrere Karten, gibt sie die letzte passende zur<75>ck
|
||||
* @return integer Index der zur<75>ckgegebenen Karte
|
||||
*/
|
||||
private int wertLegen(Wert gesuchterWert) {
|
||||
int ind = -1;
|
||||
|
||||
for(int i = 0; i < hand.size(); i++) {
|
||||
Wert wertHK = kartensatz.getKarte(hand.get(i)).getWERT();
|
||||
if(wertHK == gesuchterWert) {
|
||||
ind = hand.get(i);
|
||||
}
|
||||
}
|
||||
return ind;
|
||||
}
|
||||
|
||||
/**
|
||||
* Funktion w<>hlt f<>r den Computer aus, welche Farbe er sich bei einem W<>nscher aussucht
|
||||
* Dazu wird geschaut, von welcher Farbe er am meisten Karten auf der Hand hat
|
||||
* @return Farbe gew<65>hlte Farbe
|
||||
*/
|
||||
public Farbe farbeAussuchen(Kartensatz karten) {
|
||||
Farbe wahl = Farbe.KREUZ;
|
||||
kartensatz = karten; //Erzeugt ein Abbild des aktuellen Kartensatzes, mit Stand der Karten
|
||||
hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat
|
||||
|
||||
int hoechsteAnzahl = 0;
|
||||
int anzahl = 0;
|
||||
|
||||
Farbe[] farben = {Farbe.KREUZ, Farbe.PIK, Farbe.HERZ, Farbe.KARO};
|
||||
|
||||
for (int i = 0; i < farben.length; i++) {
|
||||
anzahl = farbeZahl(farben[i]);
|
||||
if (anzahl > hoechsteAnzahl) {
|
||||
hoechsteAnzahl = anzahl;
|
||||
wahl = farben[i];
|
||||
}
|
||||
}
|
||||
|
||||
return wahl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Funktion z<>hlt f<>r die jeweilige Farbe, wie viele Karten der Farbe auf der Hand des Computer sind
|
||||
* @param farbe Farbe, f<>r welche gez<65>hlt werden soll
|
||||
* @return integer Wie viele Karten der Farbe auf der Hand sind
|
||||
*/
|
||||
private int farbeZahl(Farbe farbe) {
|
||||
int anzahl = 0;
|
||||
|
||||
for (int i = 0; i < hand.size(); i++) {
|
||||
Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE();
|
||||
if (farbeHK == farbe) {
|
||||
anzahl ++;
|
||||
}
|
||||
}
|
||||
|
||||
return anzahl;
|
||||
}
|
||||
|
||||
public int cpuTest() {
|
||||
return 1;
|
||||
}
|
||||
|
@@ -1,29 +1,41 @@
|
||||
package de.jaujau.spiellogik;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
import de.jaujau.daten.Audio;
|
||||
import de.jaujau.daten.Kartensatz;
|
||||
import de.jaujau.daten.Spieler;
|
||||
import de.jaujau.daten.Wert;
|
||||
import de.jaujau.gui.Dashboard_GUI;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Diese Klasse pr<EFBFBD>ft die Spielaktionen und alterniert zwischen Spieler und Computer
|
||||
* Diese Klasse organisiert den Spielablauf
|
||||
* @author Fabian Keller
|
||||
*/
|
||||
public class Spiel {
|
||||
|
||||
private Spieler amZug;
|
||||
private boolean spielgestartet = false;
|
||||
private Wert gelegterWert;
|
||||
private Audio audio;
|
||||
private Kartensatz kartensatz;
|
||||
private Spielzug spielzug;
|
||||
private Computer_gegner computerGegner;
|
||||
private boolean spielgestartet;
|
||||
private boolean aussetzen;
|
||||
private boolean zwei_ziehen;
|
||||
private int kartenZiehen;
|
||||
private Kartensatz kartensatz;
|
||||
private Wert gelegterWert;
|
||||
private Spielzug spielzug;
|
||||
private Dashboard_GUI dashboard;
|
||||
|
||||
public Spiel(Dashboard_GUI dashboard_gui) {
|
||||
computerGegner = new Computer_gegner();
|
||||
audio = new Audio();
|
||||
kartensatz = new Kartensatz();
|
||||
spielzug = new Spielzug();
|
||||
spielgestartet = false;
|
||||
dashboard = dashboard_gui;
|
||||
}
|
||||
|
||||
public boolean getAussetzen() {
|
||||
return aussetzen;
|
||||
@@ -40,36 +52,58 @@ public class Spiel {
|
||||
}
|
||||
|
||||
|
||||
public Spieler getamZug() {
|
||||
return amZug;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* alterniert zwischen Spieler und Computer und legt Beginner fest
|
||||
* Organisiert den Spielablauf
|
||||
*/
|
||||
private void spiel() {
|
||||
if(!spielgestartet) {
|
||||
public void spiel(Dashboard_GUI dashboard) {
|
||||
//Spiel nicht gestartet
|
||||
if(!spielgestartet) {
|
||||
System.out.println("Spiel gestartet.");
|
||||
Random zufallszahl = new Random();
|
||||
int zahl = zufallszahl.nextInt(1);
|
||||
int zahl = zufallszahl.nextInt(2);
|
||||
if(zahl == 1) { //Starter durch zufall bestimmen
|
||||
amZug = Spieler.SPIELER;
|
||||
System.out.println("Spieler startet");
|
||||
}
|
||||
else {
|
||||
else {
|
||||
amZug = Spieler.COMPUTER;
|
||||
System.out.println("Computer startet");
|
||||
}
|
||||
spielgestartet = true;
|
||||
for(int i = 0; i < 7; i++) { //Jeder bekommt 7 Karten
|
||||
kartensatz.ziehen(Spieler.COMPUTER);
|
||||
kartensatz.ziehen(Spieler.SPIELER);
|
||||
}
|
||||
int kartenindex = zufallszahl.nextInt(31);
|
||||
int kartenindex = zufallszahl.nextInt(32);
|
||||
while(kartensatz.getHand(Spieler.COMPUTER).contains(kartenindex)||kartensatz.getHand(Spieler.SPIELER).contains(kartenindex)) {
|
||||
kartenindex = zufallszahl.nextInt(31);
|
||||
kartenindex = zufallszahl.nextInt(32);
|
||||
}
|
||||
kartensatz.ablegen(kartenindex); //nicht in der Hand befindliche Karte zum Start aufdecken
|
||||
System.out.println("Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER));
|
||||
System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER));
|
||||
return;
|
||||
}
|
||||
}
|
||||
//Spiel bereits gestartet
|
||||
if(amZug == Spieler.SPIELER) {
|
||||
amZug = Spieler.COMPUTER;
|
||||
dashboard.aktualisiereGUI(); //Komplette GUI wird aktualisiert
|
||||
System.out.println("Computer am Zug");
|
||||
//wenn m<>glich Computer soll Karte legen
|
||||
if(spielzug.zugMoeglich(Spieler.COMPUTER)) {
|
||||
//karteLegen(computerGegner.cpu_Zug());
|
||||
}
|
||||
//andernfalls soll gezogen werden
|
||||
else karteZiehen();
|
||||
}
|
||||
else {
|
||||
amZug= Spieler.SPIELER;
|
||||
System.out.println("Spieler am Zug");
|
||||
// Warten auf GUI Eingabe
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,44 +112,66 @@ public class Spiel {
|
||||
* falls eine Karte gelegt werden kann wird diese gelegt
|
||||
* @param kartenindex
|
||||
*/
|
||||
private void karteLegen(int kartenindex) { //W<>NSCHER?
|
||||
if(pruefeHand(amZug)) {
|
||||
public void karteLegen(int kartenindex) {
|
||||
if(spielzug.zugMoeglich(amZug)) {
|
||||
System.out.println("Legen M<>glich");
|
||||
if (spielzug.pruefeZug(kartenindex)) {
|
||||
System.out.println("pruefeZug positiv");
|
||||
kartensatz.ablegen(kartenindex);
|
||||
spiel();
|
||||
effekteSetzen(); //kartenindex <20>bergeben und anhand dessen effekte setzen
|
||||
}//oder ziehen?
|
||||
}// else kein Zug m<>glich
|
||||
if(kartensatz.getHand(amZug).size() == 1) {
|
||||
audio.spieleJau();
|
||||
}
|
||||
if(kartensatz.getHand(amZug).isEmpty()) {
|
||||
audio.spieleJauJau();
|
||||
//Spieler hat gewonnen, keine Karte mehr auf der Hand -- Was passiert?
|
||||
// Spieler Gewonnen aufrufen, Punkte aktualisieren
|
||||
// Highscore Page oder Startseite aufrufen
|
||||
}
|
||||
effekteSetzen();
|
||||
spiel(dashboard);
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
aussetzen = false;
|
||||
}
|
||||
}//wann wird aussetzen auf false gesetzt
|
||||
System.out.println("Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER));
|
||||
System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* falls eine oder mehrere Karten gezogen werden k<>nnen, wird dies ausgef<65>hrt
|
||||
*/
|
||||
private void karteZiehen(){
|
||||
if(pruefeHand(amZug)) {
|
||||
public void karteZiehen(){
|
||||
if(spielzug.zugMoeglich(amZug)) {
|
||||
if(zwei_ziehen) {
|
||||
for(int i = 0; i < kartenZiehen; i++) {
|
||||
kartensatz.ziehen(amZug);
|
||||
}
|
||||
kartenZiehen = 0;
|
||||
zwei_ziehen = false;
|
||||
spiel();
|
||||
spiel(dashboard);
|
||||
}
|
||||
else {
|
||||
kartensatz.ziehen(amZug);
|
||||
kartensatz.ziehen(amZug);
|
||||
spiel(dashboard);
|
||||
}
|
||||
}
|
||||
else {
|
||||
aussetzen = false;
|
||||
spiel(dashboard);
|
||||
}
|
||||
System.out.println("Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER));
|
||||
System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER));
|
||||
effekteSetzen();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* setzt Effekt-Variablen
|
||||
*/
|
||||
private void effekteSetzen() { //was passiert wenn 2 gezogen wurde und dann der n<>chste spieler diese Funktion ausf<73>hrt.
|
||||
private void effekteSetzen() {
|
||||
gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT();
|
||||
if(gelegterWert == Wert.ACHT) {
|
||||
aussetzen = true;
|
||||
@@ -124,25 +180,6 @@ public class Spiel {
|
||||
zwei_ziehen = true;
|
||||
kartenZiehen += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* pr<70>ft ob, wenn eine 8 gelegt wurde, eine 8 auf der Hand ist
|
||||
* und der Zug somit m<>glich ist
|
||||
* @return true falls ein Zug m<>glich ist
|
||||
* @return false falls kein Zug m<>glich ist
|
||||
*/
|
||||
private boolean pruefeHand(Spieler amZug) {
|
||||
if(aussetzen) {
|
||||
ArrayList<Integer> handvonSpieler = kartensatz.getHand(amZug);
|
||||
for(int i = 0; i < handvonSpieler.size(); i++) {
|
||||
if(kartensatz.getKarte(handvonSpieler.get(i)).getWERT() == Wert.ACHT) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
System.out.println("Effekte gesetzt:\nAussetzen: " + aussetzen + "\nZwei_Ziehen: " + zwei_ziehen );
|
||||
}
|
||||
}
|
||||
|
@@ -56,24 +56,25 @@ public class Spielzug {
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean pruefeZug(int kartenindex) {
|
||||
Spiel Spiel = Anwendung.getAktuellesSpiel();
|
||||
Kartensatz kartensatz = Spiel.getKartensatz();
|
||||
Farbe kartenfarbe = kartensatz.getKarte(kartenindex).getFARBE();
|
||||
Wert kartenwert = kartensatz.getKarte(kartenindex).getWERT();
|
||||
Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT();
|
||||
Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE();
|
||||
if(Spiel.getAussetzen() && kartenwert == Wert.ACHT) {
|
||||
return true;
|
||||
}
|
||||
else if (Spiel.getZwei_ziehen() && kartenwert == Wert.SIEBEN) {
|
||||
return true;
|
||||
}
|
||||
else if (!Spiel.getAussetzen() && !Spiel.getZwei_ziehen() && (kartenwert == letztekartewert || kartenfarbe == letztekartefarbe || kartenwert == Wert.BUBE)) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Kartensatz kartensatz = Spiel.getKartensatz();
|
||||
//
|
||||
// Farbe kartenfarbe = kartensatz.getKarte(kartenindex).getFARBE();
|
||||
// Wert kartenwert = kartensatz.getKarte(kartenindex).getWERT();
|
||||
// Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT();
|
||||
// Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE();
|
||||
// if(Spiel.getAussetzen() && kartenwert == Wert.ACHT) {
|
||||
// return true;
|
||||
// }
|
||||
// else if (Spiel.getZwei_ziehen() && kartenwert == Wert.SIEBEN) {
|
||||
// return true;
|
||||
// }
|
||||
// else if (!Spiel.getAussetzen() && !Spiel.getZwei_ziehen() && (kartenwert == letztekartewert || kartenfarbe == letztekartefarbe || kartenwert == Wert.BUBE)) {
|
||||
// return true;
|
||||
// }
|
||||
// else {
|
||||
return true; // auf true ge<67>ndert f<>r DEBUG!!
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,14 +83,14 @@ public class Spielzug {
|
||||
* @return
|
||||
*/
|
||||
public boolean zugMoeglich(Spieler spieler) {
|
||||
Kartensatz kartensatz = Spiel.getKartensatz();
|
||||
boolean gefunden = false;
|
||||
ArrayList<Integer> Hand = kartensatz.getHand(spieler);
|
||||
for (int i = 0; i < Hand.size(); i++) {
|
||||
if (pruefeZug(i)) {
|
||||
gefunden = true;
|
||||
}
|
||||
}
|
||||
// Kartensatz kartensatz = Spiel.getKartensatz();
|
||||
boolean gefunden = true; // auf true ge<67>ndert f<>r DEBUG!!
|
||||
// ArrayList<Integer> Hand = kartensatz.getHand(spieler);
|
||||
// for (int i = 0; i < Hand.size(); i++) {
|
||||
// if (pruefeZug(i)) {
|
||||
// gefunden = true;
|
||||
// }
|
||||
// }
|
||||
return gefunden;
|
||||
}
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 8.7 KiB |
BIN
src/sound/jau.wav
Normal file
BIN
src/sound/jau.wav
Normal file
Binary file not shown.
BIN
src/sound/jaujau.wav
Normal file
BIN
src/sound/jaujau.wav
Normal file
Binary file not shown.
Reference in New Issue
Block a user