diff --git a/README.md b/README.md
index e69de29..f24524a 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,29 @@
+[구현 기능 목록]
+1. Main 클래스 : Card, Player, Dealer, Board
+2. 클래스 객체
+3. 지역변수 정의
+4. 지역 메소드 정의
+
+[구현할 메서드 기능 목록(Before OMOF rule)]
+
+
+1. 본 게임 전 초기설정
+- 카드 숫자 설정
+- 참여 인원 받기
+- 배팅 금액 받기
+
+
+2. 게임 시작
+- 모두에게 카드 2장 지급
+- 한 사람의 카드 숫자 계산(합 21=>블랙잭)
+- 카드 숫자 계산해서 딜러vs 플레이어 승패 정하기 (합21 or 더가까운)
+- 플레이어의 카드 판단 (21 넘는다 or 안넘는다)
+- 프레이어 배팅 금액 잃음 (21 넘을경우)
+- 플레이어 카드 뽑기 (21 안넘을 경우)
+- 보드에서 게임을 순서대로 진행하기
+- 처음 2장부터 블랙잭이 되면 베팅금액 1.5배 딜러에게 받고 둘다 블랙잭이면 플레이어는 베팅 금액 돌려받기
+- 딜러는 처음 2장의 조건으로 행동 판단. (16이하, 17이상, 21초과)
+
+3. 주안점
+- 블랙잭은 계산함수 안에서? 아니면 메서드 하나로? 메서드 하나라면 숫자 계산함수와 포함 관계는?
+
diff --git a/src/main/java/Main.java b/src/main/java/Main.java
new file mode 100644
index 0000000..10302ea
--- /dev/null
+++ b/src/main/java/Main.java
@@ -0,0 +1,10 @@
+import domain.board.Blackjack;
+
+public class Main {
+
+ public static void main(String[] args) {
+ Blackjack board = new Blackjack();
+ board.game();
+ }
+
+}
diff --git a/src/main/java/domain/board/Blackjack.java b/src/main/java/domain/board/Blackjack.java
new file mode 100644
index 0000000..a179d33
--- /dev/null
+++ b/src/main/java/domain/board/Blackjack.java
@@ -0,0 +1,172 @@
+package domain.board;
+
+import domain.card.*;
+import domain.user.*;
+import java.util.*;
+
+public class Blackjack {
+ Scanner sc;
+ List cards;
+ List players;
+ Dealer dealer;
+ Rule rule;
+
+ public Blackjack(){
+ init();
+ }
+
+ public void init() {
+ sc = new Scanner(System.in);
+ cards = CardFactory.create();
+ dealer = new Dealer();
+ rule = new Rule();
+ rule = new Rule();
+ createPlayers();
+ }
+
+ public void createPlayers() {
+ String names[];
+ Map users;
+ names = getNameInput();
+ users = setBettingMoney(names);
+ createPlayer(users);
+ }
+
+ public String[] getNameInput() {
+ String names[];
+ System.out.println("게임에 참여할 사람의 이름을 입력하세요.(쉼표 기준으로 분리)");
+ names = sc.next().split(",");
+ return names;
+ }
+
+ public Map setBettingMoney(String[] names) {
+ Map users = new HashMap();
+ String bettingMoney;
+ for(int i=0 ; i users) {
+ players = new ArrayList();
+ for(Map.Entry user : users.entrySet() ) {
+ Player player = new Player(user.getKey(),Double.parseDouble(user.getValue()));
+ players.add(player);
+ }
+ }
+ /* 딜러, 플레이어에게 카드 두장 주기.
+ * cards에서 카드 한장 지우고 그 카드를 유저에게 주는 giveCardTo 함수 2번호출
+ * */
+ public void giveTwoCardToAll() {
+ giveCardToDealer(dealer);
+ giveCardToDealer(dealer);
+ for(Player player : players) {
+ giveCardToPlayer(player);
+ giveCardToPlayer(player);
+ }
+ }
+
+ public void giveCardToPlayer(Player player) {
+ int random = (int)Math.random()*cards.size();
+ Card card = cards.remove(random);
+ player.addCard(card);
+
+ }
+
+ public void giveCardToDealer(Dealer dealer) {
+ int random = (int)(Math.random()*(cards.size()-1));
+ Card card = cards.remove(random);
+ dealer.addCard(card);
+ }
+
+ public void printNoticeTwoCard() {
+ System.out.print("딜러와 ");
+ for(int i=0 ; i cards = player.getCards();
+ int score=0;
+ for(Card card:cards) {
+ score = score+ card.getScore();
+ }
+ return score;
+ }
+
+ public int getDealerScore(Dealer dealer) {
+ List cards = dealer.getCards();
+ int score=0;
+ for(Card card:cards) {
+ score = score+ card.getScore();
+ }
+ return score;
+ }
+
+ public boolean dealerCanGetCard(Dealer dealer) {
+ int score = getDealerScore(dealer);
+ if(score<=DEALER_LIMIT_SCORE) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isPlayerBlackjack(Player player) {
+ if(getPlayerScore(player)==BLACKJACK_SCORE) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isDealerBlackjack(Dealer dealer) {
+ if(getDealerScore(dealer)==BLACKJACK_SCORE) {
+ return true;
+ }
+ return false;
+ }
+
+ /* 플레이어가 블랙잭 - 1.5배 딜러에게 받는다.
+ * 플레이어, 딜러 동시에 블랙잭 - 플레이어는 베팅액 그대로. 아닌 플레이어는 딜러에게 뺏김.
+ * 딜러 21 초과 - 베팅액 돌려받는다.
+ * */
+ public double getBettingResult(Dealer dealer, List players) {
+ double dealerMoney=0,playerMoney=0;
+ if(isDealerBlackjack(dealer)){
+ for(int i=0 ; iBLACKJACK_SCORE) {
+
+ }
+ return dealerMoney;
+ }
+
+}
diff --git a/src/main/java/domain/card/Card.java b/src/main/java/domain/card/Card.java
index bab8a84..cec7bd8 100644
--- a/src/main/java/domain/card/Card.java
+++ b/src/main/java/domain/card/Card.java
@@ -15,7 +15,9 @@ public Card(Symbol symbol, Type type) {
this.type = type;
}
- // TODO Card 관련 추가 기능 구현
+ public void printCard() {
+ System.out.print("("+this.symbol+","+this.type+")");
+ }
@Override
public boolean equals(Object o) {
@@ -38,4 +40,8 @@ public String toString() {
", type=" + type +
'}';
}
+
+ public int getScore() {
+ return this.symbol.getScore();
+ }
}
diff --git a/src/main/java/domain/card/CardFactory.java b/src/main/java/domain/card/CardFactory.java
index 9658c84..8729b3c 100644
--- a/src/main/java/domain/card/CardFactory.java
+++ b/src/main/java/domain/card/CardFactory.java
@@ -1,7 +1,6 @@
package domain.card;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
/**
@@ -14,7 +13,7 @@ public static List create() {
for (Symbol symbol : symbols) {
createByType(cards, symbol);
}
- return Collections.unmodifiableList(cards);
+ return cards;
}
private static void createByType(List cards, Symbol symbol) {
diff --git a/src/main/java/domain/user/Dealer.java b/src/main/java/domain/user/Dealer.java
index 328e2f6..3005505 100644
--- a/src/main/java/domain/user/Dealer.java
+++ b/src/main/java/domain/user/Dealer.java
@@ -9,13 +9,25 @@
* 게임 딜러를 의미하는 객체
*/
public class Dealer {
- private final List cards = new ArrayList<>();
+ private final List cards = new ArrayList<>();
public Dealer() {}
+
+
+ public List getCards(){
+ return this.cards;
+ }
public void addCard(Card card) {
cards.add(card);
}
- // TODO 추가 기능 구현
+ public void printCard() {
+ System.out.print("딜러:");
+ for(Card card:cards) {
+ card.printCard();
+ }
+ System.out.println();
+ }
+
}
diff --git a/src/main/java/domain/user/Player.java b/src/main/java/domain/user/Player.java
index d529127..5fe048e 100644
--- a/src/main/java/domain/user/Player.java
+++ b/src/main/java/domain/user/Player.java
@@ -10,18 +10,49 @@
*/
public class Player {
private final String name;
- private final double bettingMoney;
+ private double bettingMoney;
private final List cards = new ArrayList<>();
public Player(String name, double bettingMoney) {
this.name = name;
this.bettingMoney = bettingMoney;
}
+
+ public String getName() {
+ return this.name;
+ }
+
+ public List getCards(){
+ return this.cards;
+ }
+
+ public double getBettingMoney() {
+ return this.bettingMoney;
+ }
+
+ public void setBettingMoney(double money) {
+ this.bettingMoney = money;
+ }
public void addCard(Card card) {
cards.add(card);
}
-
- // TODO 추가 기능 구현
-
+
+ public void printCard() {
+ System.out.print(name+"카드:");
+ for(Card card:cards) {
+ card.printCard();
+ }
+ System.out.println();
+ }
+
+
+
+
+
+
+
+
+
+
}
diff --git a/src/test/java/domain/card/CardFactoryTest.java b/src/test/java/domain/card/CardFactoryTest.java
index 8c93f3d..134b28f 100644
--- a/src/test/java/domain/card/CardFactoryTest.java
+++ b/src/test/java/domain/card/CardFactoryTest.java
@@ -12,5 +12,9 @@ void create() {
List cards = CardFactory.create();
assertThat(cards).hasSize(52);
System.out.println(cards);
+
+ System.out.print("\n 0번째 지운 후 0번째 요소 :");
+ cards.get(0).printCard();
+
}
}