- Added win with quartet implementation

- Wrote a test to check if quartet worked
- Wrote a test to check if a non-valid quartet didn't work
- Updated TODO.md
This commit is contained in:
Jordan Geurtsen
2022-09-20 23:35:16 +02:00
parent d1ffdec5d3
commit 62d7636981
5 changed files with 70 additions and 6 deletions

View File

@@ -12,11 +12,9 @@ public class Game {
private Card currentCard; private Card currentCard;
private final Deck deck = new Deck(); private final Deck deck = new Deck();
private Dealer dealer; private Dealer dealer;
private CardHandler cardHandler = new CardHandler(); private final CardHandler cardHandler = new CardHandler();
private TurnTable turnTable; private TurnTable turnTable;
private final List<Player> players = new ArrayList<>(); private final List<Player> players = new ArrayList<>();
private int playerTurn = 0;
private Boolean reverse = false;
public Game() { public Game() {
setupGame(); setupGame();
@@ -59,7 +57,7 @@ public class Game {
} }
System.out.println(deck.getDeck().size() + " cards left in deck"); System.out.println(deck.getDeck().size() + " cards left in deck");
} else { } else {
if(Referee.isValidEndCard(playedCard)) { if( Referee.isAmazedByAmazingQuartet || Referee.isValidEndCard(playedCard)) {
playCard(playedCard); playCard(playedCard);
System.out.println(player.getName() + " won!"); System.out.println(player.getName() + " won!");
} else { } else {

View File

@@ -1,11 +1,14 @@
package mau.mau; package mau.mau;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
public class Referee { public class Referee {
public static ArrayList<TYPENUM> allowedTypes = new ArrayList<>(); public static ArrayList<TYPENUM> allowedTypes = new ArrayList<>();
public static boolean isAmazedByAmazingQuartet = false;
public static boolean isValidMove(Card currentCard, Card playedCard) { public static boolean isValidMove(Card currentCard, Card playedCard) {
TYPENUM currentCardType = currentCard.getType(); TYPENUM currentCardType = currentCard.getType();
@@ -35,6 +38,25 @@ public class Referee {
return !isMauCard(card); return !isMauCard(card);
} }
public static boolean isValidQuartet(List<Card> hand){
boolean result = false;
for (Card card : hand) {
int count = 0;
for (Card card1 : hand) {
if (card.getValue() == card1.getValue()) {
count++;
}
}
if (count == 4) {
result = true;
Referee.isAmazedByAmazingQuartet = true;
break;
}
}
return result;
}
public static void setAllowedCards(TYPENUM type) { public static void setAllowedCards(TYPENUM type) {
allowedTypes.add(type); allowedTypes.add(type);
allowedTypes.add(TYPENUM.JOKER); allowedTypes.add(TYPENUM.JOKER);

View File

@@ -14,7 +14,6 @@ public class Human extends Player {
@Override @Override
public Card getPlay(Card currentCard) { public Card getPlay(Card currentCard) {
printHand(); printHand();
Scanner scanner = new Scanner(System.in); Scanner scanner = new Scanner(System.in);
List<Card> hand = getHand(); List<Card> hand = getHand();
@@ -30,6 +29,16 @@ public class Human extends Player {
hand.add(card); hand.add(card);
return null; return null;
} }
if (input.equals("quartet")) {
if (Referee.isValidQuartet(hand)) {
System.out.println("You played a quartet!");
hand.clear();
return null;
}
System.out.println("You don't have a quartet!");
continue;
}
if (Utils.isNumeric(input)) { if (Utils.isNumeric(input)) {
int cardIndex = Integer.parseInt(input); int cardIndex = Integer.parseInt(input);
if (cardIndex < 0 || cardIndex > hand.size()) { if (cardIndex < 0 || cardIndex > hand.size()) {
@@ -96,5 +105,6 @@ public class Human extends Player {
System.out.printf("| (%s) %s ", i, card); System.out.printf("| (%s) %s ", i, card);
} }
} }
System.out.println();
} }
} }

View File

@@ -1,7 +1,7 @@
# TODO # TODO
1. Refactoring 1. Refactoring
2. Huisregels toevoegen 2. Huisregels toevoegen
* Kwartet = win * ~~Kwartet = win~~
* 69 mag tegelijk opgelegd worden * 69 mag tegelijk opgelegd worden
* ~~Als er 2 spelers zijn, mag je 2x na een Ace~~ * ~~Als er 2 spelers zijn, mag je 2x na een Ace~~
3. Spelers kunnen een naam kiezen 3. Spelers kunnen een naam kiezen

View File

@@ -2,6 +2,8 @@ package mau.mau;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -119,4 +121,36 @@ public class RefereeTest {
//Assert //Assert
assertTrue(results); assertTrue(results);
} }
@Test
public void isAFourOfEveryTypeAValidQuartetTest(){
//Arrange
Card testCardOne = new Card(TYPENUM.HEARTS, VALUENUM.FOUR);
Card testCardTwo = new Card(TYPENUM.DIAMONDS, VALUENUM.FOUR);
Card testCardThree = new Card(TYPENUM.SPADES, VALUENUM.FOUR);
Card testCardFour = new Card(TYPENUM.CLUBS, VALUENUM.FOUR);
List<Card> hand = List.of(testCardOne, testCardTwo, testCardThree, testCardFour);
//Act
boolean results = Referee.isValidQuartet(hand);
//Assert
assertTrue(results);
}
@Test
public void isTwoFoursAndTwoThreesAValidQuartetTest(){
//Arrange
Card testCardOne = new Card(TYPENUM.HEARTS, VALUENUM.FOUR);
Card testCardTwo = new Card(TYPENUM.DIAMONDS, VALUENUM.FOUR);
Card testCardThree = new Card(TYPENUM.SPADES, VALUENUM.THREE);
Card testCardFour = new Card(TYPENUM.CLUBS, VALUENUM.THREE);
List<Card> hand = List.of(testCardOne, testCardTwo, testCardThree, testCardFour);
//Act
boolean results = Referee.isValidQuartet(hand);
//Assert
assertFalse(results);
}
} }