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
|
@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());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user