From 9f1b071a2a4c31ca8d916ba6d01a931e61062ef3 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Tue, 20 Sep 2022 12:21:33 +0200 Subject: [PATCH 1/5] commit before pull --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 07e8170..6e3ca84 100644 --- a/pom.xml +++ b/pom.xml @@ -30,5 +30,4 @@ 16 UTF-8 - \ No newline at end of file From 0db4ef14f2d03f1d7764c859a7203664690d1921 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Tue, 20 Sep 2022 22:49:44 +0200 Subject: [PATCH 2/5] Changed it so that hand is printed horizontally instead of vertically. --- pom.xml | 7 +++---- src/main/java/mau/mau/players/Human.java | 7 ++++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 450b01f..6e3ca84 100644 --- a/pom.xml +++ b/pom.xml @@ -26,9 +26,8 @@ - 11 - 11 + 16 + 16 UTF-8 - - + \ No newline at end of file diff --git a/src/main/java/mau/mau/players/Human.java b/src/main/java/mau/mau/players/Human.java index 0e69151..ea7eb26 100644 --- a/src/main/java/mau/mau/players/Human.java +++ b/src/main/java/mau/mau/players/Human.java @@ -89,7 +89,12 @@ public class Human extends Player { List hand = getHand(); for (int i = 0; i < hand.size(); i++) { Card card = hand.get(i); - System.out.println("(" + i + ") " + card); + if (i == 0) { + System.out.println("Your hand: "); + System.out.printf("(%s) %s ", i, card); + } else { + System.out.printf("| (%s) %s ", i, card); + } } } } From d1ffdec5d3bf4afb9ea939f30ef0032c57cbe965 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Tue, 20 Sep 2022 22:52:13 +0200 Subject: [PATCH 3/5] Added json as a dependency --- pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pom.xml b/pom.xml index 6e3ca84..dcc430e 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,11 @@ RELEASE test + + org.json + json + 20220320 + From 62d76369814f8d88883ee07851d97fc4ab78d725 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Tue, 20 Sep 2022 23:35:16 +0200 Subject: [PATCH 4/5] - 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); + } } From 02629bbee0f09cf6193de94e21ab83fb610828d1 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Wed, 21 Sep 2022 00:02:46 +0200 Subject: [PATCH 5/5] Fixed lots and lots of IDE warnings, so basically that --- pom.xml | 2 +- src/main/java/mau/mau/Dealer.java | 2 +- src/main/java/mau/mau/TYPENUM.java | 2 +- src/main/java/mau/mau/TurnTable.java | 2 +- src/main/java/mau/mau/players/Bot.java | 7 +++---- src/main/java/mau/mau/players/Player.java | 8 ++++---- src/main/resources/diagrams/SequenceDiagram.puml | 2 +- src/main/resources/languages/en.json | 2 +- src/test/java/mau/mau/CardHandlerTest.java | 3 +-- src/test/java/mau/mau/DealerTest.java | 4 ---- src/test/java/mau/mau/RefereeTest.java | 4 ++-- src/test/java/mau/mau/players/BotTest.java | 6 ++---- 12 files changed, 18 insertions(+), 26 deletions(-) diff --git a/pom.xml b/pom.xml index e1cfeca..a9094be 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.junit.jupiter junit-jupiter - RELEASE + 5.9.0 test diff --git a/src/main/java/mau/mau/Dealer.java b/src/main/java/mau/mau/Dealer.java index eea373b..0c649da 100644 --- a/src/main/java/mau/mau/Dealer.java +++ b/src/main/java/mau/mau/Dealer.java @@ -7,7 +7,7 @@ import java.util.Collections; import java.util.List; public class Dealer { - private Deck deck; + private final Deck deck; public Dealer(Deck deck) { this.deck = deck; diff --git a/src/main/java/mau/mau/TYPENUM.java b/src/main/java/mau/mau/TYPENUM.java index 09f4111..6807d8a 100644 --- a/src/main/java/mau/mau/TYPENUM.java +++ b/src/main/java/mau/mau/TYPENUM.java @@ -1,5 +1,5 @@ package mau.mau; public enum TYPENUM { - SPADES, HEARTS, DIAMONDS, CLUBS, JOKER; + SPADES, HEARTS, DIAMONDS, CLUBS, JOKER } diff --git a/src/main/java/mau/mau/TurnTable.java b/src/main/java/mau/mau/TurnTable.java index 2feb3d2..75a9835 100644 --- a/src/main/java/mau/mau/TurnTable.java +++ b/src/main/java/mau/mau/TurnTable.java @@ -5,7 +5,7 @@ import mau.mau.players.Player; import java.util.List; public class TurnTable { - private List players; + private final List players; private int currentPlayerIndex; private int direction; diff --git a/src/main/java/mau/mau/players/Bot.java b/src/main/java/mau/mau/players/Bot.java index 27eed25..a8841e1 100644 --- a/src/main/java/mau/mau/players/Bot.java +++ b/src/main/java/mau/mau/players/Bot.java @@ -4,13 +4,12 @@ import mau.mau.*; import java.util.HashMap; import java.util.List; -import java.util.Scanner; public class Bot extends Player { private static int nameIndex = 0; - private static String JSON = "src/main/resources/languages/en.json"; - private static String JSON_KEY = "botnames"; + private static final String JSON = "src/main/resources/languages/en.json"; + private static final String JSON_KEY = "bot-names"; public Bot(Dealer dealer) { super(dealer); @@ -82,7 +81,7 @@ public class Bot extends Player { try { return JSONderulo.getJSONArrayFromJSONFile(JSON, JSON_KEY).getString(nameIndex++); } catch (Exception e) { - System.out.println("Error reading botnames from JSON file"); + System.out.println("Error reading bot-names from JSON file"); return "Koet " + nameIndex++; } } diff --git a/src/main/java/mau/mau/players/Player.java b/src/main/java/mau/mau/players/Player.java index 5694c11..812a58f 100644 --- a/src/main/java/mau/mau/players/Player.java +++ b/src/main/java/mau/mau/players/Player.java @@ -8,9 +8,9 @@ import java.util.List; public abstract class Player { - private String name; + private final String name; private List hand; - private Dealer dealer; + private final Dealer dealer; public Player(Dealer dealer) { this.dealer = dealer; @@ -21,8 +21,8 @@ public abstract class Player { return hand; } - public List setHand(List hand) { - return this.hand = hand; + public void setHand(List hand) { + this.hand = hand; } public Boolean handIsEmpty() { diff --git a/src/main/resources/diagrams/SequenceDiagram.puml b/src/main/resources/diagrams/SequenceDiagram.puml index 6ad1794..d005741 100644 --- a/src/main/resources/diagrams/SequenceDiagram.puml +++ b/src/main/resources/diagrams/SequenceDiagram.puml @@ -20,7 +20,7 @@ loop until someone wins else draw User -> Player: draw() end - else bot's turn + else bots turn alt play Bot -> Player: play(card) Game <-- Player: playedCard diff --git a/src/main/resources/languages/en.json b/src/main/resources/languages/en.json index 0408084..d84a42c 100644 --- a/src/main/resources/languages/en.json +++ b/src/main/resources/languages/en.json @@ -1,5 +1,5 @@ { - "botnames": [ + "bot-names": [ "Jordan", "MaarKoet", "El Tigre" diff --git a/src/test/java/mau/mau/CardHandlerTest.java b/src/test/java/mau/mau/CardHandlerTest.java index bf43e97..04a1591 100644 --- a/src/test/java/mau/mau/CardHandlerTest.java +++ b/src/test/java/mau/mau/CardHandlerTest.java @@ -15,13 +15,12 @@ public class CardHandlerTest { private CardHandler sut; private TurnTable turnTable; private List players; - private Dealer dealer; private Bot bot1, bot2, bot3; @BeforeEach public void setUp() { //Arrange - dealer = new Dealer(new Deck()); + Dealer dealer = new Dealer(new Deck()); sut = new CardHandler(); players = new ArrayList<>(); turnTable = new TurnTable(players); diff --git a/src/test/java/mau/mau/DealerTest.java b/src/test/java/mau/mau/DealerTest.java index 49b8d37..72a90dc 100644 --- a/src/test/java/mau/mau/DealerTest.java +++ b/src/test/java/mau/mau/DealerTest.java @@ -1,8 +1,4 @@ package mau.mau; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertTrue; - public class DealerTest { } diff --git a/src/test/java/mau/mau/RefereeTest.java b/src/test/java/mau/mau/RefereeTest.java index 29b1845..b6cdbd7 100644 --- a/src/test/java/mau/mau/RefereeTest.java +++ b/src/test/java/mau/mau/RefereeTest.java @@ -99,7 +99,7 @@ public class RefereeTest { @Test - public void isAceOfSpadesValidEndcardTest(){ + public void isAceOfSpadesValidEndCardTest(){ //Arrange Card testCardOne = new Card(TYPENUM.SPADES, VALUENUM.ACE); Card testCurrentCard = new Card(TYPENUM.HEARTS, VALUENUM.ACE); @@ -112,7 +112,7 @@ public class RefereeTest { } @Test - public void isThreeOfHeartsValidEndcardTest(){ + public void isThreeOfHeartsValidEndCardTest(){ //Arrange Card testCardOne = new Card(TYPENUM.HEARTS, VALUENUM.THREE); Card testCurrentCard = new Card(TYPENUM.HEARTS, VALUENUM.ACE); diff --git a/src/test/java/mau/mau/players/BotTest.java b/src/test/java/mau/mau/players/BotTest.java index 3f7fddf..8a2f091 100644 --- a/src/test/java/mau/mau/players/BotTest.java +++ b/src/test/java/mau/mau/players/BotTest.java @@ -12,14 +12,12 @@ import static org.junit.jupiter.api.Assertions.*; public class BotTest { private Bot sut; - private Dealer dealer; - private Deck deck; private List hand; @BeforeEach public void setUp() { - deck = new Deck(); - dealer = new Dealer(deck); + Deck deck = new Deck(); + Dealer dealer = new Dealer(deck); sut = new Bot(dealer); hand = new ArrayList<>(); }