bis playerhandler states
This commit is contained in:
		@@ -23,7 +23,12 @@ public record Card(Rank rank, Suit suit) implements Comparable<Card> {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public int compareTo(Card other) {
 | 
					    public int compareTo(Card other) {
 | 
				
			||||||
        //TODO implement
 | 
					        int rankcomparison = rank.compareTo(other.rank);
 | 
				
			||||||
        return 0;
 | 
					
 | 
				
			||||||
 | 
					        if (rankcomparison != 0) {
 | 
				
			||||||
 | 
					            return rankcomparison;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return suit.compareTo(other.suit);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,35 @@ public enum Rank {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        //TODO implement
 | 
					        switch (this) {
 | 
				
			||||||
        return super.toString();
 | 
					            case TWO:
 | 
				
			||||||
 | 
					                return "2";
 | 
				
			||||||
 | 
					            case THREE:
 | 
				
			||||||
 | 
					                return "3";
 | 
				
			||||||
 | 
					            case FOUR:
 | 
				
			||||||
 | 
					                return "4";
 | 
				
			||||||
 | 
					            case FIVE:
 | 
				
			||||||
 | 
					                return "5";
 | 
				
			||||||
 | 
					            case SIX:
 | 
				
			||||||
 | 
					                return "6";
 | 
				
			||||||
 | 
					            case SEVEN:
 | 
				
			||||||
 | 
					                return "7";
 | 
				
			||||||
 | 
					            case EIGHT:
 | 
				
			||||||
 | 
					                return "8";
 | 
				
			||||||
 | 
					            case NINE:
 | 
				
			||||||
 | 
					                return "9";
 | 
				
			||||||
 | 
					            case TEN:
 | 
				
			||||||
 | 
					                return "10";
 | 
				
			||||||
 | 
					            case JACK:
 | 
				
			||||||
 | 
					                return "J";
 | 
				
			||||||
 | 
					            case QUEEN:
 | 
				
			||||||
 | 
					                return "Q";
 | 
				
			||||||
 | 
					            case KING:
 | 
				
			||||||
 | 
					                return "K";
 | 
				
			||||||
 | 
					            case ACE:
 | 
				
			||||||
 | 
					                return "A";
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                return "";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,17 @@ public enum Suit {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        //TODO implement
 | 
					        switch (this) {
 | 
				
			||||||
        return super.toString();
 | 
					            case HEARTS:
 | 
				
			||||||
 | 
					                return "♥︎";
 | 
				
			||||||
 | 
					            case DIAMONDS:
 | 
				
			||||||
 | 
					                return "♦︎";
 | 
				
			||||||
 | 
					            case CLUBS:
 | 
				
			||||||
 | 
					                return "♣︎";
 | 
				
			||||||
 | 
					            case SPADES:
 | 
				
			||||||
 | 
					                return "♠︎";
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                return "";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,10 @@
 | 
				
			|||||||
package cards.maumau;
 | 
					package cards.maumau;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cards.Card;
 | 
					import cards.Card;
 | 
				
			||||||
 | 
					import cards.Rank;
 | 
				
			||||||
 | 
					import cards.Suit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -20,7 +23,20 @@ public class MauMauDeck {
 | 
				
			|||||||
     * @return A list containing the generated deck of cards.
 | 
					     * @return A list containing the generated deck of cards.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static List<Card> makeDeck(int numDecks) {
 | 
					    public static List<Card> makeDeck(int numDecks) {
 | 
				
			||||||
        //TODO implement
 | 
					        List<Card> deck = List.of();
 | 
				
			||||||
        return null;
 | 
					
 | 
				
			||||||
 | 
					        for(int i = 0; i < numDecks; i++){
 | 
				
			||||||
 | 
					            for(Rank rank : Rank.values()) {
 | 
				
			||||||
 | 
					                for(Suit suit : Suit.values()) {
 | 
				
			||||||
 | 
					                    if(rank != Rank.TWO && rank != Rank.THREE && rank != Rank.FOUR && rank != Rank.FIVE && rank != Rank.SIX) {
 | 
				
			||||||
 | 
					                        deck.add(new Card(rank,suit));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Collections.shuffle(deck);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return deck;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,7 +73,11 @@ class CardHandler {
 | 
				
			|||||||
     * Deals cards to all players.
 | 
					     * Deals cards to all players.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void dealCards() {
 | 
					    void dealCards() {
 | 
				
			||||||
        //TODO implement
 | 
					        for (Player player : game.getPlayerHandler().getPlayers()) {
 | 
				
			||||||
 | 
					            for (int i = 0; i < numCardsPerPlayer; i++) {
 | 
				
			||||||
 | 
					                player.getCards().add(drawCard());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,117 @@ class PlayerHandler {
 | 
				
			|||||||
    private final List<Player> ranking = new ArrayList<>();
 | 
					    private final List<Player> ranking = new ArrayList<>();
 | 
				
			||||||
    private Player remember;
 | 
					    private Player remember;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private interface PlayerState {
 | 
				
			||||||
 | 
					        void nextTurn(int n);
 | 
				
			||||||
 | 
					        void mau(Player p);
 | 
				
			||||||
 | 
					        void maumau(Player p);
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final  PlayerState waitForNextTurnState = new PlayerState() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void nextTurn(int n) {
 | 
				
			||||||
 | 
					            decide(n);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void mau(Player p) {
 | 
				
			||||||
 | 
					            //Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void maumau(Player p) {
 | 
				
			||||||
 | 
					            // Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final  PlayerState waitForMauState = new PlayerState() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void nextTurn(int n) {
 | 
				
			||||||
 | 
					            remember.drawCards(1);
 | 
				
			||||||
 | 
					            decide(n);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void mau(Player p) {
 | 
				
			||||||
 | 
					            if (p == remember) {
 | 
				
			||||||
 | 
					                currentState = waitForNextTurnState;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void maumau(Player p) {
 | 
				
			||||||
 | 
					            //Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final  PlayerState waitForMauMauState = new PlayerState() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void nextTurn(int n) {
 | 
				
			||||||
 | 
					            remember.drawCards(1);
 | 
				
			||||||
 | 
					            decide(n);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void mau(Player p) {
 | 
				
			||||||
 | 
					            //Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void maumau(Player p) {
 | 
				
			||||||
 | 
					            if (p == remember) {
 | 
				
			||||||
 | 
					                finishPlayer(p);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (players.size() == 1) {
 | 
				
			||||||
 | 
					                finishPlayer(getCurrentPlayer());
 | 
				
			||||||
 | 
					                game.getActionHandler().finishGame();
 | 
				
			||||||
 | 
					                currentState = finishedState;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                currentState = waitForNextTurnState;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final  PlayerState finishedState = new PlayerState() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void nextTurn(int n) {
 | 
				
			||||||
 | 
					            //Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void mau(Player p) {
 | 
				
			||||||
 | 
					            // Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void maumau(Player p) {
 | 
				
			||||||
 | 
					            // Do nothing
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void decide(int n) {
 | 
				
			||||||
 | 
					        if (getCurrentPlayer().getCards().isEmpty()) {
 | 
				
			||||||
 | 
					            remember = getCurrentPlayer();
 | 
				
			||||||
 | 
					            localNextTurn(n);
 | 
				
			||||||
 | 
					            currentState = waitForMauMauState;
 | 
				
			||||||
 | 
					        } else if (getCurrentPlayer().getCards().size() == 1) {
 | 
				
			||||||
 | 
					            remember = getCurrentPlayer();
 | 
				
			||||||
 | 
					            localNextTurn(n);
 | 
				
			||||||
 | 
					            currentState = waitForMauState;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            localNextTurn(n);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private PlayerState currentState = waitForNextTurnState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Constructs a PlayerHandler for the specified MauMau game.
 | 
					     * Constructs a PlayerHandler for the specified MauMau game.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -28,7 +139,7 @@ class PlayerHandler {
 | 
				
			|||||||
     * @param n The number of turns to proceed.
 | 
					     * @param n The number of turns to proceed.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void nextTurn(int n) {
 | 
					    void nextTurn(int n) {
 | 
				
			||||||
        //TODO implement
 | 
					        currentState.nextTurn(n);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -37,7 +148,7 @@ class PlayerHandler {
 | 
				
			|||||||
     * @param p The player calling "Mau".
 | 
					     * @param p The player calling "Mau".
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void mau(Player p) {
 | 
					    void mau(Player p) {
 | 
				
			||||||
        //TODO implement
 | 
					        currentState.mau(p);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -46,7 +157,7 @@ class PlayerHandler {
 | 
				
			|||||||
     * @param p The player calling "Mau-Mau".
 | 
					     * @param p The player calling "Mau-Mau".
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void maumau(Player p) {
 | 
					    void maumau(Player p) {
 | 
				
			||||||
        //TODO implement
 | 
					        currentState.maumau(p);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -74,7 +185,10 @@ class PlayerHandler {
 | 
				
			|||||||
     * @throws IllegalArgumentException if a player with the same name already exists.
 | 
					     * @throws IllegalArgumentException if a player with the same name already exists.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void addPlayer(Player player) {
 | 
					    void addPlayer(Player player) {
 | 
				
			||||||
        //TODO implement
 | 
					        if (!players.contains(player)) {
 | 
				
			||||||
 | 
					            throw new IllegalArgumentException("Player with name " + player.getName() + " already exists.");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        players.add(player);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -83,7 +197,9 @@ class PlayerHandler {
 | 
				
			|||||||
     * @param n The number of turns to proceed.
 | 
					     * @param n The number of turns to proceed.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void localNextTurn(int n) {
 | 
					    private void localNextTurn(int n) {
 | 
				
			||||||
        //TODO implement
 | 
					        for (int i = 0; i < n; i++) {
 | 
				
			||||||
 | 
					            players.addLast(players.removeFirst());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -92,7 +208,7 @@ class PlayerHandler {
 | 
				
			|||||||
     * @param p The player to finish.
 | 
					     * @param p The player to finish.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void finishPlayer(Player p) {
 | 
					    private void finishPlayer(Player p) {
 | 
				
			||||||
        //TODO implement
 | 
					        ranking.addLast(players.removeLast());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user