mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 03:39:34 +01:00
edited a lot of stuff (#52)
This commit is contained in:
committed by
GitHub
parent
539e29dc56
commit
ea5df95228
@@ -0,0 +1,51 @@
|
||||
package org.schafkopf;
|
||||
|
||||
import java.util.List;
|
||||
import org.schafkopf.SchafkopfException.NotEnoughPlayersException;
|
||||
import org.schafkopf.SchafkopfMessage.SchafkopfBaseMessage;
|
||||
import org.schafkopf.SchafkopfMessage.SchafkopfMessageType;
|
||||
import org.schafkopf.player.BotPlayer;
|
||||
import org.schafkopf.player.Player;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
/**
|
||||
* The main entrypoint of the Application.
|
||||
*/
|
||||
public abstract class BaseGameSession implements MessageSender {
|
||||
|
||||
protected static final Logger logger = LoggerFactory.getLogger(BaseGameSession.class);
|
||||
protected Thread spielThread;
|
||||
protected Schafkopf schafkopf;
|
||||
protected List<Player> players;
|
||||
|
||||
void startGame(List<Player> players) {
|
||||
logger.info("Starting game");
|
||||
for (int i = players.size(); i < 4; i++) {
|
||||
players.add(new BotPlayer("Bot " + i));
|
||||
}
|
||||
|
||||
sendMessage(new SchafkopfBaseMessage(SchafkopfMessageType.GAME_START_READY));
|
||||
|
||||
//wait for 5 seconds
|
||||
try {
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
spielThread = new Thread(() -> {
|
||||
try {
|
||||
schafkopf = new Schafkopf(players.toArray(Player[]::new), this);
|
||||
schafkopf.startGame();
|
||||
} catch (NotEnoughPlayersException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
|
||||
spielThread.start();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.schafkopf.player;
|
||||
|
||||
import org.schafkopf.MessageSender;
|
||||
import org.schafkopf.SchafkopfMessage.SchafkopfBaseMessage;
|
||||
import org.schafkopf.karte.Karte;
|
||||
import org.schafkopf.karte.KartenListe;
|
||||
import org.schafkopf.karte.KartenUtil;
|
||||
@@ -13,8 +15,17 @@ public class BotPlayer extends Player {
|
||||
private KartenListe eigeneKarten;
|
||||
private KartenListe unbekannteKarten = KartenUtil.initializeSchafKopfCardDeck();
|
||||
|
||||
/**
|
||||
* Constructor for the BotPlayer.
|
||||
*/
|
||||
public BotPlayer(String name) {
|
||||
super(name);
|
||||
super(name, new MessageSender() {
|
||||
@Override
|
||||
public void sendMessage(SchafkopfBaseMessage message) {
|
||||
System.out.println("BotPlayer: " + message);
|
||||
}
|
||||
});
|
||||
this.setReady(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,4 +56,14 @@ public class BotPlayer extends Player {
|
||||
this.unbekannteKarten.removeKarten(eigeneKarten);
|
||||
System.out.println("Eigene Karte fertig");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(SchafkopfBaseMessage message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetReady() {
|
||||
// Not needed
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,14 +15,12 @@ import org.schafkopf.spielcontroller.SpielController;
|
||||
*/
|
||||
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, String name) {
|
||||
super(name);
|
||||
this.messageSender = messageSender;
|
||||
super(name, messageSender);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,6 +51,11 @@ public class OnlinePlayer extends Player {
|
||||
return spielKarte;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetReady() {
|
||||
this.setReady(false);
|
||||
}
|
||||
|
||||
private void sendPlayerCards() {
|
||||
JsonObject messageObject = new JsonObject();
|
||||
messageObject.add("cards", this.karten.getJson());
|
||||
@@ -68,4 +71,9 @@ public class OnlinePlayer extends Player {
|
||||
System.out.println("Received Card before Queue: " + receivedCard.getName());
|
||||
receivedCardQueue.add(receivedCard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(SchafkopfBaseMessage message) {
|
||||
messageSender.sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.schafkopf.player;
|
||||
|
||||
import org.schafkopf.MessageSender;
|
||||
import org.schafkopf.karte.Karte;
|
||||
import org.schafkopf.karte.KartenListe;
|
||||
import org.schafkopf.spielcontroller.SpielController;
|
||||
@@ -7,11 +8,14 @@ import org.schafkopf.spielcontroller.SpielController;
|
||||
/**
|
||||
* Class that represents one Player of the game.
|
||||
*/
|
||||
public abstract class Player {
|
||||
public abstract class Player implements MessageSender {
|
||||
|
||||
protected MessageSender messageSender;
|
||||
private boolean ready = false;
|
||||
private String name;
|
||||
|
||||
protected Player(String name) {
|
||||
protected Player(String name, MessageSender messageSender) {
|
||||
this.messageSender = messageSender;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@@ -19,7 +23,21 @@ public abstract class Player {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public abstract Karte play(
|
||||
SpielController spiel, KartenListe tischKarten, KartenListe gespielteKarten)
|
||||
throws InterruptedException;
|
||||
|
||||
public abstract void resetReady();
|
||||
|
||||
public void setReady(boolean ready) {
|
||||
this.ready = ready;
|
||||
}
|
||||
|
||||
public boolean isReady() {
|
||||
return ready;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user