From 24ad89126340148b398fe1f6f1840af9f71355e8 Mon Sep 17 00:00:00 2001 From: Fabian Keller Date: Tue, 5 Jan 2021 22:51:54 +0100 Subject: [PATCH] =?UTF-8?q?Sound=C3=BCberlegungen=20und=20Umstrukturierung?= =?UTF-8?q?=20der=20Klasse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/jaujau/spiellogik/Spiel.java | 59 +++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index f8a305a..43ef0c8 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -1,8 +1,8 @@ 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; @@ -10,19 +10,21 @@ import de.jaujau.daten.Wert; /** - * Diese Klasse prüft die Spielaktionen und alterniert zwischen Spieler und Computer + * Diese Klasse organisiert den Spielablauf * @author Fabian Keller */ public class Spiel { private Spieler amZug; + private Wert gelegterWert; + private Audio audio = new Audio(); + private Kartensatz kartensatz; + private Spielzug spielzug = new Spielzug(); + private Computer_gegner computerGegner = new Computer_gegner(); private boolean spielgestartet = false; private boolean aussetzen; private boolean zwei_ziehen; private int kartenZiehen; - private Kartensatz kartensatz; - private Wert gelegterWert; - private Spielzug spielzug; public boolean getAussetzen() { @@ -41,9 +43,9 @@ public class Spiel { /** - * alterniert zwischen Spieler und Computer und legt Beginner fest + * alterniert zwischen Spieler und Computer, legt Beginner fest */ - private void spiel() { + public void spiel() { if(!spielgestartet) { Random zufallszahl = new Random(); int zahl = zufallszahl.nextInt(1); @@ -67,6 +69,10 @@ public class Spiel { } if(amZug == Spieler.SPIELER) { amZug = Spieler.COMPUTER; + if(spielzug.zugMoeglich(Spieler.COMPUTER)) { + //karteLegen(computerGegner.cpu_Zug()); + } + else karteZiehen(); } else { amZug= Spieler.SPIELER; @@ -78,27 +84,31 @@ public class Spiel { * falls eine Karte gelegt werden kann wird diese gelegt * @param kartenindex */ - private void karteLegen(int kartenindex) { //WÜNSCHER? + public void karteLegen(int kartenindex) { if(spielzug.zugMoeglich(amZug)) { if (spielzug.pruefeZug(kartenindex)) { kartensatz.ablegen(kartenindex); + if(kartensatz.getHand(amZug).size() == 1) { + spieleTon(true); + } if(kartensatz.getHand(amZug).isEmpty()) { - //Spieler hat gewonnen, keine Karte mehr auf der Hand -- Was passiert? + spieleTon(false); + //Spieler hat gewonnen, keine Karte mehr auf der Hand -- Was passiert? // Spieler Gewonnen aufrufen, Punkte aktualisieren } spiel(); - effekteSetzen(); //kartenindex übergeben und anhand dessen effekte setzen - }//oder ziehen? - }// else kein Zug möglich + effekteSetzen(); + } + } else { aussetzen = false; } - }//wann wird aussetzen auf false gesetzt + } /** * falls eine oder mehrere Karten gezogen werden können, wird dies ausgeführt */ - private void karteZiehen(){ + public void karteZiehen(){ if(spielzug.zugMoeglich(amZug)) { if(zwei_ziehen) { for(int i = 0; i < kartenZiehen; i++) { @@ -118,7 +128,7 @@ public class Spiel { /** * setzt Effekt-Variablen */ - private void effekteSetzen() { //was passiert wenn 2 gezogen wurde und dann der nächste spieler diese Funktion ausführt. + private void effekteSetzen() { gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); if(gelegterWert == Wert.ACHT) { aussetzen = true; @@ -128,4 +138,23 @@ public class Spiel { kartenZiehen += 2; } } + + + /** + * Spielt abhängig von einer Varibale optional den "Jau" oder den "JauJau" Sound ab + * @param auswahl true = Jau Sound + * false = JauJau Sound + */ + private void spieleTon(boolean auswahl) { + if(auswahl) { + Runnable jau = () -> audio.spieleJau(); + Thread threadJau = new Thread(jau); + threadJau.start(); + } + else { + Runnable jaujau = () -> audio.spieleJauJau(); + Thread threadJauJau = new Thread(jaujau); + threadJauJau.start(); + } + } }