From 9cd615d6b0f983e6725e39de89d977bf371d1cea Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Sun, 11 Oct 2020 23:38:41 +0900 Subject: [PATCH 01/10] CardDeck --- .idea/.gitignore | 3 ++ .idea/.name | 1 + .idea/codeStyles/Project.xml | 7 ++++ .idea/codeStyles/codeStyleConfig.xml | 5 +++ .idea/compiler.xml | 6 +++ .idea/jarRepositories.xml | 20 +++++++++ .idea/misc.xml | 5 +++ .idea/vcs.xml | 6 +++ build.gradle | 8 ++++ src/main/java/domain/Card.java | 29 +++++++++++++ src/main/java/domain/CardDeck.java | 58 ++++++++++++++++++++++++++ src/main/java/domain/Dealer.java | 16 +++++++ src/main/java/domain/RandomCard.java | 9 ++++ src/test/java/domain/CardDeckTest.java | 53 +++++++++++++++++++++++ 14 files changed, 226 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/domain/Card.java create mode 100644 src/main/java/domain/RandomCard.java create mode 100644 src/test/java/domain/CardDeckTest.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..4646aab --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +blackjack \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..919ce1f --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..7e7ee62 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..c890cce --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 95df5f5..db4aec1 100644 --- a/build.gradle +++ b/build.gradle @@ -10,5 +10,13 @@ repositories { } dependencies { + testImplementation "org.junit.jupiter:junit-jupiter:5.6.2" + testImplementation "org.hamcrest:hamcrest-all:1.3" testCompile group: 'junit', name: 'junit', version: '4.12' } +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } +} \ No newline at end of file diff --git a/src/main/java/domain/Card.java b/src/main/java/domain/Card.java new file mode 100644 index 0000000..fc3d401 --- /dev/null +++ b/src/main/java/domain/Card.java @@ -0,0 +1,29 @@ +package domain; + +public class Card { + String pattern; + String character; + + public Card(String pattern, String character) { + this.pattern = pattern; + this.character = character; + } + + public void setPattern(String pattern) { + this.pattern = pattern; + } + + public void setCharacter(String character) { + this.character = character; + } + + public String getPattern() { + return pattern; + } + + public String getCharacter() { + return character; + } + + +} diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index 583c169..347e6d4 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -1,4 +1,62 @@ package domain; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public class CardDeck { + + List cards=new ArrayList<>(); + int number_of_card; //카드 갯수 + String[] pattern = {"SPADE","HEART","DIAMOND","CLUB"}; + + public List getCards() { + return cards; + } + public int getNumber_of_card() { + return number_of_card; + } + + public CardDeck(List cards,int number_of_card) { + this.cards = cards; + this.number_of_card=number_of_card; + } + + //카드덱 만들기 + public void make_carddeck(){ + String character; + int count=0; + for(int j=0;j< pattern.length;j++) { + 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(pattern[j],character); + count++; + cards.add(card); + } + } + this.number_of_card=count; + } + + //카드덱에서 카드 한장 뽑기(인덱스 추출) + public int draw_card_index(){ + Random random = new Random(); + return random.nextInt(this.number_of_card); + } + + //카드덱에서 한장뽑고 해당 인덱스에 있는 카드 삭제 + public Card draw_card(int index){ + Card draw_card = cards.get(index); + cards.remove(index); + this.number_of_card--; + return draw_card; + } } diff --git a/src/main/java/domain/Dealer.java b/src/main/java/domain/Dealer.java index c0094ad..5d327ad 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -1,4 +1,20 @@ package domain; public class Dealer { + + //카드를 뽑으면 그 카드를 다시뽑지 않아야함 + //카드는 랜덤으로 뽑히는 것 + + void open_card(){ + + } + void get_card(){ + //카드 합계 점수가 16점이하면 + //반드시 1장 추가로 뽑기 -> 카드 갯수 count? + //뽑은 카드 삭제 + + } + + + } diff --git a/src/main/java/domain/RandomCard.java b/src/main/java/domain/RandomCard.java new file mode 100644 index 0000000..2f8a5ed --- /dev/null +++ b/src/main/java/domain/RandomCard.java @@ -0,0 +1,9 @@ +package domain; + +import java.util.Random; + +public class RandomCard { + + //카드 1장뽑기 + +} diff --git a/src/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java new file mode 100644 index 0000000..f60acc0 --- /dev/null +++ b/src/test/java/domain/CardDeckTest.java @@ -0,0 +1,53 @@ +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.assertSame; + +public class CardDeckTest { + + + @ParameterizedTest + @ValueSource(strings = {"SPADE","HEART","DIAMOND","CLUB"}) + @DisplayName("Carddeck") + public void Carddeck(String pattern){ + String character; + List cards=new ArrayList<>(); + int count=0; + 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(pattern,character); + cards.add(card); + count++; + } + CardDeck cardDeck = new CardDeck(cards,count); + for(int i=0;i<14;i++) { + System.out.print(cardDeck.getCards().get(i).getPattern()); + System.out.print(" "); + System.out.print(cardDeck.getCards().get(i).getCharacter()); + System.out.print(" "); + } + System.out.println(); + System.out.println(cardDeck.getNumber_of_card()); + } + @Test + void Test(){ + + } +} From 6e29a4e5f3937ffccc3dbce88678e230ec744336 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Mon, 19 Oct 2020 00:28:59 +0900 Subject: [PATCH 02/10] Modify code & add Test --- src/main/java/domain/Card.java | 10 ++--- src/main/java/domain/CardDeck.java | 54 ++++++++++++++++---------- src/main/java/domain/CardShape.java | 33 ++++++++++++++++ src/test/java/domain/CardDeckTest.java | 33 +++++++++------- 4 files changed, 91 insertions(+), 39 deletions(-) create mode 100644 src/main/java/domain/CardShape.java diff --git a/src/main/java/domain/Card.java b/src/main/java/domain/Card.java index fc3d401..43970d9 100644 --- a/src/main/java/domain/Card.java +++ b/src/main/java/domain/Card.java @@ -1,15 +1,15 @@ package domain; public class Card { - String pattern; - String character; + private CardShape pattern; + private String character; - public Card(String pattern, String character) { + public Card(CardShape pattern, String character) { this.pattern = pattern; this.character = character; } - public void setPattern(String pattern) { + public void setPattern(CardShape pattern) { this.pattern = pattern; } @@ -17,7 +17,7 @@ public void setCharacter(String character) { this.character = character; } - public String getPattern() { + public CardShape getPattern() { return pattern; } diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index 347e6d4..1b948fc 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -7,26 +7,34 @@ public class CardDeck { List cards=new ArrayList<>(); - int number_of_card; //카드 갯수 - String[] pattern = {"SPADE","HEART","DIAMOND","CLUB"}; public List getCards() { return cards; } - public int getNumber_of_card() { - return number_of_card; - } - public CardDeck(List cards,int number_of_card) { + public void setCards(List cards) { this.cards = cards; - this.number_of_card=number_of_card; + } + + private static String[] patterns={ + CardShape.CLUB.name(), + CardShape.DIAMOND.name(), + CardShape.HEART.name(), + CardShape.SPADE.name() + }; + public CardDeck() { + make_deck(patterns); + } + + public void make_deck(String[] patterns){ + for(int i=0;i<4;i++) + make_carddeck(patterns[i]); } //카드덱 만들기 - public void make_carddeck(){ + public void make_carddeck(String pattern){ String character; - int count=0; - for(int j=0;j< pattern.length;j++) { + for (int i = 0; i < 14; i++) { if (i == 0) character = "A"; @@ -38,25 +46,29 @@ else if (i == 13) character = "K"; else character = String.valueOf(i); - Card card = new Card(pattern[j],character); - count++; - cards.add(card); + Card card = new Card(CardShape.valueOf(pattern),character); + this.cards.add(card); } + } - this.number_of_card=count; + public void addCard(Card card){ + this.cards.add(card); } //카드덱에서 카드 한장 뽑기(인덱스 추출) public int draw_card_index(){ Random random = new Random(); - return random.nextInt(this.number_of_card); + return random.nextInt(cards.size()); + } + //카드 뽑기 + public Card pick(){ + return cards.get(draw_card_index()); } - //카드덱에서 한장뽑고 해당 인덱스에 있는 카드 삭제 - public Card draw_card(int index){ - Card draw_card = cards.get(index); - cards.remove(index); - this.number_of_card--; - return draw_card; + //카드덱에서 해당 인덱스에 있는 카드 삭제 + public Card remove_card(){ + Card pickcard = pick(); + this.cards.remove(pickcard); + return pickcard; } } diff --git a/src/main/java/domain/CardShape.java b/src/main/java/domain/CardShape.java new file mode 100644 index 0000000..20125c2 --- /dev/null +++ b/src/main/java/domain/CardShape.java @@ -0,0 +1,33 @@ +package domain; + +public enum CardShape { + SPADE("♠", "SPADE"), + HEART("♥", "HEART"), + DIAMOND("♦", "DIAMOND"), + CLUB("♣", "CLUB"); + + private String shape; + private String title; + + CardShape(String shape, String title) { + this.shape = shape; + this.title = title; + } + + public String getShape() { + return shape; + } + + 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/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java index f60acc0..0a0cb0f 100644 --- a/src/test/java/domain/CardDeckTest.java +++ b/src/test/java/domain/CardDeckTest.java @@ -19,8 +19,8 @@ public class CardDeckTest { @DisplayName("Carddeck") public void Carddeck(String pattern){ String character; + CardDeck cardDeck = new CardDeck(); List cards=new ArrayList<>(); - int count=0; for (int i = 0; i < 14; i++) { if (i == 0) character = "A"; @@ -32,22 +32,29 @@ else if (i == 13) character = "K"; else character = String.valueOf(i); - Card card = new Card(pattern,character); + Card card = new Card(CardShape.valueOf(pattern),character); cards.add(card); - count++; + cardDeck.addCard(card); } - CardDeck cardDeck = new CardDeck(cards,count); - for(int i=0;i<14;i++) { - System.out.print(cardDeck.getCards().get(i).getPattern()); - System.out.print(" "); - System.out.print(cardDeck.getCards().get(i).getCharacter()); - System.out.print(" "); - } - System.out.println(); - System.out.println(cardDeck.getNumber_of_card()); } @Test - void Test(){ + @DisplayName("카드 뽑기") + void PickTest(){ + CardDeck cardDeck = new CardDeck(); + Card card = cardDeck.pick(); + System.out.println(card.getPattern()); + System.out.println(card.getCharacter()); + assertSame(cardDeck.getCards().contains(card),true); + } + + @Test + @DisplayName("카드 뽑은 후 삭제") + void RemoveTest(){ + CardDeck cardDeck = new CardDeck(); + Card card = cardDeck.remove_card(); + System.out.println(card.getPattern()); + System.out.println(card.getCharacter()); + assertSame(cardDeck.getCards().contains(card),false); } } From b60929f0dc48c73567afdd5f534d3338b0b96434 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Mon, 19 Oct 2020 00:33:16 +0900 Subject: [PATCH 03/10] Again pr --- src/test/java/domain/CardDeckTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java index 0a0cb0f..dda86e3 100644 --- a/src/test/java/domain/CardDeckTest.java +++ b/src/test/java/domain/CardDeckTest.java @@ -52,8 +52,6 @@ void PickTest(){ void RemoveTest(){ CardDeck cardDeck = new CardDeck(); Card card = cardDeck.remove_card(); - System.out.println(card.getPattern()); - System.out.println(card.getCharacter()); assertSame(cardDeck.getCards().contains(card),false); } From 258c67e1b4d1d546a111edabcb7a310d01edcb33 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Sun, 25 Oct 2020 22:37:58 +0900 Subject: [PATCH 04/10] Add Class Dealer,Gamer,Player,Rule --- .idea/encodings.xml | 6 +++ src/main/java/BlackJack.java | 14 +++++++ src/main/java/domain/Card.java | 15 +++++++ src/main/java/domain/CardDeck.java | 44 ++++++++++---------- src/main/java/domain/Dealer.java | 57 ++++++++++++++++++++++---- src/main/java/domain/Gamer.java | 49 +++++++++++++++++++++- src/main/java/domain/Player.java | 10 +++++ src/main/java/domain/RandomCard.java | 9 ---- src/main/java/domain/Rule.java | 33 +++++++++++++++ src/test/java/domain/CardDeckTest.java | 17 +++----- src/test/java/domain/DealerTest.java | 44 ++++++++++++++++++++ src/test/java/domain/GamerTest.java | 26 ++++++++++++ src/test/java/domain/RuleTest.java | 25 +++++++++++ 13 files changed, 296 insertions(+), 53 deletions(-) create mode 100644 .idea/encodings.xml create mode 100644 src/main/java/domain/Player.java delete mode 100644 src/main/java/domain/RandomCard.java create mode 100644 src/test/java/domain/DealerTest.java create mode 100644 src/test/java/domain/GamerTest.java create mode 100644 src/test/java/domain/RuleTest.java diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..c2bae49 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/BlackJack.java b/src/main/java/BlackJack.java index 2ecadc6..3601cda 100644 --- a/src/main/java/BlackJack.java +++ b/src/main/java/BlackJack.java @@ -1,8 +1,22 @@ +import domain.*; 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); + Rule rule=new Rule(); + gamer.firstPick(cardDeck); + dealer.firstPick(cardDeck); + dealer.pick(cardDeck); + rule.Winner(dealer,gamer); } } diff --git a/src/main/java/domain/Card.java b/src/main/java/domain/Card.java index 43970d9..8e66b40 100644 --- a/src/main/java/domain/Card.java +++ b/src/main/java/domain/Card.java @@ -4,9 +4,24 @@ public class Card { private CardShape pattern; private String character; + public int getPoint() { + return point; + } + + private int 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) { diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index 1b948fc..8a47d73 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -32,25 +32,24 @@ public void make_deck(String[] patterns){ } //카드덱 만들기 - public void make_carddeck(String pattern){ + public void make_carddeck(String pattern) { String character; - - 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); - this.cards.add(card); - } - + for (int i = 1; i < 14; i++) { + if (i == 1) + 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); + this.cards.add(card); } + + } public void addCard(Card card){ this.cards.add(card); } @@ -61,13 +60,12 @@ public int draw_card_index(){ return random.nextInt(cards.size()); } //카드 뽑기 - public Card pick(){ - return cards.get(draw_card_index()); - } - +// public Card pick(){ +// return cards.get(draw_card_index()); +// } //카드덱에서 해당 인덱스에 있는 카드 삭제 - public Card remove_card(){ - Card pickcard = pick(); + public Card pickAndRemove(){ + Card pickcard = cards.get(draw_card_index()); this.cards.remove(pickcard); return pickcard; } diff --git a/src/main/java/domain/Dealer.java b/src/main/java/domain/Dealer.java index 5d327ad..df25544 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -1,20 +1,61 @@ package domain; -public class Dealer { +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; - //카드를 뽑으면 그 카드를 다시뽑지 않아야함 - //카드는 랜덤으로 뽑히는 것 +public class Dealer implements Player{ - void open_card(){ + List dealer_cards= new ArrayList<>(); + private static final int MAX_CARD=3; + public int dealerTotal=0; + public Dealer(List dealer_cards) { + this.dealer_cards=dealer_cards; + this.dealerTotal=0; + } + @Override + public List openCard(){ + return dealer_cards; + } + @Override + public void firstPick(CardDeck cardDeck){ + dealer_cards.add(cardDeck.pickAndRemove()); + dealer_cards.add(cardDeck.pickAndRemove()); + total(dealer_cards); } - void get_card(){ - //카드 합계 점수가 16점이하면 - //반드시 1장 추가로 뽑기 -> 카드 갯수 count? - //뽑은 카드 삭제 + @Override + public void total(List cards){ + cards=dealer_cards; + for(Card card:cards) + this.dealerTotal+=card.getPoint(); } + public void pick(CardDeck cardDeck){ + if(this.dealerTotal<17&&!isOverCardSize()) { + dealer_cards.add(cardDeck.pickAndRemove()); + this.dealerTotal+=dealer_cards.get(2).getPoint(); + } + } + public boolean isOverCardSize(){ + if(dealer_cards.size()>=MAX_CARD) + 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); +// } } diff --git a/src/main/java/domain/Gamer.java b/src/main/java/domain/Gamer.java index e70ce55..4a3fca8 100644 --- a/src/main/java/domain/Gamer.java +++ b/src/main/java/domain/Gamer.java @@ -1,4 +1,51 @@ package domain; -public class Gamer { +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class Gamer implements Player{ + + + public List gamercards=new ArrayList<>(); + public int gamerTotal; + + public Gamer(List gamercards) { + this.gamercards = gamercards; + this.gamerTotal=0; + } + @Override + public List 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 pick(CardDeck cardDeck){ + gamercards.add(cardDeck.pickAndRemove()); + this.gamerTotal+=gamercards.get(gamercards.size()-1).getPoint(); + + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Gamer)) return false; + Gamer gamer = (Gamer) o; + return Objects.equals(gamercards, gamer.gamercards); + } + + @Override + public int hashCode() { + return Objects.hash(gamercards); + } } diff --git a/src/main/java/domain/Player.java b/src/main/java/domain/Player.java new file mode 100644 index 0000000..80e6d1e --- /dev/null +++ b/src/main/java/domain/Player.java @@ -0,0 +1,10 @@ +package domain; + +import java.util.List; + +public interface Player { + public List openCard(); + public void firstPick(CardDeck cardDeck); + public void total(List cards); + +} diff --git a/src/main/java/domain/RandomCard.java b/src/main/java/domain/RandomCard.java deleted file mode 100644 index 2f8a5ed..0000000 --- a/src/main/java/domain/RandomCard.java +++ /dev/null @@ -1,9 +0,0 @@ -package domain; - -import java.util.Random; - -public class RandomCard { - - //카드 1장뽑기 - -} diff --git a/src/main/java/domain/Rule.java b/src/main/java/domain/Rule.java index fb6a9f1..8632c4e 100644 --- a/src/main/java/domain/Rule.java +++ b/src/main/java/domain/Rule.java @@ -1,4 +1,37 @@ package domain; +import ui.Game; + +import java.util.List; + public class Rule { + public int dealerPoint=0; + public int gamerPoint=0; + public Rule() { + this.dealerPoint = 0; + this.gamerPoint = 0; + } + public void Winner(Dealer dealer,Gamer gamer){ + dealerPoint=dealer.dealerTotal; + gamerPoint=gamer.gamerTotal; + System.out.println("gamerPoint: "+gamerPoint); + System.out.println("dealerPoint: "+dealerPoint); + for(Card card: dealer.dealer_cards) + System.out.println(card.getPoint()); + if(dealerPoint>21) + 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"); + } + } + + + } diff --git a/src/test/java/domain/CardDeckTest.java b/src/test/java/domain/CardDeckTest.java index dda86e3..36397bf 100644 --- a/src/test/java/domain/CardDeckTest.java +++ b/src/test/java/domain/CardDeckTest.java @@ -9,6 +9,7 @@ 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 { @@ -37,22 +38,14 @@ else if (i == 13) cardDeck.addCard(card); } } - @Test - @DisplayName("카드 뽑기") - void PickTest(){ - CardDeck cardDeck = new CardDeck(); - Card card = cardDeck.pick(); - System.out.println(card.getPattern()); - System.out.println(card.getCharacter()); - assertSame(cardDeck.getCards().contains(card),true); - } @Test @DisplayName("카드 뽑은 후 삭제") void RemoveTest(){ CardDeck cardDeck = new CardDeck(); - Card card = cardDeck.remove_card(); - assertSame(cardDeck.getCards().contains(card),false); - + Card card = cardDeck.pickAndRemove(); + System.out.println(card.getPattern()); + System.out.println(card.getCharacter()); + assertEquals(cardDeck.getCards().contains(card),false); } } diff --git a/src/test/java/domain/DealerTest.java b/src/test/java/domain/DealerTest.java new file mode 100644 index 0000000..cbbd145 --- /dev/null +++ b/src/test/java/domain/DealerTest.java @@ -0,0 +1,44 @@ +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); + dealer.pick(cardDeck); + 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 new file mode 100644 index 0000000..a0f8cfd --- /dev/null +++ b/src/test/java/domain/GamerTest.java @@ -0,0 +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 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); + } +} From b61ed8893e18905a0188c1a2b71134c96d4b2677 Mon Sep 17 00:00:00 2001 From: "y7133@naver.com" Date: Wed, 18 Nov 2020 20:53:58 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/BlackJack.java | 5 ++- src/main/java/domain/Card.java | 3 +- src/main/java/domain/CardDeck.java | 60 +++++++++++++++++----------- src/main/java/domain/Dealer.java | 41 +++++++++++-------- src/main/java/domain/Gamer.java | 31 +++++--------- src/main/java/domain/Rule.java | 22 +++++----- src/test/java/domain/DealerTest.java | 8 ++-- src/test/java/domain/GamerTest.java | 2 +- 8 files changed, 90 insertions(+), 82 deletions(-) diff --git a/src/main/java/BlackJack.java b/src/main/java/BlackJack.java index 3601cda..f853c9c 100644 --- a/src/main/java/BlackJack.java +++ b/src/main/java/BlackJack.java @@ -5,13 +5,14 @@ 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 dealerCardList = new ArrayList<>(); List gamerCardList = new ArrayList<>(); - Dealer dealer=new Dealer(dealerCardlist); + Dealer dealer=new Dealer(dealerCardList); Gamer gamer=new Gamer(gamerCardList); Rule rule=new Rule(); gamer.firstPick(cardDeck); diff --git a/src/main/java/domain/Card.java b/src/main/java/domain/Card.java index 8e66b40..62941d7 100644 --- a/src/main/java/domain/Card.java +++ b/src/main/java/domain/Card.java @@ -3,17 +3,16 @@ public class Card { private CardShape pattern; private String character; + private int point; public int getPoint() { return point; } - private int 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")) diff --git a/src/main/java/domain/CardDeck.java b/src/main/java/domain/CardDeck.java index 8a47d73..84fd914 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -1,12 +1,18 @@ package domain; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Random; public class CardDeck { List cards=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; @@ -22,50 +28,58 @@ public void setCards(List cards) { CardShape.HEART.name(), 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() { - make_deck(patterns); + makeDeck(patterns); } - public void make_deck(String[] patterns){ + private void makeDeck(String[] patterns){ for(int i=0;i<4;i++) - make_carddeck(patterns[i]); + makeCarddeck(patterns[i]); } //카드덱 만들기 - public void make_carddeck(String pattern) { - String character; - for (int i = 1; i < 14; i++) { - if (i == 1) - 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); + 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 void addCard(Card card){ this.cards.add(card); } //카드덱에서 카드 한장 뽑기(인덱스 추출) - public int draw_card_index(){ + private int drawCardIndex(){ Random random = new Random(); return random.nextInt(cards.size()); } - //카드 뽑기 -// public Card pick(){ -// return cards.get(draw_card_index()); -// } + //카드덱에서 해당 인덱스에 있는 카드 삭제 public Card pickAndRemove(){ - Card pickcard = cards.get(draw_card_index()); + Card pickcard = cards.get(drawCardIndex()); this.cards.remove(pickcard); return pickcard; } diff --git a/src/main/java/domain/Dealer.java b/src/main/java/domain/Dealer.java index df25544..e285b72 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -1,46 +1,53 @@ package domain; -import java.util.ArrayList; import java.util.List; -import java.util.Objects; public class Dealer implements Player{ - List dealer_cards= new ArrayList<>(); + List dealerCards; private static final int MAX_CARD=3; - public int dealerTotal=0; + private static final int BOUNDARY_VALUE=17; + public int dealerTotal; - public Dealer(List dealer_cards) { - this.dealer_cards=dealer_cards; + public Dealer(List dealerCards) { + this.dealerCards = dealerCards; this.dealerTotal=0; } @Override public List openCard(){ - return dealer_cards; + return dealerCards; } - @Override + + @Override //카드 2장을 초기에 뽑음 public void firstPick(CardDeck cardDeck){ - dealer_cards.add(cardDeck.pickAndRemove()); - dealer_cards.add(cardDeck.pickAndRemove()); - total(dealer_cards); + dealerCards.add(cardDeck.pickAndRemove()); + dealerCards.add(cardDeck.pickAndRemove()); + total(dealerCards); } + //카드값(16초과한지 계산) @Override public void total(List cards){ - cards=dealer_cards; + cards= dealerCards; for(Card card:cards) this.dealerTotal+=card.getPoint(); } - public void pick(CardDeck cardDeck){ - if(this.dealerTotal<17&&!isOverCardSize()) { - dealer_cards.add(cardDeck.pickAndRemove()); - this.dealerTotal+=dealer_cards.get(2).getPoint(); + //포인트가 16이하여서 한번 더 뽑음 + public void pick(CardDeck cardDeck){ + if(this.dealerTotal=MAX_CARD) + if(dealerCards.size()>=MAX_CARD) throw new IllegalArgumentException("받을 수 있는 카드 수 초과"); return false; } diff --git a/src/main/java/domain/Gamer.java b/src/main/java/domain/Gamer.java index 4a3fca8..70c95c4 100644 --- a/src/main/java/domain/Gamer.java +++ b/src/main/java/domain/Gamer.java @@ -7,45 +7,36 @@ public class Gamer implements Player{ - public List gamercards=new ArrayList<>(); + public List gamerCards; public int gamerTotal; public Gamer(List gamercards) { - this.gamercards = gamercards; + this.gamerCards = gamercards; this.gamerTotal=0; } @Override public List openCard(){ - return gamercards; + return gamerCards; } public void firstPick(CardDeck cardDeck){ - gamercards.add(cardDeck.pickAndRemove()); - gamercards.add(cardDeck.pickAndRemove()); - total(gamercards); + gamerCards.add(cardDeck.pickAndRemove()); + gamerCards.add(cardDeck.pickAndRemove()); + total(gamerCards); } @Override public void total(List cards){ - cards=gamercards; + cards=gamerCards; for(Card card:cards) { this.gamerTotal += card.getPoint(); } } public void pick(CardDeck cardDeck){ - gamercards.add(cardDeck.pickAndRemove()); - this.gamerTotal+=gamercards.get(gamercards.size()-1).getPoint(); + gamerCards.add(cardDeck.pickAndRemove()); + this.gamerTotal+=gamerCards.get(lastCardIndex()).getPoint(); } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Gamer)) return false; - Gamer gamer = (Gamer) o; - return Objects.equals(gamercards, gamer.gamercards); - } - - @Override - public int hashCode() { - return Objects.hash(gamercards); + private int lastCardIndex(){ + return gamerCards.size()-1; } } diff --git a/src/main/java/domain/Rule.java b/src/main/java/domain/Rule.java index 8632c4e..815a173 100644 --- a/src/main/java/domain/Rule.java +++ b/src/main/java/domain/Rule.java @@ -1,12 +1,9 @@ package domain; -import ui.Game; - -import java.util.List; - public class Rule { - public int dealerPoint=0; - public int gamerPoint=0; + public int dealerPoint; + public int gamerPoint; + public Rule() { this.dealerPoint = 0; this.gamerPoint = 0; @@ -14,9 +11,7 @@ public Rule() { public void Winner(Dealer dealer,Gamer gamer){ dealerPoint=dealer.dealerTotal; gamerPoint=gamer.gamerTotal; - System.out.println("gamerPoint: "+gamerPoint); - System.out.println("dealerPoint: "+dealerPoint); - for(Card card: dealer.dealer_cards) + for(Card card: dealer.dealerCards) System.out.println(card.getPoint()); if(dealerPoint>21) dealerPoint=0; @@ -31,7 +26,10 @@ else if(dealerPoint==gamerPoint) { System.out.println("Gamer is winner"); } } - - - + private int calcPoint(int point){ + if(point>21) + return -1; + else + return point; + } } diff --git a/src/test/java/domain/DealerTest.java b/src/test/java/domain/DealerTest.java index cbbd145..e3d1996 100644 --- a/src/test/java/domain/DealerTest.java +++ b/src/test/java/domain/DealerTest.java @@ -17,9 +17,9 @@ void pickCard(){ CardDeck cardDeck = new CardDeck(); Listcards = new ArrayList<>(); Dealer dealer = new Dealer(cards); - dealer.firstPick(cardDeck); - dealer.pick(cardDeck); - for(int i=0;idealer.isOverCardSize() ); assertTrue(ex.getMessage().contains("받을 수 있는 카드 수 초과")); - - } } diff --git a/src/test/java/domain/GamerTest.java b/src/test/java/domain/GamerTest.java index a0f8cfd..620db9f 100644 --- a/src/test/java/domain/GamerTest.java +++ b/src/test/java/domain/GamerTest.java @@ -15,7 +15,7 @@ void gamerCardPick(){ List cards = new ArrayList<>(); Gamer gamer = new Gamer(cards); gamer.firstPick(cardDeck); - for(int i=0;i Date: Tue, 8 Dec 2020 17:25:36 +0900 Subject: [PATCH 06/10] 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 07/10] 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 08/10] 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 09/10] 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 10/10] =?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); +// } +//}