edited stuff (#50)

This commit is contained in:
Valentin Heiserer
2024-04-23 23:27:01 +02:00
committed by GitHub
parent b8b89ee696
commit 2e5a42b6d3
8 changed files with 62 additions and 47 deletions

View File

@@ -1,12 +1,9 @@
package org.schafkopf;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.schafkopf.GameState.GamePhase;
import org.schafkopf.SchafkopfException.NotEnoughPlayersException;
import org.schafkopf.SchafkopfMessage.SchafkopfBaseMessage;
import org.schafkopf.SchafkopfMessage.SchafkopfMessageType;
import org.schafkopf.karte.Karte;
import org.schafkopf.karte.KartenFarbe;
import org.schafkopf.karte.KartenListe;
import org.schafkopf.karte.KartenUtil;
@@ -79,23 +76,15 @@ public class Schafkopf {
}
for (Player currentPlayer : player) {
if (currentPlayer instanceof OnlinePlayer) {
Karte[] karten = new Karte[8];
if (currentPlayer instanceof OnlinePlayer onlinePlayer) {
KartenListe karten = new KartenListe();
for (int i = 7; i >= 0; i--) {
karten[i] = austeilen.removeKarten(austeilen.getByIndex(i));
karten.addKarten(austeilen.removeKarten(austeilen.getByIndex(i)));
}
Gson gson = new Gson();
JsonObject messageObject = new JsonObject();
messageObject.add("cards", gson.toJsonTree(karten));
messageSender.sendMessage(
new SchafkopfBaseMessage(SchafkopfMessageType.ONLINE_PLAYER_HAND, messageObject));
onlinePlayer.setAndSendPlayerCards(karten);
}
}
// spielThread = new Thread(() -> new Spielablauf(this, spiel));
//
// spielThread.start();
new Spielablauf(this, spiel);
}
}

View File

@@ -1,7 +1,7 @@
package org.schafkopf.karte;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonElement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -25,6 +25,19 @@ public class KartenListe {
return this.kartenListe;
}
/**
* A Class that represents a list of Cards.
*/
public void sort() {
KartenListe completeDeck = KartenUtil.initializeSchafKopfCardDeck();
completeDeck.removeKarten(this);
KartenListe completeDeck2 = KartenUtil.initializeSchafKopfCardDeck();
completeDeck2.removeKarten(completeDeck);
this.kartenListe = completeDeck2.getKartenListe();
}
public void shuffle() {
Collections.shuffle(this.kartenListe);
}
@@ -185,12 +198,10 @@ public class KartenListe {
/**
* A Class that represents a list of Cards.
*/
public JsonObject getJson() {
public JsonElement getJson() {
Gson gson = new Gson();
JsonObject jsonObject = new JsonObject();
jsonObject.add("cards", gson.toJsonTree(this.kartenListe));
return jsonObject;
return gson.toJsonTree(this.kartenListe);
}
public boolean isEmpty() {

View File

@@ -5,7 +5,9 @@ import org.schafkopf.karte.KartenListe;
import org.schafkopf.karte.KartenUtil;
import org.schafkopf.spielcontroller.SpielController;
/** Player that represents the Bot. */
/**
* Player that represents the Bot.
*/
public class BotPlayer extends Player {
private KartenListe eigeneKarten;
@@ -32,9 +34,12 @@ public class BotPlayer extends Player {
return card;
}
/** Set the Cards of the Player. */
/**
* Set the Cards of the Player.
*/
public void setCards(KartenListe cards) {
System.out.println("Eigene Karte setzen");
cards.sort();
this.eigeneKarten = cards;
this.unbekannteKarten = KartenUtil.initializeSchafKopfCardDeck();
this.unbekannteKarten.removeKarten(eigeneKarten);

View File

@@ -1,5 +1,6 @@
package org.schafkopf.player;
import com.google.gson.JsonObject;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import org.schafkopf.MessageSender;
@@ -17,13 +18,26 @@ public class OnlinePlayer extends Player {
private final MessageSender messageSender;
private final BlockingQueue<Karte> receivedCardQueue = new LinkedBlockingQueue<>();
private KartenListe karten = new KartenListe();
public OnlinePlayer(MessageSender messageSender) {
this.messageSender = messageSender;
}
/**
* A Class that represents a list of Cards.
*/
public void setAndSendPlayerCards(KartenListe karten) {
karten.sort();
this.karten = karten;
sendPlayerCards();
}
@Override
public Karte play(SpielController spiel, KartenListe tischKarten, KartenListe gespielteKarten)
throws InterruptedException {
sendPlayerCards();
Karte spielKarte = null;
// Send the message to request the card from the frontend
@@ -32,10 +46,20 @@ public class OnlinePlayer extends Player {
spielKarte = receivedCardQueue.take();
this.karten.removeKarten(spielKarte);
sendPlayerCards();
System.out.println("Karte gespielt: " + spielKarte);
return spielKarte;
}
private void sendPlayerCards() {
JsonObject messageObject = new JsonObject();
messageObject.add("cards", this.karten.getJson());
messageSender.sendMessage(
new SchafkopfBaseMessage(SchafkopfMessageType.ONLINE_PLAYER_HAND, messageObject));
}
/**
* Class that represents one Frontend Connection.
*/