alternieren() hinzugefügt und mehrer Bugs gelöst

This commit is contained in:
Fabian Keller
2021-01-07 17:33:31 +01:00
parent a93799ff46
commit a222a80273

View File

@@ -3,6 +3,7 @@ package de.jaujau.spiellogik;
import java.util.Random; import java.util.Random;
import de.jaujau.daten.Audio; import de.jaujau.daten.Audio;
import de.jaujau.daten.Farbe;
import de.jaujau.daten.Kartensatz; import de.jaujau.daten.Kartensatz;
import de.jaujau.daten.Spieler; import de.jaujau.daten.Spieler;
import de.jaujau.daten.Wert; import de.jaujau.daten.Wert;
@@ -22,7 +23,6 @@ public class Spiel {
private Kartensatz kartensatz; private Kartensatz kartensatz;
private Spielzug spielzug; private Spielzug spielzug;
private Computer_gegner computerGegner; private Computer_gegner computerGegner;
private boolean spielgestartet;
private boolean aussetzen; private boolean aussetzen;
private boolean zwei_ziehen; private boolean zwei_ziehen;
private int kartenZiehen; private int kartenZiehen;
@@ -33,7 +33,6 @@ public class Spiel {
kartensatz = new Kartensatz(); kartensatz = new Kartensatz();
computerGegner = new Computer_gegner(kartensatz); computerGegner = new Computer_gegner(kartensatz);
spielzug = new Spielzug(kartensatz); spielzug = new Spielzug(kartensatz);
spielgestartet = false;
dashboard = dashboard_gui; dashboard = dashboard_gui;
} }
@@ -58,47 +57,41 @@ public class Spiel {
/** /**
* Organisiert den Spielablauf * Initialisiert ein Spiel
* @param dashboard
*/ */
public void spiel(Dashboard_GUI dashboard) { public void spiel(Dashboard_GUI dashboard) {
//Spiel nicht gestartet System.out.println("SPIEL Spiel gestartet.");
if(!spielgestartet) {
System.out.println("Spiel gestartet.");
Random zufallszahl = new Random(); Random zufallszahl = new Random();
int zahl = zufallszahl.nextInt(2); int zahl = zufallszahl.nextInt(2);
if(zahl == 1) { //Starter durch zufall bestimmen if(zahl == 1) { //Starter durch zufall bestimmen
amZug = Spieler.SPIELER; amZug = Spieler.SPIELER;
System.out.println("Spieler startet"); System.out.println("SPIEL Spieler startet");
} }
else { else {
amZug = Spieler.COMPUTER; amZug = Spieler.COMPUTER;
System.out.println("Computer startet"); System.out.println("SPIEL Computer startet");
} }
spielgestartet = true;
for(int i = 0; i < 7; i++) { //Jeder bekommt 7 Karten for(int i = 0; i < 7; i++) { //Jeder bekommt 7 Karten
kartensatz.ziehen(Spieler.COMPUTER); kartensatz.ziehen(Spieler.COMPUTER);
kartensatz.ziehen(Spieler.SPIELER); kartensatz.ziehen(Spieler.SPIELER);
} }
//FUNKTION erste Karte
int kartenindex = zufallszahl.nextInt(32); int kartenindex = zufallszahl.nextInt(32);
while(kartensatz.getHand(Spieler.COMPUTER).contains(kartenindex)||kartensatz.getHand(Spieler.SPIELER).contains(kartenindex)) { while(kartensatz.getHand(Spieler.COMPUTER).contains(kartenindex)||kartensatz.getHand(Spieler.SPIELER).contains(kartenindex)) {
kartenindex = zufallszahl.nextInt(32); kartenindex = zufallszahl.nextInt(32);
} }
kartensatz.ablegen(kartenindex); //nicht in der Hand befindliche Karte zum Start aufdecken 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("SPIEL Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER));
System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); System.out.println("SPIEL Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER));
//COMPUTER DIREKT AM ZUG effekteSetzen();
return; if(amZug == Spieler.COMPUTER) {
}
//Spiel bereits gestartet
if(amZug == Spieler.SPIELER) {
amZug = Spieler.COMPUTER;
dashboard.aktualisiereGUI(); //Komplette GUI wird aktualisiert
System.out.println("Computer am Zug");
int computerZug = computerGegner.cpu_Zug(zwei_ziehen, aussetzen); int computerZug = computerGegner.cpu_Zug(zwei_ziehen, aussetzen);
System.out.println("Computerauswahl: " + computerZug); System.out.println("\nSPIEL Computerauswahl: " + computerZug);
switch(computerZug) { switch(computerZug) {
case -2: //aussetzen case -2: //aussetzen anzeigen?
aussetzen = false; aussetzen = false;
alternieren(dashboard);
break; break;
case -1: case -1:
karteZiehen(); karteZiehen();
@@ -108,14 +101,44 @@ public class Spiel {
break; 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 { else {
amZug = Spieler.SPIELER; amZug = Spieler.SPIELER;
System.out.println("Spieler am Zug"); 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! 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; 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) { public void karteLegen(int kartenindex) {
if(spielzug.zugMoeglich(amZug, zwei_ziehen, aussetzen)) { //m<>gliche Karte auf der Hand 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<65>hlte Karte kann gelegt werden if (spielzug.pruefeZug(kartenindex, zwei_ziehen, aussetzen)) { //gew<65>hlte Karte kann gelegt werden
System.out.println("pruefeZug positiv"); System.out.println("SPIEL pruefeZug positiv");
kartensatz.ablegen(kartenindex); //Nullpointer System.out.println("SPIEL Lege Karte " + kartenindex);
kartensatz.ablegen(kartenindex);
if(kartensatz.getHand(amZug).size() == 1) { if(kartensatz.getHand(amZug).size() == 1) {
audio.spieleJau(); audio.spieleJau();
} }
@@ -139,12 +163,12 @@ public class Spiel {
// Spieler Gewonnen aufrufen, Punkte aktualisieren // Spieler Gewonnen aufrufen, Punkte aktualisieren
// Highscore Page oder Startseite aufrufen // 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(); 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(!aussetzen) {
if(zwei_ziehen) { //mehrere ziehen if(zwei_ziehen) { //mehrere ziehen
for(int i = 0; i < kartenZiehen; i++) { for(int i = 0; i < kartenZiehen; i++) {
System.out.println("\nSPIEL " + kartenZiehen + " Karten gezogen");
kartensatz.ziehen(amZug); kartensatz.ziehen(amZug);
} }
kartenZiehen = 0; kartenZiehen = 0;
zwei_ziehen = false; zwei_ziehen = false;
spiel(dashboard);
} }
else { //Normales ziehen else { //Normales ziehen
kartensatz.ziehen(amZug); kartensatz.ziehen(amZug);
spiel(dashboard); System.out.println("\nSPIEL 1 Karte gezogen");
} }
alternieren(dashboard);
} }
else { //AussetzenButton else { //AussetzenButton
return; return;
} }
System.out.println("Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER)); System.out.println("SPIEL Kartenhand von COMPUTER: " + kartensatz.getHand(Spieler.COMPUTER));
System.out.println("Kartenhand von SPIELER: " + kartensatz.getHand(Spieler.SPIELER)); 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() { private void effekteSetzen() {
gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT();
@@ -186,6 +211,14 @@ public class Spiel {
zwei_ziehen = true; zwei_ziehen = true;
kartenZiehen += 2; 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 );
} }
} }