bis playerhandler states
This commit is contained in:
parent
2f702b016c
commit
b4652c5b4e
@ -23,7 +23,12 @@ public record Card(Rank rank, Suit suit) implements Comparable<Card> {
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(Card other) {
|
||||
//TODO implement
|
||||
return 0;
|
||||
int rankcomparison = rank.compareTo(other.rank);
|
||||
|
||||
if (rankcomparison != 0) {
|
||||
return rankcomparison;
|
||||
} else {
|
||||
return suit.compareTo(other.suit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,35 @@ public enum Rank {
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
//TODO implement
|
||||
return super.toString();
|
||||
switch (this) {
|
||||
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
|
||||
public String toString() {
|
||||
//TODO implement
|
||||
return super.toString();
|
||||
switch (this) {
|
||||
case HEARTS:
|
||||
return "♥︎";
|
||||
case DIAMONDS:
|
||||
return "♦︎";
|
||||
case CLUBS:
|
||||
return "♣︎";
|
||||
case SPADES:
|
||||
return "♠︎";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
package cards.maumau;
|
||||
|
||||
import cards.Card;
|
||||
import cards.Rank;
|
||||
import cards.Suit;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -20,7 +23,20 @@ public class MauMauDeck {
|
||||
* @return A list containing the generated deck of cards.
|
||||
*/
|
||||
public static List<Card> makeDeck(int numDecks) {
|
||||
//TODO implement
|
||||
return null;
|
||||
List<Card> deck = List.of();
|
||||
|
||||
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.
|
||||
*/
|
||||
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 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.
|
||||
*
|
||||
@ -28,7 +139,7 @@ class PlayerHandler {
|
||||
* @param n The number of turns to proceed.
|
||||
*/
|
||||
void nextTurn(int n) {
|
||||
//TODO implement
|
||||
currentState.nextTurn(n);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -37,7 +148,7 @@ class PlayerHandler {
|
||||
* @param p The player calling "Mau".
|
||||
*/
|
||||
void mau(Player p) {
|
||||
//TODO implement
|
||||
currentState.mau(p);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,7 +157,7 @@ class PlayerHandler {
|
||||
* @param p The player calling "Mau-Mau".
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
private void finishPlayer(Player p) {
|
||||
//TODO implement
|
||||
ranking.addLast(players.removeLast());
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user