aufgabe 5 state pattern

This commit is contained in:
Johannes Schmelz 2024-06-18 21:25:33 +00:00
parent 2638ca09b6
commit 4b574c50e8
6 changed files with 33 additions and 12 deletions

Binary file not shown.

View File

@ -1,5 +1,6 @@
package cards.maumau.model;
import cards.Card;
import cards.Suit;
@ -11,8 +12,8 @@ class ActionHandler {
private Suit chosenSuit;
private int ctr7 = 0;
private GameState gameState;
private HandlerState handlerState;
private GameState gameState = GameState.GAME_INITIALIZED;
private HandlerState handlerState = new Initialized(this);
/**
* Constructs an ActionHandler for the specified MauMau game.
@ -37,7 +38,7 @@ class ActionHandler {
* @param player The player to be added to the game.
*/
void addPlayer(Player player) {
//TODO implement
handlerState.addPlayer(player);
}
/**

View File

@ -1,6 +1,7 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
public class Normal implements HandlerState {
@ -12,15 +13,30 @@ public class Normal implements HandlerState {
public void addPlayer(Player player){}
public void startGame(){}
public void finishGame(){
// Logic for finishing Game ????
if (handler.getGame().getPlayerHandler().getPlayers().isEmpty()) {
handler.setHandlerState(new Finished(handler));
public void finishGame(){}
public void cancelGame(){}
public void chooseCard(Card c){
if (handler.canPlay(c)) {
handler.getGame().getPlayerHandler().getCurrentPlayer().playCard(c);
if (c.rank() == Rank.SEVEN) {
handler.increment7Counter();
handler.getGame().getPlayerHandler().nextTurn(1);
handler.setHandlerState(new SevenChosen(handler));
} else if (c.rank() == Rank.JACK) {
handler.setHandlerState(new JackChosen(handler));
} else if (c.rank() == Rank.EIGHT) {
handler.getGame().getPlayerHandler().nextTurn(2);
} else {
handler.getGame().getPlayerHandler().nextTurn(1);
}
}
}
public void cancelGame(){}
public void chooseCard(Card c){}
public void chooseSuit(Suit suit){}
public void skip(){}
public void skip(){
handler.getGame().getPlayerHandler().getCurrentPlayer().drawCards(1);
handler.getGame().getPlayerHandler().nextTurn(1);
}
public void no7(){}
}

View File

@ -14,9 +14,13 @@ public class WaitForNextTurnState implements PlayerState {
handler.setRemember(handler.getCurrentPlayer());
handler.localNextTurn(n);
handler.setCurrentState(handler.getWaitForMauMauState());
} else {
} else if (handler.getCurrentPlayer().getCards().size() == 1) {
handler.setRemember(handler.getCurrentPlayer());
handler.localNextTurn(n);
handler.setCurrentState(handler.getWaitForMauState());
} else {
handler.localNextTurn(n);
handler.setCurrentState(handler.getWaitForNextTurnState());
}
}