From de86579295384d3363aaf363f13d590601b43ce0 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Wed, 21 Sep 2022 23:28:43 +0200 Subject: [PATCH 1/3] Fixes voor punten 4, 5 en 6 in de ToDo bij Known Bugs Kleine refactorings zodat de code wat compacter wordt Joker values aangepast naar Jack om te zorgen dat er na een joker geen twee of drie van elke type opgelegd mag worden Messages aangemaakt --- src/main/java/mau/mau/CardHandler.java | 13 ++++++++----- src/main/java/mau/mau/Game.java | 5 +++-- src/main/java/mau/mau/Messages.java | 4 +++- src/main/java/mau/mau/players/Bot.java | 4 ++-- src/main/java/mau/mau/players/Human.java | 4 +++- src/main/resources/TODO.md | 5 ++++- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/main/java/mau/mau/CardHandler.java b/src/main/java/mau/mau/CardHandler.java index f49c4db..ddef13a 100644 --- a/src/main/java/mau/mau/CardHandler.java +++ b/src/main/java/mau/mau/CardHandler.java @@ -44,8 +44,9 @@ public class CardHandler { } private void handleJack(TurnTable turnTable) { - Referee.setAllowedCards(turnTable.getCurrentPlayer().getTypeChoice()); - System.out.printf("%s chose %s\n", turnTable.getCurrentPlayer().getName(), turnTable.getCurrentPlayer().getTypeChoice()); + TYPENUM typeChoice = turnTable.getCurrentPlayer().getTypeChoice(); + Referee.setAllowedType(typeChoice); + System.out.printf("%s chose %s\n", turnTable.getCurrentPlayer().getName(), typeChoice); turnTable.nextPlayer(); } @@ -60,11 +61,13 @@ public class CardHandler { } private void handleJoker(TurnTable turnTable) { + int punishment = 5; Player nextPlayer = turnTable.getNextPlayer(); - drawCards(nextPlayer, 5); + drawCards(nextPlayer, punishment); System.out.printf("%s was forced to draw 5 cards\n", nextPlayer.getName()); - Referee.setAllowedCards(nextPlayer.getTypeChoice()); - System.out.printf("%s chose %s\n", nextPlayer.getName(), nextPlayer.getTypeChoice()); + TYPENUM typeChoice = nextPlayer.getTypeChoice(); + Referee.setAllowedType(typeChoice); + System.out.printf("%s chose %s\n", nextPlayer.getName(), typeChoice); turnTable.skipNextPlayer(); } diff --git a/src/main/java/mau/mau/Game.java b/src/main/java/mau/mau/Game.java index 785b781..a763de7 100644 --- a/src/main/java/mau/mau/Game.java +++ b/src/main/java/mau/mau/Game.java @@ -46,7 +46,7 @@ public class Game { if(playedCard != null){ playCard(playedCard); } - System.out.println(deck.getDeck().size() + " cards left in deck"); + System.out.printf("%s cards left in deck%n", deck.getDeck().size()); } else { if( Referee.isAmazedByAmazingQuartet || Referee.isValidEndCard(currentCard, playedCard)) { playCard(playedCard); @@ -54,7 +54,8 @@ public class Game { } else { System.out.println("You can't end the game with that card!"); System.out.println("Take five cards as punishment!"); - for (int i = 0; i < 5; i++) { + int punishment = 5; + for (int i = 0; i < punishment; i++) { player.addCardToHand(dealer.drawCard()); } } diff --git a/src/main/java/mau/mau/Messages.java b/src/main/java/mau/mau/Messages.java index a1f74e0..73fb323 100644 --- a/src/main/java/mau/mau/Messages.java +++ b/src/main/java/mau/mau/Messages.java @@ -7,8 +7,10 @@ public class Messages { public static final String WELCOME = "Welcome to Dutch Mau Mau!"; public static final String ASK_FOR_PLAYER_NAME = "What shall be thy name?"; - public static final String BAD_PLAYER_NAME = "What a pathetic response, thy shall be knoweth as Koet"; + public static final String BAD_PLAYER_NAME = "What a preposterous reciprocation, thy shall be knoweth as %s%n"; + public static final String PLAYER_NAME = "Thy shall be knoweth as %s%n"; public static final String PLAYER_PLAYED_CARD = KEY_PLAYER_NAME + " played " + KEY_CARD; public static final String PLAYER_DRAW_CARDS = KEY_PLAYER_NAME + " drew " + KEY_NUMBER_OF_CARDS + " cards"; public static final String PLAYER_HAS_X_CARDS = KEY_PLAYER_NAME + " now has " + KEY_NUMBER_OF_CARDS + " cards"; + } diff --git a/src/main/java/mau/mau/players/Bot.java b/src/main/java/mau/mau/players/Bot.java index a8841e1..5ecabf2 100644 --- a/src/main/java/mau/mau/players/Bot.java +++ b/src/main/java/mau/mau/players/Bot.java @@ -30,9 +30,9 @@ public class Bot extends Player { } else if (!Referee.isValidMove(card, currentCard)) { continue; } - System.out.println(getName() + " played " + card); + System.out.printf("%n%s played %s%n", getName(), card); hand.remove(card); - System.out.println(getName() + " now has " + getHandSize() + " cards"); + System.out.printf("%s now has %s cards%n", getName(), getHandSize()); return card; } } else { diff --git a/src/main/java/mau/mau/players/Human.java b/src/main/java/mau/mau/players/Human.java index d769f53..cfc3624 100644 --- a/src/main/java/mau/mau/players/Human.java +++ b/src/main/java/mau/mau/players/Human.java @@ -102,7 +102,9 @@ public class Human extends Player { String input = scanner.nextLine(); if (input.equals("")) { input = "Koet"; - System.out.println(Messages.BAD_PLAYER_NAME); + System.out.printf(Messages.BAD_PLAYER_NAME, input); + } else { + System.out.printf(Messages.PLAYER_NAME, input); } scanner.nextLine(); return input; diff --git a/src/main/resources/TODO.md b/src/main/resources/TODO.md index 57b6382..a78bd82 100644 --- a/src/main/resources/TODO.md +++ b/src/main/resources/TODO.md @@ -11,12 +11,15 @@ 6. Redesign terminal interface * ~~Kaarten laten zien als er een joker op je gedropt is~~ * ~~Zorgen dat de hand van de speler horizontaal wordt geprint ipv verticaal~~ +7. Messages voor alles maken ## Known Bugs 1. ~~Teveel kaarten in deck na het opnieuw schudden~~ 2. Dezelfde type kaart als de boer mag alsnog opgelegd worden 3. Je kan als laatste kaart een pestkaart opleggen -4. Wanneer je een nieuwe type mag kiezen met een boer of joker, moet je 2 keer kiezen +4. ~~Wanneer je een nieuwe type mag kiezen met een boer of joker, moet je 2 keer kiezen~~ +5. ~~Naam moet je 2 keer bevestigen~~ +6. ~~Bij een joker kan je altijd opleggen, ook als het niet voldoet aan de zojuist gekozen type~~ ### In een land hier ver, ver vandaan 1. UI From 86f6000e0e5981870fa7eb8c7a09051c53731f78 Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Wed, 21 Sep 2022 23:28:56 +0200 Subject: [PATCH 2/3] Changes by DTieman --- src/main/java/mau/mau/Deck.java | 4 ++-- src/main/java/mau/mau/Referee.java | 19 ++++++++++++++----- src/main/java/mau/mau/players/Bot.java | 9 +-------- src/main/java/mau/mau/players/Human.java | 22 ++++++++-------------- 4 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/main/java/mau/mau/Deck.java b/src/main/java/mau/mau/Deck.java index 621a63c..a4a9172 100644 --- a/src/main/java/mau/mau/Deck.java +++ b/src/main/java/mau/mau/Deck.java @@ -11,8 +11,8 @@ public class Deck { public Deck() { for (TYPENUM type : TYPENUM.values()) { if(type == TYPENUM.JOKER) { - deck.add(new Card(type, VALUENUM.TWO)); - deck.add(new Card(type, VALUENUM.THREE)); + deck.add(new Card(type, VALUENUM.JACK)); + deck.add(new Card(type, VALUENUM.JACK)); } else { for (VALUENUM value : VALUENUM.values()) { deck.add(new Card(type, value)); diff --git a/src/main/java/mau/mau/Referee.java b/src/main/java/mau/mau/Referee.java index 3223cf2..12f47f4 100644 --- a/src/main/java/mau/mau/Referee.java +++ b/src/main/java/mau/mau/Referee.java @@ -1,11 +1,10 @@ package mau.mau; -import java.util.ArrayList; import java.util.List; public class Referee { - public static ArrayList allowedTypes = new ArrayList<>(); + public static TYPENUM allowedType; public static boolean isAmazedByAmazingQuartet = false; @@ -16,6 +15,13 @@ public class Referee { TYPENUM playedCardType = playedCard.getType(); VALUENUM playedCardValue = playedCard.getValue(); + if (allowedType != null && isAllowedCardType(currentCardValue, playedCardType, playedCardValue)){ + allowedType = null; + return true; + } else if (allowedType != null && !isAllowedCardType(currentCardValue, playedCardType, playedCardValue)){ + return false; + } + return currentCardType == TYPENUM.JOKER || playedCardType == TYPENUM.JOKER || playedCardType == currentCardType @@ -57,8 +63,11 @@ public class Referee { return result; } - public static void setAllowedCards(TYPENUM type) { - allowedTypes.add(type); - allowedTypes.add(TYPENUM.JOKER); + private static boolean isAllowedCardType(VALUENUM currentCardValue, TYPENUM playedCardType, VALUENUM playedCardValue) { + return allowedType == playedCardType || playedCardType == TYPENUM.JOKER || playedCardValue == currentCardValue; + } + + public static void setAllowedType(TYPENUM type) { + allowedType = type; } } \ No newline at end of file diff --git a/src/main/java/mau/mau/players/Bot.java b/src/main/java/mau/mau/players/Bot.java index 5ecabf2..33a3f72 100644 --- a/src/main/java/mau/mau/players/Bot.java +++ b/src/main/java/mau/mau/players/Bot.java @@ -21,13 +21,7 @@ public class Bot extends Player { if (getHandSize() > 1){ for (Card card : hand) { - if (!Referee.allowedTypes.isEmpty()) { - if (Referee.allowedTypes.contains(card.getType())) { - Referee.allowedTypes.clear(); - } else { - continue; - } - } else if (!Referee.isValidMove(card, currentCard)) { + if(!Referee.isValidMove(currentCard, card)){ continue; } System.out.printf("%n%s played %s%n", getName(), card); @@ -81,7 +75,6 @@ public class Bot extends Player { try { return JSONderulo.getJSONArrayFromJSONFile(JSON, JSON_KEY).getString(nameIndex++); } catch (Exception e) { - System.out.println("Error reading bot-names from JSON file"); return "Koet " + nameIndex++; } } diff --git a/src/main/java/mau/mau/players/Human.java b/src/main/java/mau/mau/players/Human.java index cfc3624..7468f4d 100644 --- a/src/main/java/mau/mau/players/Human.java +++ b/src/main/java/mau/mau/players/Human.java @@ -31,12 +31,12 @@ public class Human extends Player { return null; } if (input.equals("quartet")) { - if (Referee.isValidQuartet(hand)) { - System.out.println("You played a quartet!"); + if (Referee.isValidQuartet(hand)) { + System.out.println("You played a quartet!"); - hand.clear(); - return null; - } + hand.clear(); + return null; + } System.out.println("You don't have a quartet!"); continue; } @@ -47,15 +47,9 @@ public class Human extends Player { continue; } Card card = hand.get(cardIndex); - if (Referee.allowedTypes.isEmpty()) { - if (!Referee.isValidMove(card, currentCard)) { - System.out.println("Invalid move"); - continue; - } - } else { - if (Referee.allowedTypes.contains(card.getType())) { - Referee.allowedTypes.clear(); - } + if (!Referee.isValidMove(currentCard, card)) { + System.out.println("Invalid move"); + continue; } hand.remove(cardIndex); return card; From e9422f59363c60abf6f316e99bc7b18d536d00ec Mon Sep 17 00:00:00 2001 From: Jordan Geurtsen Date: Thu, 22 Sep 2022 00:03:23 +0200 Subject: [PATCH 3/3] minor refactorings and message fixes --- src/main/java/mau/mau/Game.java | 7 +++---- src/main/java/mau/mau/Messages.java | 4 ++-- src/main/java/mau/mau/players/Bot.java | 2 +- src/main/java/mau/mau/players/Player.java | 4 ---- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/mau/mau/Game.java b/src/main/java/mau/mau/Game.java index a763de7..3406a8c 100644 --- a/src/main/java/mau/mau/Game.java +++ b/src/main/java/mau/mau/Game.java @@ -37,7 +37,7 @@ public class Game { while (players.size() > 1) { Player player = turnTable.getCurrentPlayer(); - System.out.println("Current card: " + currentCard); + System.out.printf("Current card: %s%n", currentCard); Card playedCard = player.getPlay(currentCard); if (player instanceof Bot) { new Scanner(System.in).nextLine(); @@ -55,9 +55,8 @@ public class Game { System.out.println("You can't end the game with that card!"); System.out.println("Take five cards as punishment!"); int punishment = 5; - for (int i = 0; i < punishment; i++) { - player.addCardToHand(dealer.drawCard()); - } + player.drawCards(punishment); + continue; } break; } diff --git a/src/main/java/mau/mau/Messages.java b/src/main/java/mau/mau/Messages.java index 73fb323..a3cae6f 100644 --- a/src/main/java/mau/mau/Messages.java +++ b/src/main/java/mau/mau/Messages.java @@ -6,8 +6,8 @@ public class Messages { public static final String KEY_NUMBER_OF_CARDS = "{{numberOfCards}}"; public static final String WELCOME = "Welcome to Dutch Mau Mau!"; - public static final String ASK_FOR_PLAYER_NAME = "What shall be thy name?"; - public static final String BAD_PLAYER_NAME = "What a preposterous reciprocation, thy shall be knoweth as %s%n"; + public static final String ASK_FOR_PLAYER_NAME = "Hwæt shall be thy namian?"; + public static final String BAD_PLAYER_NAME = "Hwæt a preposterous reciprocation, thy shall be knoweth as %s%n"; public static final String PLAYER_NAME = "Thy shall be knoweth as %s%n"; public static final String PLAYER_PLAYED_CARD = KEY_PLAYER_NAME + " played " + KEY_CARD; public static final String PLAYER_DRAW_CARDS = KEY_PLAYER_NAME + " drew " + KEY_NUMBER_OF_CARDS + " cards"; diff --git a/src/main/java/mau/mau/players/Bot.java b/src/main/java/mau/mau/players/Bot.java index 33a3f72..e86cdc0 100644 --- a/src/main/java/mau/mau/players/Bot.java +++ b/src/main/java/mau/mau/players/Bot.java @@ -40,7 +40,7 @@ public class Bot extends Player { } } hand.add(drawCard()); - System.out.println(getName() + " drew a card"); + System.out.printf("%n%s drew a card%n", getName()); System.out.println(getName() + " now has " + hand.size() + " cards"); return null; } diff --git a/src/main/java/mau/mau/players/Player.java b/src/main/java/mau/mau/players/Player.java index 812a58f..6527f8d 100644 --- a/src/main/java/mau/mau/players/Player.java +++ b/src/main/java/mau/mau/players/Player.java @@ -29,10 +29,6 @@ public abstract class Player { return hand.isEmpty(); } - public void addCardToHand(Card card) { - hand.add(card); - } - public Card drawCard() { return dealer.drawCard(); }