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/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/.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/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/.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/BlackJack.java b/src/main/java/BlackJack.java index 2ecadc6..939554f 100644 --- a/src/main/java/BlackJack.java +++ b/src/main/java/BlackJack.java @@ -1,8 +1,21 @@ -import ui.Game; - -public class BlackJack { - public static void main(String[] args) { - Game game = new Game(); - game.play(); - } -} +//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/Card.java b/src/main/java/domain/Card.java new file mode 100644 index 0000000..8506b86 --- /dev/null +++ b/src/main/java/domain/Card.java @@ -0,0 +1,42 @@ +package domain; + +import java.util.Objects; + +public class Card { + + 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 583c169..87b4b7c 100644 --- a/src/main/java/domain/CardDeck.java +++ b/src/main/java/domain/CardDeck.java @@ -1,4 +1,33 @@ package domain; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + public class CardDeck { + //List cardList = new ArrayList<>(); + private Cards cards; + //Cards cards; + public CardDeck(Cards cards) { + this.cards = cards; + cardShuffle(); + } + + private void cardShuffle(){ + cards.create(); + Collections.shuffle(cards.getCards()); + } + + + public Card pick(){ + Card card = cards.toList().get(0); + remove(card); + return card; + } + + public void remove(Card card){ + + cards.getCards().remove(card); + } + } diff --git a/src/main/java/domain/CardShape.java b/src/main/java/domain/CardShape.java new file mode 100644 index 0000000..8d7c7a7 --- /dev/null +++ b/src/main/java/domain/CardShape.java @@ -0,0 +1,23 @@ +package domain; +public enum CardShape { + SPADE("SPADE"), + HEART( "HEART"), + DIAMOND("DIAMOND"), + CLUB("CLUB"); + + private String shape; + + CardShape(String shape) { + this.shape = shape; + + } + + public String getShape() { + return shape; + } + + public void setShape(String shape) { + this.shape = shape; + } + +} diff --git a/src/main/java/domain/Cards.java b/src/main/java/domain/Cards.java new file mode 100644 index 0000000..13778be --- /dev/null +++ b/src/main/java/domain/Cards.java @@ -0,0 +1,39 @@ +package domain; + + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class Cards { + private List cards = new ArrayList<>(); + + public Cards(List cards) { + this.cards=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(){ + for(Pattern pattern: Pattern.values()){ + createByPattern(cards,pattern); + } + return Collections.unmodifiableList(cards); + } + + public List getCards(){ + return 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 c0094ad..0f093b0 100644 --- a/src/main/java/domain/Dealer.java +++ b/src/main/java/domain/Dealer.java @@ -1,4 +1,40 @@ -package domain; - -public class Dealer { -} +//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() 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/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 new file mode 100644 index 0000000..11ca5c0 --- /dev/null +++ b/src/main/java/domain/Player.java @@ -0,0 +1,8 @@ +package domain; +import java.util.List; + +public interface Player { + public Cards openCard(); + public void firstPick(CardDeck cardDeck); + public void addCard(CardDeck cardDeck); +} diff --git a/src/main/java/domain/Rule.java b/src/main/java/domain/Rule.java index fb6a9f1..971c505 100644 --- a/src/main/java/domain/Rule.java +++ b/src/main/java/domain/Rule.java @@ -1,4 +1,38 @@ -package domain; - -public class Rule { -} +//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 new file mode 100644 index 0000000..a37f9c4 --- /dev/null +++ b/src/test/java/domain/CardDeckTest.java @@ -0,0 +1,31 @@ +package domain; + +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 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 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/CardsTest.java b/src/test/java/domain/CardsTest.java new file mode 100644 index 0000000..aadecb3 --- /dev/null +++ b/src/test/java/domain/CardsTest.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 CardsTest { + + @Test + @DisplayName("Make Cards") + void createCard(){ + List cardList= new ArrayList<>(); + Cards cards = new Cards(cardList); + assertEquals(cardList.size(),52); + for(int i=0;icards = 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 new file mode 100644 index 0000000..6505a84 --- /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); +// } +//}