From 669e6491122c23282f861a0657d19a90824542b3 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Tue, 8 Dec 2020 17:25:36 +0900 Subject: [PATCH 1/5] modify all domain --- src/main/java/domain/CardDeck.java | 25 +++++++------------------ src/main/java/domain/Cards.java | 16 ++++++++++++++++ src/main/java/domain/Dealer.java | 14 -------------- 3 files changed, 23 insertions(+), 32 deletions(-) create mode 100644 src/main/java/domain/Cards.java diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index 84fd914..2e04158 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -7,7 +7,7 @@ public class CardDeck { - List cards=new ArrayList<>(); + List card=new ArrayList<>(); private static final int PATTERN_A=1; private static final int PATTERN_J=11; private static final int PATTERN_Q=12; @@ -29,25 +29,18 @@ public void setCards(List cards) { CardShape.SPADE.name() }; - public List create(){ - List cards = new ArrayList<>(); - for(int i=0;i<4;i++){ - makeCarddeck(patterns[i]); - } - return Collections.unmodifiableList(cards); - } - - public CardDeck() { - makeDeck(patterns); + public CardDeck(Cards cards) { + Cards cardList = new Cards(card); + makeDeck(patterns); } private void makeDeck(String[] patterns){ for(int i=0;i<4;i++) - makeCarddeck(patterns[i]); + makeCardDeck(patterns[i]); } //카드덱 만들기 - private void makeCarddeck(String pattern) { + private void makeCardDeck(String pattern) { for(int i=1;i<=CARD_DECK_SIZE;i++){ String character =numberToPattern(i); Card card = new Card(CardShape.valueOf(pattern), character); @@ -67,17 +60,13 @@ else if (number == PATTERN_K) return String.valueOf(number); } - public void addCard(Card card){ - this.cards.add(card); - } - //카드덱에서 카드 한장 뽑기(인덱스 추출) private int drawCardIndex(){ Random random = new Random(); return random.nextInt(cards.size()); } - //카드덱에서 해당 인덱스에 있는 카드 삭제 + //카드덱에서 해당 인덱스에 있는 카드 삭제(카 public Card pickAndRemove(){ Card pickcard = cards.get(drawCardIndex()); this.cards.remove(pickcard); diff --git a/src/main/java/domain/Cards.java b/src/main/java/domain/Cards.java new file mode 100644 index 0000000..54382b1 --- /dev/null +++ b/src/main/java/domain/Cards.java @@ -0,0 +1,16 @@ +package domain; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +public class Cards { + private final List cards; + Cards(Listcards){ + this.cards=cards; + } + Cards removeCard(){ + return cards.remove(1); + } +} diff --git a/src/main/java/domain/Dealer.java b/src/main/java/domain/Dealer.java index e285b72..1103a4c 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -51,18 +51,4 @@ public boolean isOverCardSize(){ throw new IllegalArgumentException("받을 수 있는 카드 수 초과"); return false; } - -// @Override -// public boolean equals(Object o) { -// if (this == o) return true; -// if (!(o instanceof Dealer)) return false; -// Dealer dealer = (Dealer) o; -// return dealer_cards.equals(dealer.dealer_cards) && -// rule.equals(dealer.rule); -// } -// -// @Override -// public int hashCode() { -// return Objects.hash(dealer_cards, rule); -// } } From 14ab6ae729b5501d940a4e53becf03e8bcf17571 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Wed, 16 Dec 2020 14:24:54 +0900 Subject: [PATCH 2/5] modify again --- src/main/java/BlackJack.java | 18 +++---- src/main/java/domain/Card.java | 73 +++++++++++++------------- src/main/java/domain/CardDeck.java | 73 ++++++-------------------- src/main/java/domain/CardShape.java | 22 +++----- src/main/java/domain/Cards.java | 31 +++++++++-- src/main/java/domain/Dealer.java | 60 ++++++++------------- src/main/java/domain/Gamer.java | 46 +++++++--------- src/main/java/domain/Pattern.java | 32 +++++++++++ src/main/java/domain/Player.java | 6 +-- src/main/java/domain/Rule.java | 53 +++++++++---------- src/test/java/domain/CardDeckTest.java | 46 ++-------------- src/test/java/domain/CardsTest.java | 18 +++++++ 12 files changed, 216 insertions(+), 262 deletions(-) create mode 100644 src/main/java/domain/Pattern.java create mode 100644 src/test/java/domain/CardsTest.java diff --git a/src/main/java/BlackJack.java b/src/main/java/BlackJack.java index f853c9c..5a339ef 100644 --- a/src/main/java/BlackJack.java +++ b/src/main/java/BlackJack.java @@ -1,23 +1,21 @@ -import domain.*; +import domain.CardDeck; +import domain.Dealer; +import domain.Gamer; +import domain.Rule; import ui.Game; -import java.util.ArrayList; -import java.util.List; - public class BlackJack { public static void main(String[] args) { Game game = new Game(); game.play(); CardDeck cardDeck = new CardDeck(); - List dealerCardList = new ArrayList<>(); - List gamerCardList = new ArrayList<>(); - Dealer dealer=new Dealer(dealerCardList); - Gamer gamer=new Gamer(gamerCardList); + Dealer dealer=new Dealer(); + Gamer gamer=new Gamer(); Rule rule=new Rule(); gamer.firstPick(cardDeck); dealer.firstPick(cardDeck); - dealer.pick(cardDeck); - rule.Winner(dealer,gamer); + dealer.additionalPick(rule,cardDeck); + rule.winner(dealer,gamer); } } diff --git a/src/main/java/domain/Card.java b/src/main/java/domain/Card.java index 62941d7..8506b86 100644 --- a/src/main/java/domain/Card.java +++ b/src/main/java/domain/Card.java @@ -1,43 +1,42 @@ package domain; +import java.util.Objects; + public class Card { - private CardShape pattern; - private String character; - private int point; - - public int getPoint() { - return point; - } - - public Card(CardShape pattern, String character) { - this.pattern = pattern; - this.character = character; - this.point=cardPoint(character); - } - private int cardPoint(String character){ - if(character.equals("A")) - return 1; - else if(character.equals("K")||character.equals("Q")||character.equals("J")) - return 10; - else - return Integer.parseInt(character); - } - - public void setPattern(CardShape pattern) { - this.pattern = pattern; - } - - public void setCharacter(String character) { - this.character = character; - } - - public CardShape getPattern() { - return pattern; - } - - public String getCharacter() { - return character; - } + public Pattern getPattern() { + return pattern; + } + + public CardShape getCardShape() { + return cardShape; + } + + private CardShape cardShape; + private Pattern pattern; + + + public Card(CardShape cardShape, Pattern pattern) { + this.cardShape = cardShape; + this.pattern = pattern; + } + + + public boolean isPatternEquals(Card card){ + return this.pattern.equals(card.pattern); + } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Card card = (Card) o; + return cardShape == card.cardShape && + pattern == card.pattern; + } + + @Override + public int hashCode() { + return Objects.hash(cardShape, pattern); + } } diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index 2e04158..d223578 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -3,73 +3,30 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Random; public class CardDeck { - - List card=new ArrayList<>(); - private static final int PATTERN_A=1; - private static final int PATTERN_J=11; - private static final int PATTERN_Q=12; - private static final int PATTERN_K=13; - private static final int CARD_DECK_SIZE=13; - - public List getCards() { - return cards; - } - - public void setCards(List cards) { - this.cards = cards; + List cardList = new ArrayList<>(); + Cards cards; + //Cards cards; + public CardDeck() { + cardShuffle(); } - private static String[] patterns={ - CardShape.CLUB.name(), - CardShape.DIAMOND.name(), - CardShape.HEART.name(), - CardShape.SPADE.name() - }; - - public CardDeck(Cards cards) { - Cards cardList = new Cards(card); - makeDeck(patterns); + private void cardShuffle(){ + cards = new Cards(cardList); + cards.create(); + Collections.shuffle(cardList); } - private void makeDeck(String[] patterns){ - for(int i=0;i<4;i++) - makeCardDeck(patterns[i]); - } - //카드덱 만들기 - private void makeCardDeck(String pattern) { - for(int i=1;i<=CARD_DECK_SIZE;i++){ - String character =numberToPattern(i); - Card card = new Card(CardShape.valueOf(pattern), character); - this.cards.add(card); - } - } - private String numberToPattern(int number){ - if (number == PATTERN_A) - return "A"; - else if (number == PATTERN_J) - return "J"; - else if (number == PATTERN_Q) - return "Q"; - else if (number == PATTERN_K) - return "K"; - else - return String.valueOf(number); + public Card pick(){ + Card card = cardList.get(0); + remove(card); + return card; } - //카드덱에서 카드 한장 뽑기(인덱스 추출) - private int drawCardIndex(){ - Random random = new Random(); - return random.nextInt(cards.size()); + public void remove(Card card){ + cardList.remove(cardList.get(0)); } - //카드덱에서 해당 인덱스에 있는 카드 삭제(카 - public Card pickAndRemove(){ - Card pickcard = cards.get(drawCardIndex()); - this.cards.remove(pickcard); - return pickcard; - } } diff --git a/src/main/java/domain/CardShape.java b/src/main/java/domain/CardShape.java index 20125c2..8d7c7a7 100644 --- a/src/main/java/domain/CardShape.java +++ b/src/main/java/domain/CardShape.java @@ -1,17 +1,15 @@ package domain; - public enum CardShape { - SPADE("♠", "SPADE"), - HEART("♥", "HEART"), - DIAMOND("♦", "DIAMOND"), - CLUB("♣", "CLUB"); + SPADE("SPADE"), + HEART( "HEART"), + DIAMOND("DIAMOND"), + CLUB("CLUB"); private String shape; - private String title; - CardShape(String shape, String title) { + CardShape(String shape) { this.shape = shape; - this.title = title; + } public String getShape() { @@ -22,12 +20,4 @@ public void setShape(String shape) { this.shape = shape; } - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - } diff --git a/src/main/java/domain/Cards.java b/src/main/java/domain/Cards.java index 54382b1..c0943ad 100644 --- a/src/main/java/domain/Cards.java +++ b/src/main/java/domain/Cards.java @@ -1,16 +1,37 @@ package domain; + import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; public class Cards { - private final List cards; - Cards(Listcards){ + private List cards = new ArrayList<>(); + + Cards(List cards) { this.cards=cards; } - Cards removeCard(){ - return cards.remove(1); + public List toList(Card card){ + cards.add(card); + return cards; + } + + public List create(){ + for(Pattern pattern: Pattern.values()){ + createByPattern(cards,pattern); + } + return Collections.unmodifiableList(cards); + } + + public List getCards(){ + return Collections.unmodifiableList(cards); + } + private void createByPattern(List cards, Pattern pattern){ + for(CardShape cardShape:CardShape.values()){ + cards.add(new Card(cardShape,pattern)); + } } + + + } diff --git a/src/main/java/domain/Dealer.java b/src/main/java/domain/Dealer.java index 1103a4c..daa32b9 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -1,54 +1,40 @@ package domain; - +import java.util.ArrayList; import java.util.List; public class Dealer implements Player{ - List dealerCards; + Cards dealerCards; + List dealerCardList= new ArrayList<>(); private static final int MAX_CARD=3; - private static final int BOUNDARY_VALUE=17; - public int dealerTotal; - public Dealer(List dealerCards) { - this.dealerCards = dealerCards; - this.dealerTotal=0; + + public Dealer() { + dealerCards = new Cards(dealerCardList); + } + public Dealer(Cards dealerCards){ + this.dealerCards=dealerCards; } @Override - public List openCard(){ + public Cards openCard(){ return dealerCards; } - @Override //카드 2장을 초기에 뽑음 - public void firstPick(CardDeck cardDeck){ - dealerCards.add(cardDeck.pickAndRemove()); - dealerCards.add(cardDeck.pickAndRemove()); - total(dealerCards); - } - - //카드값(16초과한지 계산) @Override - public void total(List cards){ - cards= dealerCards; - for(Card card:cards) - this.dealerTotal+=card.getPoint(); + public void addCard(CardDeck cardDeck){ + if(dealerCards.getCards().size()=MAX_CARD) - throw new IllegalArgumentException("받을 수 있는 카드 수 초과"); - return false; + public void additionalPick(Rule rule,CardDeck cardDeck){ + if(rule.choosePick(dealerCards)) + dealerCards.toList(cardDeck.pick()); + System.out.println("Dealer Additional Point: "+dealerCards.getCards().get(2).getPattern().getScore()); } } diff --git a/src/main/java/domain/Gamer.java b/src/main/java/domain/Gamer.java index 70c95c4..bc988dc 100644 --- a/src/main/java/domain/Gamer.java +++ b/src/main/java/domain/Gamer.java @@ -1,42 +1,34 @@ package domain; + import java.util.ArrayList; import java.util.List; -import java.util.Objects; public class Gamer implements Player{ + Cards gamerCards; + List gamerCardList= new ArrayList<>(); + private static final int MAX_CARD=3; + private static final int BOUNDARY_VALUE=17; - - public List gamerCards; - public int gamerTotal; - - public Gamer(List gamercards) { - this.gamerCards = gamercards; - this.gamerTotal=0; + public Gamer() { + gamerCards = new Cards(gamerCardList); + } + public Gamer(Cards gamerCards){ + this.gamerCards=gamerCards; } @Override - public List openCard(){ + public Cards openCard(){ return gamerCards; } - public void firstPick(CardDeck cardDeck){ - gamerCards.add(cardDeck.pickAndRemove()); - gamerCards.add(cardDeck.pickAndRemove()); - total(gamerCards); - } @Override - public void total(List cards){ - cards=gamerCards; - for(Card card:cards) { - this.gamerTotal += card.getPoint(); - } + public void addCard(CardDeck cardDeck){ + gamerCards.toList(cardDeck.pick()); } - public void pick(CardDeck cardDeck){ - gamerCards.add(cardDeck.pickAndRemove()); - this.gamerTotal+=gamerCards.get(lastCardIndex()).getPoint(); - - } - - private int lastCardIndex(){ - return gamerCards.size()-1; + @Override + public void firstPick(CardDeck cardDeck){ + gamerCards.toList(cardDeck.pick()); + gamerCards.toList(cardDeck.pick()); + System.out.println("Gamer First Point: "+gamerCards.getCards().get(0).getPattern().getScore()); + System.out.println("Gamer Second Point: "+gamerCards.getCards().get(1).getPattern().getScore()); } } diff --git a/src/main/java/domain/Pattern.java b/src/main/java/domain/Pattern.java new file mode 100644 index 0000000..a5bdbec --- /dev/null +++ b/src/main/java/domain/Pattern.java @@ -0,0 +1,32 @@ +package domain; + +public enum Pattern { + ACE(1, "A"), + TWO(2, "2"), + THREE(3, "3"), + FOUR(4, "4"), + FIVE(5, "5"), + SIX(6, "6"), + SEVEN(7, "7"), + EIGHT(8, "8"), + NINE(9, "9"), + TEN(10, "10"), + JACK(10, "J"), + QUEEN(10, "Q"), + KING(10, "K"); + + private int score; + private String name; + + Pattern(int score, String name) { + this.score = score; + this.name = name; + } + public int getScore() { + return score; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/domain/Player.java b/src/main/java/domain/Player.java index 80e6d1e..11ca5c0 100644 --- a/src/main/java/domain/Player.java +++ b/src/main/java/domain/Player.java @@ -1,10 +1,8 @@ package domain; - import java.util.List; public interface Player { - public List openCard(); + public Cards openCard(); public void firstPick(CardDeck cardDeck); - public void total(List cards); - + public void addCard(CardDeck cardDeck); } diff --git a/src/main/java/domain/Rule.java b/src/main/java/domain/Rule.java index 815a173..de8bcef 100644 --- a/src/main/java/domain/Rule.java +++ b/src/main/java/domain/Rule.java @@ -1,35 +1,34 @@ package domain; - public class Rule { - public int dealerPoint; - public int gamerPoint; + private static final int BOUNDARY_VALUE=17; + public void winner(Dealer dealer,Gamer gamer){ + int dealerPoint=sumOfcard(dealer.openCard()); + int gamerPoint=sumOfcard(gamer.openCard()); + System.out.println("dealerPoint: "+dealerPoint); + System.out.println("gamerPoint: "+gamerPoint); + if(gamerPoint>dealerPoint) + System.out.println("Gamer is winner"); + else if(gamerPoint==dealerPoint) + System.out.println("Draw"); + else + System.out.println("Dealer is winner"); + } - public Rule() { - this.dealerPoint = 0; - this.gamerPoint = 0; + public int sumOfcard(Cards cardList){ + int sum=0; + for(int i=0;i21) - dealerPoint=0; - if(gamerPoint>21) - gamerPoint=0; - if(dealerPoint>gamerPoint) - System.out.println("Dealer is winner"); - else if(dealerPoint==gamerPoint) { - System.out.println("Draw"); - } - else { - System.out.println("Gamer is winner"); - } + public boolean choosePick(Cards cardList){ + if(sumOfcard(cardList)21) + private int isOver(int sum){ + if(sum>21) return -1; - else - return point; + else return sum; } } diff --git a/src/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java index 36397bf..5182817 100644 --- a/src/test/java/domain/CardDeckTest.java +++ b/src/test/java/domain/CardDeckTest.java @@ -1,51 +1,15 @@ package domain; -import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.junit.runners.Parameterized; - -import java.util.ArrayList; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertSame; public class CardDeckTest { - @ParameterizedTest - @ValueSource(strings = {"SPADE","HEART","DIAMOND","CLUB"}) - @DisplayName("Carddeck") - public void Carddeck(String pattern){ - String character; - CardDeck cardDeck = new CardDeck(); - List cards=new ArrayList<>(); - for (int i = 0; i < 14; i++) { - if (i == 0) - character = "A"; - else if (i == 11) - character = "J"; - else if (i == 12) - character = "Q"; - else if (i == 13) - character = "K"; - else - character = String.valueOf(i); - Card card = new Card(CardShape.valueOf(pattern),character); - cards.add(card); - cardDeck.addCard(card); - } - } - + //카드 섞는 것 @Test - @DisplayName("카드 뽑은 후 삭제") - void RemoveTest(){ - CardDeck cardDeck = new CardDeck(); - Card card = cardDeck.pickAndRemove(); - System.out.println(card.getPattern()); - System.out.println(card.getCharacter()); - assertEquals(cardDeck.getCards().contains(card),false); + void CardShuffle(){ + // CardDeck cardDeck = new CardDeck(); + // System.out.println(cardDeck.cardList.get(0).getCardShape().getShape()); + //System.out.println(cardDeck.cardList.get(0).getPattern().getName()); } } diff --git a/src/test/java/domain/CardsTest.java b/src/test/java/domain/CardsTest.java new file mode 100644 index 0000000..34586dd --- /dev/null +++ b/src/test/java/domain/CardsTest.java @@ -0,0 +1,18 @@ +package domain; + +public class CardsTest { + +// @Test +// @DisplayName("Make Cards") +// void createCard(){ +// List cardList= new ArrayList<>(); +// Cards cards = new Cards(cardList); +// assertEquals(cardList.size(),52); +// for(int i=0;i Date: Tue, 22 Dec 2020 20:08:07 +0900 Subject: [PATCH 3/5] modify method name & refactoring1 --- src/main/java/domain/Cards.java | 2 +- src/main/java/domain/Rule.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/domain/Cards.java b/src/main/java/domain/Cards.java index c0943ad..4f07a69 100644 --- a/src/main/java/domain/Cards.java +++ b/src/main/java/domain/Cards.java @@ -8,7 +8,7 @@ public class Cards { private List cards = new ArrayList<>(); - Cards(List cards) { + public Cards(List cards) { this.cards=cards; } public List toList(Card card){ diff --git a/src/main/java/domain/Rule.java b/src/main/java/domain/Rule.java index de8bcef..059bcdd 100644 --- a/src/main/java/domain/Rule.java +++ b/src/main/java/domain/Rule.java @@ -17,16 +17,20 @@ else if(gamerPoint==dealerPoint) public int sumOfcard(Cards cardList){ int sum=0; for(int i=0;i21) return -1; else return sum; From bd5ad3a3dc0ddcf9a07d660cfd5e4154bde2bf93 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Thu, 7 Jan 2021 19:02:43 +0900 Subject: [PATCH 4/5] new branch & final code --- src/test/java/domain/CardDeckTest.java | 18 ++++++++++++---- src/test/java/domain/CardsTest.java | 30 ++++++++++++++++---------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java index 5182817..0a5f8b5 100644 --- a/src/test/java/domain/CardDeckTest.java +++ b/src/test/java/domain/CardDeckTest.java @@ -1,15 +1,25 @@ package domain; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class CardDeckTest { - //카드 섞는 것 @Test void CardShuffle(){ - // CardDeck cardDeck = new CardDeck(); - // System.out.println(cardDeck.cardList.get(0).getCardShape().getShape()); - //System.out.println(cardDeck.cardList.get(0).getPattern().getName()); + CardDeck cardDeck = new CardDeck(); + System.out.println(cardDeck.cardList.get(0).getCardShape().getShape()); + System.out.println(cardDeck.cardList.get(0).getPattern().getName()); } + + //카드 뽑고 제거 + @Test + void cardPick(){ + CardDeck cardDeck = new CardDeck(); + Card card = cardDeck.cardList.get(0); + Assertions.assertEquals(cardDeck.pick(),card); + Assertions.assertEquals(cardDeck.cardList.contains(card),false); + } + } diff --git a/src/test/java/domain/CardsTest.java b/src/test/java/domain/CardsTest.java index 34586dd..aadecb3 100644 --- a/src/test/java/domain/CardsTest.java +++ b/src/test/java/domain/CardsTest.java @@ -1,18 +1,26 @@ package domain; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + public class CardsTest { -// @Test -// @DisplayName("Make Cards") -// void createCard(){ -// List cardList= new ArrayList<>(); -// Cards cards = new Cards(cardList); -// assertEquals(cardList.size(),52); -// for(int i=0;i cardList= new ArrayList<>(); + Cards cards = new Cards(cardList); + assertEquals(cardList.size(),52); + for(int i=0;i Date: Sun, 10 Jan 2021 19:24:33 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=EC=9D=BC=EA=B8=89=EC=BB=AC=EB=A0=89?= =?UTF-8?q?=EC=85=98=20=EC=88=98=EC=A0=95=201.=20cards=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=201.1=20cards=20toList()=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=201.2=20getCards()=20=EC=88=98=EC=A0=95=202.?= =?UTF-8?q?=20cardDeck=20=EC=88=98=EC=A0=95=202.1=20list=EC=97=86=EC=9D=B4?= =?UTF-8?q?=20cards=EB=A1=9C=20=EB=B0=9B=EC=9D=8C=203.=20CardDeckTest=20?= =?UTF-8?q?=EC=88=98=EC=A0=95(=EC=B9=B4=EB=93=9C=EC=84=9E=EA=B8=B0?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8,=20=EC=B9=B4=EB=93=9C=20=EB=BD=91?= =?UTF-8?q?=EA=B8=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/modules.xml | 8 +++ src/main/java/BlackJack.java | 42 ++++++------- src/main/java/domain/CardDeck.java | 15 ++--- src/main/java/domain/Cards.java | 10 +-- src/main/java/domain/Dealer.java | 80 ++++++++++++------------ src/main/java/domain/Gamer.java | 68 ++++++++++----------- src/main/java/domain/Rule.java | 76 +++++++++++------------ src/test/java/domain/CardDeckTest.java | 24 +++++--- src/test/java/domain/DealerTest.java | 84 +++++++++++++------------- src/test/java/domain/GamerTest.java | 52 ++++++++-------- src/test/java/domain/RuleTest.java | 50 +++++++-------- 11 files changed, 263 insertions(+), 246 deletions(-) create mode 100644 .idea/modules.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c3e7623 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/BlackJack.java b/src/main/java/BlackJack.java index 5a339ef..939554f 100644 --- a/src/main/java/BlackJack.java +++ b/src/main/java/BlackJack.java @@ -1,21 +1,21 @@ -import domain.CardDeck; -import domain.Dealer; -import domain.Gamer; -import domain.Rule; -import ui.Game; - -public class BlackJack { - - public static void main(String[] args) { - Game game = new Game(); - game.play(); - CardDeck cardDeck = new CardDeck(); - Dealer dealer=new Dealer(); - Gamer gamer=new Gamer(); - Rule rule=new Rule(); - gamer.firstPick(cardDeck); - dealer.firstPick(cardDeck); - dealer.additionalPick(rule,cardDeck); - rule.winner(dealer,gamer); - } -} +//import domain.CardDeck; +//import domain.Dealer; +//import domain.Gamer; +//import domain.Rule; +//import ui.Game; +// +//public class BlackJack { +// +// public static void main(String[] args) { +// Game game = new Game(); +// game.play(); +// CardDeck cardDeck = new CardDeck(); +// Dealer dealer=new Dealer(); +// Gamer gamer=new Gamer(); +// Rule rule=new Rule(); +// gamer.firstPick(cardDeck); +// dealer.firstPick(cardDeck); +// dealer.additionalPick(rule,cardDeck); +// rule.winner(dealer,gamer); +// } +//} diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index d223578..87b4b7c 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -5,28 +5,29 @@ import java.util.List; public class CardDeck { - List cardList = new ArrayList<>(); - Cards cards; + //List cardList = new ArrayList<>(); + private Cards cards; //Cards cards; - public CardDeck() { + public CardDeck(Cards cards) { + this.cards = cards; cardShuffle(); } private void cardShuffle(){ - cards = new Cards(cardList); cards.create(); - Collections.shuffle(cardList); + Collections.shuffle(cards.getCards()); } public Card pick(){ - Card card = cardList.get(0); + Card card = cards.toList().get(0); remove(card); return card; } public void remove(Card card){ - cardList.remove(cardList.get(0)); + + cards.getCards().remove(card); } } diff --git a/src/main/java/domain/Cards.java b/src/main/java/domain/Cards.java index 4f07a69..13778be 100644 --- a/src/main/java/domain/Cards.java +++ b/src/main/java/domain/Cards.java @@ -11,9 +11,11 @@ public class Cards { public Cards(List cards) { this.cards=cards; } - public List toList(Card card){ - cards.add(card); - return cards; + public List toList(){ + List cardList=new ArrayList<>(); + for(int i=0;i< cards.size();i++) + cardList.add(cards.get(i)); + return cardList; } public List create(){ @@ -24,7 +26,7 @@ public List create(){ } public List getCards(){ - return Collections.unmodifiableList(cards); + return cards; } private void createByPattern(List cards, Pattern pattern){ for(CardShape cardShape:CardShape.values()){ diff --git a/src/main/java/domain/Dealer.java b/src/main/java/domain/Dealer.java index daa32b9..0f093b0 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -1,40 +1,40 @@ -package domain; -import java.util.ArrayList; -import java.util.List; - -public class Dealer implements Player{ - - Cards dealerCards; - List dealerCardList= new ArrayList<>(); - private static final int MAX_CARD=3; - - - public Dealer() { - dealerCards = new Cards(dealerCardList); - } - public Dealer(Cards dealerCards){ - this.dealerCards=dealerCards; - } - @Override - public Cards openCard(){ - return dealerCards; - } - - @Override - public void addCard(CardDeck cardDeck){ - if(dealerCards.getCards().size() dealerCardList= new ArrayList<>(); +// private static final int MAX_CARD=3; +// +// +// public Dealer() { +// dealerCards = new Cards(dealerCardList); +// } +// public Dealer(Cards dealerCards){ +// this.dealerCards=dealerCards; +// } +// @Override +// public Cards openCard(){ +// return dealerCards; +// } +// +// @Override +// public void addCard(CardDeck cardDeck){ +// if(dealerCards.getCards().size() gamerCardList= new ArrayList<>(); - private static final int MAX_CARD=3; - private static final int BOUNDARY_VALUE=17; - - public Gamer() { - gamerCards = new Cards(gamerCardList); - } - public Gamer(Cards gamerCards){ - this.gamerCards=gamerCards; - } - @Override - public Cards openCard(){ - return gamerCards; - } - @Override - public void addCard(CardDeck cardDeck){ - gamerCards.toList(cardDeck.pick()); - } - @Override - public void firstPick(CardDeck cardDeck){ - gamerCards.toList(cardDeck.pick()); - gamerCards.toList(cardDeck.pick()); - System.out.println("Gamer First Point: "+gamerCards.getCards().get(0).getPattern().getScore()); - System.out.println("Gamer Second Point: "+gamerCards.getCards().get(1).getPattern().getScore()); - } -} +//package domain; +// +// +//import java.util.ArrayList; +//import java.util.List; +// +//public class Gamer implements Player{ +// Cards gamerCards; +// List gamerCardList= new ArrayList<>(); +// private static final int MAX_CARD=3; +// private static final int BOUNDARY_VALUE=17; +// +// public Gamer() { +// gamerCards = new Cards(gamerCardList); +// } +// public Gamer(Cards gamerCards){ +// this.gamerCards=gamerCards; +// } +// @Override +// public Cards openCard(){ +// return gamerCards; +// } +// @Override +// public void addCard(CardDeck cardDeck){ +// gamerCards.toList(cardDeck.pick()); +// } +// @Override +// public void firstPick(CardDeck cardDeck){ +// gamerCards.toList(cardDeck.pick()); +// gamerCards.toList(cardDeck.pick()); +// System.out.println("Gamer First Point: "+gamerCards.getCards().get(0).getPattern().getScore()); +// System.out.println("Gamer Second Point: "+gamerCards.getCards().get(1).getPattern().getScore()); +// } +//} diff --git a/src/main/java/domain/Rule.java b/src/main/java/domain/Rule.java index 059bcdd..971c505 100644 --- a/src/main/java/domain/Rule.java +++ b/src/main/java/domain/Rule.java @@ -1,38 +1,38 @@ -package domain; -public class Rule { - private static final int BOUNDARY_VALUE=17; - public void winner(Dealer dealer,Gamer gamer){ - int dealerPoint=sumOfcard(dealer.openCard()); - int gamerPoint=sumOfcard(gamer.openCard()); - System.out.println("dealerPoint: "+dealerPoint); - System.out.println("gamerPoint: "+gamerPoint); - if(gamerPoint>dealerPoint) - System.out.println("Gamer is winner"); - else if(gamerPoint==dealerPoint) - System.out.println("Draw"); - else - System.out.println("Dealer is winner"); - } - - public int sumOfcard(Cards cardList){ - int sum=0; - for(int i=0;i21) - return -1; - else return sum; - } -} +//package domain; +//public class Rule { +// private static final int BOUNDARY_VALUE=17; +// public void winner(Dealer dealer,Gamer gamer){ +// int dealerPoint=sumOfcard(dealer.openCard()); +// int gamerPoint=sumOfcard(gamer.openCard()); +// System.out.println("dealerPoint: "+dealerPoint); +// System.out.println("gamerPoint: "+gamerPoint); +// if(gamerPoint>dealerPoint) +// System.out.println("Gamer is winner"); +// else if(gamerPoint==dealerPoint) +// System.out.println("Draw"); +// else +// System.out.println("Dealer is winner"); +// } +// +// public int sumOfcard(Cards cardList){ +// int sum=0; +// for(int i=0;i21) +// return -1; +// else return sum; +// } +//} diff --git a/src/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java index 0a5f8b5..a37f9c4 100644 --- a/src/test/java/domain/CardDeckTest.java +++ b/src/test/java/domain/CardDeckTest.java @@ -3,23 +3,29 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.List; + public class CardDeckTest { //카드 섞는 것 @Test - void CardShuffle(){ - CardDeck cardDeck = new CardDeck(); - System.out.println(cardDeck.cardList.get(0).getCardShape().getShape()); - System.out.println(cardDeck.cardList.get(0).getPattern().getName()); + void CardShuffleTest(){ + List cardList = new ArrayList<>(); + Cards cards = new Cards(cardList); + CardDeck cardDeck = new CardDeck(cards); + System.out.println(cards.getCards().get(0).getCardShape().getShape()); + System.out.println(cards.getCards().get(0).getPattern().getName()); //cards안의 list자체가 섞임 } //카드 뽑고 제거 @Test - void cardPick(){ - CardDeck cardDeck = new CardDeck(); - Card card = cardDeck.cardList.get(0); - Assertions.assertEquals(cardDeck.pick(),card); - Assertions.assertEquals(cardDeck.cardList.contains(card),false); + void cardPickTest(){ + List cardList = new ArrayList<>(); + Cards cards = new Cards(cardList); + CardDeck cardDeck = new CardDeck(cards); + Card card = cardDeck.pick(); + Assertions.assertEquals(cards.getCards().contains(card),false); } } diff --git a/src/test/java/domain/DealerTest.java b/src/test/java/domain/DealerTest.java index e3d1996..36c7950 100644 --- a/src/test/java/domain/DealerTest.java +++ b/src/test/java/domain/DealerTest.java @@ -1,42 +1,42 @@ -package domain; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class DealerTest { - - @Test - @DisplayName("카드 2장을 뽑고 계산") - void pickCard(){ - CardDeck cardDeck = new CardDeck(); - Listcards = new ArrayList<>(); - Dealer dealer = new Dealer(cards); - dealer.firstPick(cardDeck); //카드 2장을 뽑음 - dealer.pick(cardDeck); // 이 함수 자체가 카드 포인트가 16이하인지 판단하고 16이하면 한장 더뽑고 아니면 안뽑는 함수 - for(int i = 0; i cards = new ArrayList<>(); - Dealer dealer = new Dealer(cards); - dealer.firstPick(cardDeck); - dealer.firstPick(cardDeck); - IllegalArgumentException ex = assertThrows( - IllegalArgumentException.class,()->dealer.isOverCardSize() - ); - assertTrue(ex.getMessage().contains("받을 수 있는 카드 수 초과")); - } -} +//package domain; +// +//import org.junit.jupiter.api.DisplayName; +//import org.junit.jupiter.api.Test; +// +//import java.util.ArrayList; +//import java.util.List; +// +//import static org.junit.jupiter.api.Assertions.assertThrows; +//import static org.junit.jupiter.api.Assertions.assertTrue; +// +//public class DealerTest { +// +// @Test +// @DisplayName("카드 2장을 뽑고 계산") +// void pickCard(){ +// CardDeck cardDeck = new CardDeck(); +// Listcards = new ArrayList<>(); +// Dealer dealer = new Dealer(cards); +// dealer.firstPick(cardDeck); //카드 2장을 뽑음 +// dealer.pick(cardDeck); // 이 함수 자체가 카드 포인트가 16이하인지 판단하고 16이하면 한장 더뽑고 아니면 안뽑는 함수 +// for(int i = 0; i cards = new ArrayList<>(); +// Dealer dealer = new Dealer(cards); +// dealer.firstPick(cardDeck); +// dealer.firstPick(cardDeck); +// IllegalArgumentException ex = assertThrows( +// IllegalArgumentException.class,()->dealer.isOverCardSize() +// ); +// assertTrue(ex.getMessage().contains("받을 수 있는 카드 수 초과")); +// } +//} diff --git a/src/test/java/domain/GamerTest.java b/src/test/java/domain/GamerTest.java index 620db9f..6505a84 100644 --- a/src/test/java/domain/GamerTest.java +++ b/src/test/java/domain/GamerTest.java @@ -1,26 +1,26 @@ -package domain; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class GamerTest { - @Test - @DisplayName("게이머 카드 뽑기") - void gamerCardPick(){ - CardDeck cardDeck = new CardDeck(); - List cards = new ArrayList<>(); - Gamer gamer = new Gamer(cards); - gamer.firstPick(cardDeck); - for(int i=0;i cards = new ArrayList<>(); +// Gamer gamer = new Gamer(cards); +// gamer.firstPick(cardDeck); +// for(int i=0;i dealerCardlist=new ArrayList<>(); - List gamerCardList = new ArrayList<>(); - Dealer dealer=new Dealer(dealerCardlist); - Gamer gamer=new Gamer(gamerCardList); - Rule rule=new Rule(); - gamer.firstPick(cardDeck); - dealer.firstPick(cardDeck); - dealer.pick(cardDeck); - rule.Winner(dealer,gamer); - } -} +//package domain; +// +//import org.junit.jupiter.api.DisplayName; +//import org.junit.jupiter.api.Test; +// +//import java.util.ArrayList; +//import java.util.List; +// +//public class RuleTest { +// +// @Test +// @DisplayName("게임 승리자") +// public void winnerTest(){ +// CardDeck cardDeck = new CardDeck(); +// List dealerCardlist=new ArrayList<>(); +// List gamerCardList = new ArrayList<>(); +// Dealer dealer=new Dealer(dealerCardlist); +// Gamer gamer=new Gamer(gamerCardList); +// Rule rule=new Rule(); +// gamer.firstPick(cardDeck); +// dealer.firstPick(cardDeck); +// dealer.pick(cardDeck); +// rule.Winner(dealer,gamer); +// } +//}