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 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<65>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 );
}
}