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

View File

@ -1,6 +1,7 @@
package cards.maumau.model; package cards.maumau.model;
import cards.Card; import cards.Card;
import cards.Rank;
import cards.Suit; import cards.Suit;
public class Normal implements HandlerState { public class Normal implements HandlerState {
@ -12,15 +13,30 @@ public class Normal implements HandlerState {
public void addPlayer(Player player){} public void addPlayer(Player player){}
public void startGame(){} public void startGame(){}
public void finishGame(){ public void finishGame(){}
// Logic for finishing Game ???? public void cancelGame(){}
if (handler.getGame().getPlayerHandler().getPlayers().isEmpty()) {
handler.setHandlerState(new Finished(handler)); 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 chooseSuit(Suit suit){}
public void skip(){} public void skip(){
handler.getGame().getPlayerHandler().getCurrentPlayer().drawCards(1);
handler.getGame().getPlayerHandler().nextTurn(1);
}
public void no7(){} public void no7(){}
} }

View File

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