From a222a802734ff329ebac37efb75fa32214d870c1 Mon Sep 17 00:00:00 2001 From: Fabian Keller Date: Thu, 7 Jan 2021 17:33:31 +0100 Subject: [PATCH] =?UTF-8?q?alternieren()=20hinzugef=C3=BCgt=20und=20mehrer?= =?UTF-8?q?=20Bugs=20gel=C3=B6st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/jaujau/spiellogik/Spiel.java | 145 +++++++++++++++++----------- 1 file changed, 89 insertions(+), 56 deletions(-) diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index 7d23caf..8f684a4 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -3,6 +3,7 @@ package de.jaujau.spiellogik; import java.util.Random; import de.jaujau.daten.Audio; +import de.jaujau.daten.Farbe; import de.jaujau.daten.Kartensatz; import de.jaujau.daten.Spieler; import de.jaujau.daten.Wert; @@ -22,7 +23,6 @@ public class Spiel { private Kartensatz kartensatz; private Spielzug spielzug; private Computer_gegner computerGegner; - private boolean spielgestartet; private boolean aussetzen; private boolean zwei_ziehen; private int kartenZiehen; @@ -33,7 +33,6 @@ public class Spiel { kartensatz = new Kartensatz(); computerGegner = new Computer_gegner(kartensatz); spielzug = new Spielzug(kartensatz); - spielgestartet = false; dashboard = dashboard_gui; } @@ -58,47 +57,41 @@ public class Spiel { /** - * Organisiert den Spielablauf + * Initialisiert ein Spiel + * @param dashboard */ public void spiel(Dashboard_GUI dashboard) { - //Spiel nicht gestartet - if(!spielgestartet) { - System.out.println("Spiel gestartet."); - Random zufallszahl = new Random(); - int zahl = zufallszahl.nextInt(2); - if(zahl == 1) { //Starter durch zufall bestimmen - amZug = Spieler.SPIELER; - System.out.println("Spieler startet"); - } - 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(32); - while(kartensatz.getHand(Spieler.COMPUTER).contains(kartenindex)||kartensatz.getHand(Spieler.SPIELER).contains(kartenindex)) { - 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)); - //COMPUTER DIREKT AM ZUG - return; - } - //Spiel bereits gestartet - if(amZug == Spieler.SPIELER) { + System.out.println("SPIEL Spiel gestartet."); + Random zufallszahl = new Random(); + int zahl = zufallszahl.nextInt(2); + if(zahl == 1) { //Starter durch zufall bestimmen + amZug = Spieler.SPIELER; + System.out.println("SPIEL Spieler startet"); + } + else { amZug = Spieler.COMPUTER; - dashboard.aktualisiereGUI(); //Komplette GUI wird aktualisiert - System.out.println("Computer am Zug"); + System.out.println("SPIEL Computer startet"); + } + for(int i = 0; i < 7; i++) { //Jeder bekommt 7 Karten + kartensatz.ziehen(Spieler.COMPUTER); + kartensatz.ziehen(Spieler.SPIELER); + } + //FUNKTION erste Karte + int kartenindex = zufallszahl.nextInt(32); + while(kartensatz.getHand(Spieler.COMPUTER).contains(kartenindex)||kartensatz.getHand(Spieler.SPIELER).contains(kartenindex)) { + kartenindex = zufallszahl.nextInt(32); + } + kartensatz.ablegen(kartenindex); //nicht in der Hand befindliche Karte zum Start aufdecken + System.out.println("SPIEL Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER)); + System.out.println("SPIEL Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); + effekteSetzen(); + if(amZug == Spieler.COMPUTER) { int computerZug = computerGegner.cpu_Zug(zwei_ziehen, aussetzen); - System.out.println("Computerauswahl: " + computerZug); + System.out.println("\nSPIEL Computerauswahl: " + computerZug); switch(computerZug) { - case -2: //aussetzen + case -2: //aussetzen anzeigen? aussetzen = false; + alternieren(dashboard); break; case -1: karteZiehen(); @@ -106,16 +99,46 @@ public class Spiel { default: karteLegen(computerZug); break; - } + } + } + return; + } + + + /** + * Organisiert den Spielablauf + * @param dashboard + */ + private void alternieren(Dashboard_GUI dashboard) { + if(amZug == Spieler.SPIELER) { + amZug = Spieler.COMPUTER; + dashboard.aktualisiereGUI(); //Komplette GUI wird aktualisiert + System.out.println("\nSPIEL Computer am Zug"); + int computerZug = computerGegner.cpu_Zug(zwei_ziehen, aussetzen); + System.out.println("SPIEL Computerauswahl: " + computerZug); + switch(computerZug) { + case -2: //aussetzen + aussetzen = false; + alternieren(dashboard); + break; + case -1: + karteZiehen(); + break; + default: + karteLegen(computerZug); + break; + } + } else { - amZug= Spieler.SPIELER; - System.out.println("Spieler am Zug"); + amZug = Spieler.SPIELER; + System.out.println("\nSPIEL Spieler am Zug"); if(!spielzug.zugMoeglich(amZug, zwei_ziehen, aussetzen)&&aussetzen) { //falls kein Zug möglich ist wird der Aussetzenbutton angezeigt! + System.out.println("Kann nichts machen"); aussetzen = false; - spiel(dashboard); + amZug = Spieler.SPIELER; + alternieren(dashboard); } - // Warten auf GUI Eingabe } } @@ -126,10 +149,11 @@ public class Spiel { */ public void karteLegen(int kartenindex) { if(spielzug.zugMoeglich(amZug, zwei_ziehen, aussetzen)) { //mögliche Karte auf der Hand - System.out.println("Legen Möglich"); + System.out.println("\nSPIEL Legen Möglich"); if (spielzug.pruefeZug(kartenindex, zwei_ziehen, aussetzen)) { //gewählte Karte kann gelegt werden - System.out.println("pruefeZug positiv"); - kartensatz.ablegen(kartenindex); //Nullpointer + System.out.println("SPIEL pruefeZug positiv"); + System.out.println("SPIEL Lege Karte " + kartenindex); + kartensatz.ablegen(kartenindex); if(kartensatz.getHand(amZug).size() == 1) { audio.spieleJau(); } @@ -139,12 +163,12 @@ public class Spiel { // Spieler Gewonnen aufrufen, Punkte aktualisieren // Highscore Page oder Startseite aufrufen } + System.out.println("SPIEL Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER)); + System.out.println("SPIEL Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); effekteSetzen(); - spiel(dashboard); + alternieren(dashboard); } - } - System.out.println("Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER)); - System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); + } } @@ -155,27 +179,28 @@ public class Spiel { if(!aussetzen) { if(zwei_ziehen) { //mehrere ziehen for(int i = 0; i < kartenZiehen; i++) { + System.out.println("\nSPIEL " + kartenZiehen + " Karten gezogen"); kartensatz.ziehen(amZug); } kartenZiehen = 0; - zwei_ziehen = false; - spiel(dashboard); + zwei_ziehen = false; } else { //Normales ziehen kartensatz.ziehen(amZug); - spiel(dashboard); + System.out.println("\nSPIEL 1 Karte gezogen"); } + alternieren(dashboard); } else { //AussetzenButton return; } - System.out.println("Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER)); - System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); + System.out.println("SPIEL Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER)); + System.out.println("SPIEL Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); } /** - * setzt Effekt-Variablen + * setzt Effekt-Variablen und Wunschfarbe für einen Wünscher */ private void effekteSetzen() { gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); @@ -186,6 +211,14 @@ public class Spiel { zwei_ziehen = true; kartenZiehen += 2; } - System.out.println("Effekte gesetzt:\nAussetzen: " + aussetzen + "\nZwei_Ziehen: " + zwei_ziehen ); + if(gelegterWert == Wert.BUBE) { + if(amZug == Spieler.COMPUTER) { + kartensatz.SetWunschfarbe(computerGegner.farbeAussuchen()); + } + else { + kartensatz.SetWunschfarbe(Farbe.HERZ); //FARBE VON GUI ERHALTEN! + } + } + System.out.println("\nSPIEL Effekte gesetzt:\nSPIEL Aussetzen: " + aussetzen + "\nSPIEL Zwei_Ziehen: " + zwei_ziehen ); } }