From 62d76369814f8d88883ee07851d97fc4ab78d725 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Tue, 20 Sep 2022 23:35:16 +0200 Subject: [PATCH] - 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 --- src/main/java/mau/mau/Game.java | 6 ++--- src/main/java/mau/mau/Referee.java | 22 +++++++++++++++ src/main/java/mau/mau/players/Human.java | 12 ++++++++- src/main/resources/TODO.md | 2 +- src/test/java/mau/mau/RefereeTest.java | 34 ++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 6 deletions(-) diff --git a/src/main/java/mau/mau/Game.java b/src/main/java/mau/mau/Game.java index c4e3706..0be160c 100644 --- a/src/main/java/mau/mau/Game.java +++ b/src/main/java/mau/mau/Game.java @@ -12,11 +12,9 @@ public class Game { private Card currentCard; private final Deck deck = new Deck(); private Dealer dealer; - private CardHandler cardHandler = new CardHandler(); + private final CardHandler cardHandler = new CardHandler(); private TurnTable turnTable; private final List players = new ArrayList<>(); - private int playerTurn = 0; - private Boolean reverse = false; public Game() { setupGame(); @@ -59,7 +57,7 @@ public class Game { } System.out.println(deck.getDeck().size() + " cards left in deck"); } else { - if(Referee.isValidEndCard(playedCard)) { + if( Referee.isAmazedByAmazingQuartet || Referee.isValidEndCard(playedCard)) { playCard(playedCard); System.out.println(player.getName() + " won!"); } else { diff --git a/src/main/java/mau/mau/Referee.java b/src/main/java/mau/mau/Referee.java index 43c5808..ec28d91 100644 --- a/src/main/java/mau/mau/Referee.java +++ b/src/main/java/mau/mau/Referee.java @@ -1,11 +1,14 @@ package mau.mau; import java.util.ArrayList; +import java.util.List; public class Referee { public static ArrayList allowedTypes = new ArrayList<>(); + public static boolean isAmazedByAmazingQuartet = false; + public static boolean isValidMove(Card currentCard, Card playedCard) { TYPENUM currentCardType = currentCard.getType(); @@ -35,6 +38,25 @@ public class Referee { return !isMauCard(card); } + public static boolean isValidQuartet(List 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) { allowedTypes.add(type); allowedTypes.add(TYPENUM.JOKER); diff --git a/src/main/java/mau/mau/players/Human.java b/src/main/java/mau/mau/players/Human.java index ea7eb26..0cf36c2 100644 --- a/src/main/java/mau/mau/players/Human.java +++ b/src/main/java/mau/mau/players/Human.java @@ -14,7 +14,6 @@ public class Human extends Player { @Override public Card getPlay(Card currentCard) { printHand(); - Scanner scanner = new Scanner(System.in); List hand = getHand(); @@ -30,6 +29,16 @@ public class Human extends Player { hand.add(card); 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)) { int cardIndex = Integer.parseInt(input); if (cardIndex < 0 || cardIndex > hand.size()) { @@ -96,5 +105,6 @@ public class Human extends Player { System.out.printf("| (%s) %s ", i, card); } } + System.out.println(); } } diff --git a/src/main/resources/TODO.md b/src/main/resources/TODO.md index 534ab43..19b1704 100644 --- a/src/main/resources/TODO.md +++ b/src/main/resources/TODO.md @@ -1,7 +1,7 @@ # TODO 1. Refactoring 2. Huisregels toevoegen - * Kwartet = win + * ~~Kwartet = win~~ * 69 mag tegelijk opgelegd worden * ~~Als er 2 spelers zijn, mag je 2x na een Ace~~ 3. Spelers kunnen een naam kiezen diff --git a/src/test/java/mau/mau/RefereeTest.java b/src/test/java/mau/mau/RefereeTest.java index 466dbca..c4046be 100644 --- a/src/test/java/mau/mau/RefereeTest.java +++ b/src/test/java/mau/mau/RefereeTest.java @@ -2,6 +2,8 @@ package mau.mau; 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.assertTrue; @@ -119,4 +121,36 @@ public class RefereeTest { //Assert 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 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 hand = List.of(testCardOne, testCardTwo, testCardThree, testCardFour); + + //Act + boolean results = Referee.isValidQuartet(hand); + + //Assert + assertFalse(results); + } }