From d6b0d2fc2a9c2735f0f71ac910564327540b4d21 Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 16:58:39 +0900 Subject: [PATCH 01/56] =?UTF-8?q?docs:=20=EC=97=B0=EB=A3=8C=20=EC=A3=BC?= =?UTF-8?q?=EC=9E=85=20=EA=B8=B0=EB=8A=A5=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 03ba7ed3..edeac5e8 100644 --- a/README.md +++ b/README.md @@ -1 +1,21 @@ -# java-blackjack \ No newline at end of file +# java-blackjack + +# 연료주입 + +### 기능요구사항 +- [ ] Sonata 2대, Avante 1대, K5 2대로 총 5대의 차량이 있다. +- [ ] 여행할 목적지의 대략적인 이동거리를 입력받는다. +- [ ] 차량 별로 필요한 연료를 주입받는다. +- [ ] 차량 별로 주입해야할 연료량을 확인할 수 있는 보고서를 생성한다. + +### 프로그래밍 요구 사항 +- 상속과 추상 메서드를 활용한다. +- 위 요구사항을 if/else 절을 쓰지 않고 구현해야 한다. + + +# multiple authors +git commit -m "commit message + + +Co-authored-by: seungyeonjeong +Co-authored-by: YuYangWoo \ No newline at end of file From c8876cff76d491a641d793c8220e3ee141aa226c Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:01:51 +0900 Subject: [PATCH 02/56] =?UTF-8?q?feat:=20InputView,=20OutputView=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/fuel/view/InputView.java | 16 ++++++++++++++++ src/main/java/fuel/view/OutputView.java | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/main/java/fuel/view/InputView.java create mode 100644 src/main/java/fuel/view/OutputView.java diff --git a/src/main/java/fuel/view/InputView.java b/src/main/java/fuel/view/InputView.java new file mode 100644 index 00000000..c41c13b5 --- /dev/null +++ b/src/main/java/fuel/view/InputView.java @@ -0,0 +1,16 @@ +package fuel.view; + +import java.util.Scanner; + +public class InputView { + private static final Scanner scanner = new Scanner(System.in); + + private InputView() { + + } + + public static Double readDistance() { + Double carDistance = scanner.nextDouble(); + return carDistance; + } +} diff --git a/src/main/java/fuel/view/OutputView.java b/src/main/java/fuel/view/OutputView.java new file mode 100644 index 00000000..c17b5d8b --- /dev/null +++ b/src/main/java/fuel/view/OutputView.java @@ -0,0 +1,24 @@ +package fuel.view; + +public class OutputView { + + private OutputView() { + + } + + public static void printReport(String report) { + System.out.println(report); + } + + public static void printSonataDistance() { + System.out.println("소나타의 대략적인 이동거리를 입력해주세요."); + } + + public static void printAvanteDistance() { + System.out.println("아반테의 대략젹인 이동거리를 입력해주세요."); + } + + public static void printK5Distance() { + System.out.println("K5의 대략적인 이동거리를 입력해주세요."); + } +} From 8d9dd7e4682b43b58032f2e3d8e4b325086ec89e Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:02:49 +0900 Subject: [PATCH 03/56] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=EB=93=A4=EC=9D=B4=20=EC=83=81=EC=86=8D=EB=B0=9B=EC=9D=84=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8A=94=20Car=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/fuel/domain/Car.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/fuel/domain/Car.java diff --git a/src/main/java/fuel/domain/Car.java b/src/main/java/fuel/domain/Car.java new file mode 100644 index 00000000..4e68b853 --- /dev/null +++ b/src/main/java/fuel/domain/Car.java @@ -0,0 +1,14 @@ +package fuel.domain; + +public abstract class Car { + + abstract double getDistancePerLiter(); + + abstract double getTripDistance(); + + abstract String getName(); + + double getChargeQuantity() { + return getTripDistance() / getDistancePerLiter(); + } +} From cf23f3a65838587de9310d59893bdca0fb6961db Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:03:23 +0900 Subject: [PATCH 04/56] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=EB=A5=BC=20=EC=83=81=EC=86=8D=20=EB=B0=9B=EB=8A=94=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=EC=B0=A8=20=EA=B0=9D=EC=B2=B4=EB=A5=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/fuel/domain/Avante.java | 33 ++++++++++++++++++++++++++ src/main/java/fuel/domain/K5.java | 33 ++++++++++++++++++++++++++ src/main/java/fuel/domain/Sonata.java | 34 +++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 src/main/java/fuel/domain/Avante.java create mode 100644 src/main/java/fuel/domain/K5.java create mode 100644 src/main/java/fuel/domain/Sonata.java diff --git a/src/main/java/fuel/domain/Avante.java b/src/main/java/fuel/domain/Avante.java new file mode 100644 index 00000000..ec030422 --- /dev/null +++ b/src/main/java/fuel/domain/Avante.java @@ -0,0 +1,33 @@ +package fuel.domain; + +public class Avante extends Car{ + + private static final int FUEL_EFFICIENCY = 15; + private final String carName; + private final double distance; + + public Avante(double distance) { + this.distance = distance; + this.carName = "Avante"; + } + + @Override + double getDistancePerLiter() { + return FUEL_EFFICIENCY; + } + + @Override + double getTripDistance() { + return distance; + } + + @Override + double getChargeQuantity() { + return distance / FUEL_EFFICIENCY; + } + + @Override + String getName() { + return carName; + } +} diff --git a/src/main/java/fuel/domain/K5.java b/src/main/java/fuel/domain/K5.java new file mode 100644 index 00000000..02bbfa95 --- /dev/null +++ b/src/main/java/fuel/domain/K5.java @@ -0,0 +1,33 @@ +package fuel.domain; + +public class K5 extends Car { + + private static final int FUEL_EFFICIENCY = 13; + private final String carName; + private final double distance; + + public K5(double distance) { + this.distance = distance; + this.carName = "K5"; + } + + @Override + double getDistancePerLiter() { + return FUEL_EFFICIENCY; + } + + @Override + double getTripDistance() { + return distance; + } + + @Override + double getChargeQuantity() { + return distance / FUEL_EFFICIENCY; + } + + @Override + String getName() { + return carName; + } +} diff --git a/src/main/java/fuel/domain/Sonata.java b/src/main/java/fuel/domain/Sonata.java new file mode 100644 index 00000000..9e286acd --- /dev/null +++ b/src/main/java/fuel/domain/Sonata.java @@ -0,0 +1,34 @@ +package fuel.domain; + +public class Sonata extends Car { + + private static final int FUEL_EFFICIENCY = 10; + + private final String carName; + private final double distance; + + public Sonata(double distance) { + this.carName = "Sonata"; + this.distance = distance; + } + + @Override + String getName() { + return carName; + } + + @Override + double getChargeQuantity() { + return distance / FUEL_EFFICIENCY; + } + + @Override + double getTripDistance() { + return distance; + } + + @Override + double getDistancePerLiter() { + return FUEL_EFFICIENCY; + } +} From 952a44bbe2f20263fafe582bcdcd083c32e11c12 Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:07:07 +0900 Subject: [PATCH 05/56] =?UTF-8?q?feat:=20RentCompany=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. RentCompany create 메서드 구현 2. 자동차를 추가하는 addCar 메서드 구현 3. 차량별로 주입해야 할 연료를 가진 generateReport 메서드 구현 Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/fuel/domain/RentCompany.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/fuel/domain/RentCompany.java diff --git a/src/main/java/fuel/domain/RentCompany.java b/src/main/java/fuel/domain/RentCompany.java new file mode 100644 index 00000000..e51b5f0e --- /dev/null +++ b/src/main/java/fuel/domain/RentCompany.java @@ -0,0 +1,27 @@ +package fuel.domain; + +import java.util.ArrayList; +import java.util.List; + +public class RentCompany { + private static final String NEWLINE = System.getProperty("line.separator"); + + final List carLists = new ArrayList<>(); + + public static RentCompany create() { + return new RentCompany(); + } + + public void addCar(Car car) { + carLists.add(car); + } + + public String generateReport(){ + StringBuilder stringBuilder = new StringBuilder(); + for (Car car : carLists) { + stringBuilder.append(car.getName()).append(" : ").append(car.getChargeQuantity()).append("리터").append(NEWLINE); + } + return stringBuilder.toString(); + } + +} From 39a00f898bd99e5222f2f18f5e0b37335241acca Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:09:40 +0900 Subject: [PATCH 06/56] =?UTF-8?q?feat:=20=EC=97=B0=EB=A3=8C=20=EC=A3=BC?= =?UTF-8?q?=EC=9E=85=EC=9D=84=20=EC=9C=84=ED=95=9C=20Application=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/fuel/Application.java | 31 +++++++++++++++++++ .../java/fuel/domain/RentCompanyTest.java | 27 ++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/main/java/fuel/Application.java create mode 100644 src/test/java/fuel/domain/RentCompanyTest.java diff --git a/src/main/java/fuel/Application.java b/src/main/java/fuel/Application.java new file mode 100644 index 00000000..2f1a5f93 --- /dev/null +++ b/src/main/java/fuel/Application.java @@ -0,0 +1,31 @@ +package fuel; + +import fuel.domain.Avante; +import fuel.domain.K5; +import fuel.domain.RentCompany; +import fuel.domain.Sonata; +import fuel.view.InputView; +import fuel.view.OutputView; + +public class Application { + public static void main(String[] args) { + RentCompany rentCompany = new RentCompany(); + + OutputView.printSonataDistance(); + rentCompany.addCar(new Sonata(InputView.readDistance())); + + OutputView.printK5Distance(); + rentCompany.addCar(new K5(InputView.readDistance())); + + OutputView.printSonataDistance(); + rentCompany.addCar(new Sonata(InputView.readDistance())); + + OutputView.printAvanteDistance(); + rentCompany.addCar(new Avante(InputView.readDistance())); + + OutputView.printK5Distance(); + rentCompany.addCar(new K5(InputView.readDistance())); + + OutputView.printReport(rentCompany.generateReport()); + } +} diff --git a/src/test/java/fuel/domain/RentCompanyTest.java b/src/test/java/fuel/domain/RentCompanyTest.java new file mode 100644 index 00000000..08e37003 --- /dev/null +++ b/src/test/java/fuel/domain/RentCompanyTest.java @@ -0,0 +1,27 @@ +package fuel.domain; + +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.jupiter.api.Test; + +public class RentCompanyTest { + private static final String NEWLINE = System.getProperty("line.separator"); + + @Test + public void report() throws Exception { + RentCompany company = RentCompany.create(); // factory method를 사용해 생성 + company.addCar(new Sonata(150)); + company.addCar(new K5(260)); + company.addCar(new Sonata(120)); + company.addCar(new Avante(300)); + company.addCar(new K5(390)); + + String report = company.generateReport(); + assertThat(report).isEqualTo( + "Sonata : 15.0리터" + NEWLINE + + "K5 : 20.0리터" + NEWLINE + + "Sonata : 12.0리터" + NEWLINE + + "Avante : 20.0리터" + NEWLINE + + "K5 : 30.0리터" + NEWLINE + ); + } +} \ No newline at end of file From d2c8c915171aa16eb4d9a94104a57ff3ece51010 Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:19:52 +0900 Subject: [PATCH 07/56] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=EC=9A=94?= =?UTF-8?q?=EA=B5=AC=EC=82=AC=ED=95=AD=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index edeac5e8..d7ae2e56 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ # 연료주입 ### 기능요구사항 -- [ ] Sonata 2대, Avante 1대, K5 2대로 총 5대의 차량이 있다. -- [ ] 여행할 목적지의 대략적인 이동거리를 입력받는다. -- [ ] 차량 별로 필요한 연료를 주입받는다. -- [ ] 차량 별로 주입해야할 연료량을 확인할 수 있는 보고서를 생성한다. +- [x] Sonata 2대, Avante 1대, K5 2대로 총 5대의 차량이 있다. +- [x] 여행할 목적지의 대략적인 이동거리를 입력받는다. +- [x] 차량 별로 필요한 연료를 주입받는다. +- [x] 차량 별로 주입해야할 연료량을 확인할 수 있는 보고서를 생성한다. ### 프로그래밍 요구 사항 - 상속과 추상 메서드를 활용한다. From c4260e970ee622644a7d0fac39f277ea5353f942 Mon Sep 17 00:00:00 2001 From: SeungYeonJeong Date: Fri, 11 Feb 2022 17:37:04 +0900 Subject: [PATCH 08/56] =?UTF-8?q?docs:=20Blackjack=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- README.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/README.md b/README.md index d7ae2e56..b044fad0 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,45 @@ - 상속과 추상 메서드를 활용한다. - 위 요구사항을 if/else 절을 쓰지 않고 구현해야 한다. +# 블랙잭 + +### 기능요구사항 +- [ ] 게임에 참여할 사람의 이름을 입력받을 수 있다. 이름은 쉼표를 기준으로 분리한다 + ex) pobi, jason +- [ ] 카드의 숫자 계산은 카드 숫자를 기본으로 한다. + - [ ] 예외로 Ace는 1 또는 11로 계산할 수 있다. + - [ ] King, Queen, Jack은 각각 10으로 계산한다. +- [ ] 게임을 시작하면 플레이어는 두 장의 카드를 지급 받는다. + - [ ] 숫자 합이 21을 넘지 않으면 카드를 계속 뽑을 수 있다. + - [ ] 딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다. +- [ ] 가지고 있는 카드 숫자 합이 21을 초과하면 게임에서 진다. +- [ ] 가지고 있는 카드 숫자 합이 21이거나 21을 초과하지 않으면서 21에 가장 가까운 플레이어가 승리한다. +- [ ] 게임을 완료한 후 각 플레이어별로 승패를 출력한다. + +### 프로그래밍 요구 사항 +- 자바 코드 컨벤션을 지키면서 프로그래밍한다. +- 기본적으로 Google Java Style Guide을 원칙으로 한다. + - 단, 들여쓰기는 '2 spaces'가 아닌 '4 spaces'로 한다. +- indent(인덴트, 들여쓰기) depth를 2를 넘지 않도록 구현한다. 1까지만 허용한다. + - 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다. + - 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다. +- 3항 연산자를 쓰지 않는다. +- else 예약어를 쓰지 않는다. + - else 예약어를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다. + - 힌트: if문에서 값을 반환하는 방식으로 구현하면 else 예약어를 사용하지 않아도 된다. +- 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외 + - 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다. + - UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다. +- 함수(또는 메서드)의 길이가 10라인을 넘어가지 않도록 구현한다. + - 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들어라. +- 배열 대신 컬렉션을 사용한다. +- 모든 원시 값과 문자열을 포장한다 +- 줄여 쓰지 않는다(축약 금지). +- 일급 컬렉션을 쓴다. +### 추가된 요구 사항 +- 모든 엔티티를 작게 유지한다. +- 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. +- 딜러와 플레이어에서 발생하는 중복 코드를 제거해야 한다. # multiple authors git commit -m "commit message From 3f8e6f78583b442026ebc31260b4b8abaa1c121f Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:09:01 +0900 Subject: [PATCH 09/56] =?UTF-8?q?feat:=20=EC=B9=B4=EB=93=9C=EC=9D=98=20?= =?UTF-8?q?=EC=A2=85=EB=A5=98=EB=A5=BC=20=EB=82=98=ED=83=80=EB=82=B4?= =?UTF-8?q?=EB=8A=94=20Denomination=20Enum=20class=EB=A1=9C=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../blackjack/domain/Card/Denomination.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Denomination.java diff --git a/src/main/java/blackjack/domain/Card/Denomination.java b/src/main/java/blackjack/domain/Card/Denomination.java new file mode 100644 index 00000000..24b5c414 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Denomination.java @@ -0,0 +1,27 @@ +package blackjack.domain.Card; + +public enum Denomination { + ACE(1), + TWO(2), + THREE(3), + FOUR(4), + FIVE(5), + SIX(6), + SEVEN(7), + EIGHT(8), + NINE(9), + TEN(10), + JACK(10), + QUEEN(10), + KING(10); + + private int value; + + Denomination(int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} From d2d00e6a38aca37f425d11e61a04f8a1c52cc119 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:09:30 +0900 Subject: [PATCH 10/56] =?UTF-8?q?test:=20=EC=B9=B4=EB=93=9C=EC=9D=98=20?= =?UTF-8?q?=EC=A2=85=EB=A5=98=EB=A5=BC=20=EB=82=98=ED=83=80=EB=82=B4?= =?UTF-8?q?=EB=8A=94=20Denomination=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../domain/Card/DenominationTest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/test/java/blackjack/domain/Card/DenominationTest.java diff --git a/src/test/java/blackjack/domain/Card/DenominationTest.java b/src/test/java/blackjack/domain/Card/DenominationTest.java new file mode 100644 index 00000000..2b5f0dad --- /dev/null +++ b/src/test/java/blackjack/domain/Card/DenominationTest.java @@ -0,0 +1,28 @@ +package blackjack.domain.Card; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class DenominationTest { + + @DisplayName(value = "KING의 계산값은 10으로 정의한다") + @Test + void 킹의_계산값은_10이다() { + assertThat(Denomination.KING.getValue()).isEqualTo(10); + } + + @DisplayName(value = "퀸의 계산값은 10으로 정의한다") + @Test + void 퀸의_계산값은_10이다() { + assertThat(Denomination.QUEEN.getValue()).isEqualTo(10); + } + + @DisplayName(value = "JACK의 계산값은 10으로 정의한다") + @Test + void 잭의_계산값은_10이다() { + assertThat(Denomination.JACK.getValue()).isEqualTo(10); + } + +} From 6d980daa17d6e5cde88c9a624a3342a6810e6f61 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:10:02 +0900 Subject: [PATCH 11/56] =?UTF-8?q?feat:=20OutputView.java=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=EC=9D=84=20=EB=8B=B4=EB=8B=B9=ED=95=98=EB=8A=94=20Vie?= =?UTF-8?q?w=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/view/OutputView.java | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/blackjack/view/OutputView.java diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java new file mode 100644 index 00000000..d0832d71 --- /dev/null +++ b/src/main/java/blackjack/view/OutputView.java @@ -0,0 +1,25 @@ +package blackjack.view; + +public class OutputView { + private static final String REQUEST_PLAYERS_NAME = "게임에 참여할 사람의 이름을 입력하세요"; + private static final String DELIMITER = ", "; + private static final String REQUEST_RECEIVE_CARD = "는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)"; + + private OutputView() {} + + public static void requestPlayersName(String[] players) { + System.out.println(REQUEST_PLAYERS_NAME); + printGamePlayer(players); + } + + public static void printGamePlayer(String[] players) { + System.out.println(String.join(DELIMITER, players)); + } + + public static void printCardsSetting(String[] players) { + System.out.println("딜러와 " + String.join(DELIMITER, players) + "에게 2장의 카드를 나누었습니다."); + } + + +} +// 다이아몬드, 하트, spade, clover From de5e6c6d74b61a03e115500fff6ddaf05b558ad7 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:10:25 +0900 Subject: [PATCH 12/56] =?UTF-8?q?feat:=20InputView.java=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EC=9D=84=20=EB=8B=B4=EB=8B=B9=ED=95=98=EB=8A=94=20Vie?= =?UTF-8?q?w=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/view/InputView.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/blackjack/view/InputView.java diff --git a/src/main/java/blackjack/view/InputView.java b/src/main/java/blackjack/view/InputView.java new file mode 100644 index 00000000..82cfc20f --- /dev/null +++ b/src/main/java/blackjack/view/InputView.java @@ -0,0 +1,18 @@ +package blackjack.view; + +import java.util.Scanner; + +public class InputView { + private InputView() {} + + public static final String[] readPlayerName() { + Scanner scanner = new Scanner(System.in); + try { + String playerNames = scanner.nextLine(); + return playerNames.split(","); + } catch (IllegalArgumentException illegalArgumentException) { + System.out.println(illegalArgumentException.getMessage()); + } + return readPlayerName(); + } +} From 5125c16444753dc73581e9b0988ee5050e597be3 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:11:11 +0900 Subject: [PATCH 13/56] =?UTF-8?q?feat:=20=EC=B9=B4=EB=93=9C=EC=9D=98=20?= =?UTF-8?q?=EC=A2=85=EB=A5=98=EB=A5=BC=20=EB=82=98=ED=83=80=EB=82=B4?= =?UTF-8?q?=EB=8A=94=20Suit=20Enum=20class=20=EA=B5=AC=ED=98=84=201.=20?= =?UTF-8?q?=EC=8A=A4=ED=8E=98=EC=9D=B4=EB=93=9C,=20=ED=95=98=ED=8A=B8,=20?= =?UTF-8?q?=EB=8B=A4=EC=9D=B4=EC=95=84=EB=AA=AC=EB=93=9C,=20=ED=81=B4?= =?UTF-8?q?=EB=A1=9C=EB=B2=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Suit.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Suit.java diff --git a/src/main/java/blackjack/domain/Card/Suit.java b/src/main/java/blackjack/domain/Card/Suit.java new file mode 100644 index 00000000..0aaf8a99 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Suit.java @@ -0,0 +1,18 @@ +package blackjack.domain.Card; + +public enum Suit { + CLUBS("클로버"), + DIAMONDS("다이아몬드"), + HEARTS("하트"), + SPADES("스페이드"); + + private String value; + + Suit(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} From 4770d7745a3136fbc91397b82f7617e2e59b88b6 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:20:39 +0900 Subject: [PATCH 14/56] =?UTF-8?q?test:=20Denomination=EA=B3=BC=20suit?= =?UTF-8?q?=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=B4=20CardTest=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=201.=20=EC=B9=B4=EB=93=9C=EB=A5=BC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=ED=95=98=EB=8A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/CardTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/test/java/blackjack/domain/Card/CardTest.java diff --git a/src/test/java/blackjack/domain/Card/CardTest.java b/src/test/java/blackjack/domain/Card/CardTest.java new file mode 100644 index 00000000..65d483cc --- /dev/null +++ b/src/test/java/blackjack/domain/Card/CardTest.java @@ -0,0 +1,25 @@ +package blackjack.domain.Card; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; + +class CardTest { + + @Test + void 카드를_생성한다() { + Card card1 = new Card(Denomination.ACE, Suit.CLUBS); + assertThat(new StringBuilder().append(card1.getDenomination().getValue()).append(card1.getSuit()).toString()).isEqualTo("1CLUBS"); + + Card card2 = new Card(Denomination.KING, Suit.DIAMONDS); + assertThat(new StringBuilder().append(card2.getDenomination().getValue()).append(card2.getSuit()).toString()).isEqualTo("10DIAMONDS"); + + Card card3 = new Card(Denomination.JACK, Suit.HEARTS); + assertThat(card3.getDenomination().getValue()).isEqualTo(10); + assertThat(card3.getSuit().getValue()).isEqualTo("하트"); + + Card card4 = new Card(Denomination.TWO, Suit.HEARTS); + assertThat(card4.getDenomination().getValue()).isEqualTo(2); + assertThat(card4.getSuit().getValue()).isEqualTo("하트"); + } +} From 787ac1dfbac9be658b976a435af8316b6715e792 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:22:21 +0900 Subject: [PATCH 15/56] =?UTF-8?q?feat:=20Card.java=20denomination=EC=99=80?= =?UTF-8?q?=20suit=EC=9D=84=20=EC=83=81=ED=83=9C=EB=A1=9C=20=EA=B0=80?= =?UTF-8?q?=EC=A7=80=EB=8A=94=20=EA=B0=9D=EC=B2=B4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Card.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Card.java diff --git a/src/main/java/blackjack/domain/Card/Card.java b/src/main/java/blackjack/domain/Card/Card.java new file mode 100644 index 00000000..802acc38 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Card.java @@ -0,0 +1,19 @@ +package blackjack.domain.Card; + +public class Card { + private final Denomination denomination; + private final Suit suit; + + public Card(final Denomination denomination, final Suit suit) { + this.denomination = denomination; + this.suit = suit; + } + + public Denomination getDenomination() { + return denomination; + } + + public Suit getSuit() { + return suit; + } +} From b97be07ec2ea430cbbc91a79a10956fd60329c73 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:42:42 +0900 Subject: [PATCH 16/56] =?UTF-8?q?feat:=20Denomination=20=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=EC=9D=98=20=EC=9D=B4=EB=A6=84=EA=B3=BC=20=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EA=B0=80=EC=A7=80=EB=8F=84=EB=A1=9D=20enum=20class=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../blackjack/domain/Card/Denomination.java | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Denomination.java b/src/main/java/blackjack/domain/Card/Denomination.java index 24b5c414..e7877700 100644 --- a/src/main/java/blackjack/domain/Card/Denomination.java +++ b/src/main/java/blackjack/domain/Card/Denomination.java @@ -1,26 +1,32 @@ package blackjack.domain.Card; public enum Denomination { - ACE(1), - TWO(2), - THREE(3), - FOUR(4), - FIVE(5), - SIX(6), - SEVEN(7), - EIGHT(8), - NINE(9), - TEN(10), - JACK(10), - QUEEN(10), - KING(10); + ACE("A", 1), + 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("J", 10), + QUEEN("Q", 10), + KING("K", 10); + private String name; private int value; - Denomination(int value) { + Denomination(String name, int value) { + this.name = name; this.value = value; } + public String getName() { + return name; + } + public int getValue() { return value; } From 849b9b11910e152348988de68e13f97253971bed Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:51:23 +0900 Subject: [PATCH 17/56] =?UTF-8?q?test:=20CardsTest.java=20=EB=AA=A8?= =?UTF-8?q?=EB=93=A0=20=EC=B9=B4=EB=93=9C=EB=A5=BC=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/CardsTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/test/java/blackjack/domain/Card/CardsTest.java diff --git a/src/test/java/blackjack/domain/Card/CardsTest.java b/src/test/java/blackjack/domain/Card/CardsTest.java new file mode 100644 index 00000000..984ecd6b --- /dev/null +++ b/src/test/java/blackjack/domain/Card/CardsTest.java @@ -0,0 +1,19 @@ +package blackjack.domain.Card; + +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.Test; + +class CardsTest { + + @Test + void 모든_카드를_출력한다() { + List cardList = new ArrayList<>(); + for(Denomination denomination : Denomination.values()) { + for(Suit suit : Suit.values()) { + cardList.add(new Card(denomination, suit)); + } + } + cardList.forEach(card -> System.out.println(new StringBuilder().append(card.getDenomination().getName()).append(card.getSuit().getValue()))); + } +} From 940fb0e5376fdcef8c3a1942cf1c74a09200e944 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 17:51:59 +0900 Subject: [PATCH 18/56] =?UTF-8?q?feat:=20Cards.java=20static=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=EB=A1=9C=20=EB=AA=A8=EB=93=A0=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/Cards.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Cards.java diff --git a/src/main/java/blackjack/domain/Card/Cards.java b/src/main/java/blackjack/domain/Card/Cards.java new file mode 100644 index 00000000..624f18ae --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Cards.java @@ -0,0 +1,21 @@ +package blackjack.domain.Card; + +import java.util.ArrayList; +import java.util.List; + +public class Cards { + private static List cardList = new ArrayList<>(); + + static { + for(Denomination denomination : Denomination.values()) { + for(Suit suit : Suit.values()) { + cardList.add(new Card(denomination, suit)); + } + } + } + + public static List getCardList() { + return cardList; + } + +} From 001161e4277c4bf9ee3bd63427da7ebc225ff5c2 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 18:13:08 +0900 Subject: [PATCH 19/56] =?UTF-8?q?test:=20PlayerTest=20=ED=94=8C=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EA=B5=AC=ED=98=84=201.=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=EC=97=90=20=EC=B9=B4=EB=93=9C=EB=8A=94=20=EC=84=9E=EC=97=AC?= =?UTF-8?q?=EC=84=9C=202=EA=B0=9C=EA=B0=80=20=EC=A3=BC=EC=96=B4=EC=A7=84?= =?UTF-8?q?=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/PlayerTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/test/java/blackjack/domain/Card/PlayerTest.java diff --git a/src/test/java/blackjack/domain/Card/PlayerTest.java b/src/test/java/blackjack/domain/Card/PlayerTest.java new file mode 100644 index 00000000..3553695f --- /dev/null +++ b/src/test/java/blackjack/domain/Card/PlayerTest.java @@ -0,0 +1,17 @@ +package blackjack.domain.Card; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class PlayerTest { + + @Test + void 초기에_카드는_섞여서_2개가_주어진다() { + Player player = new Player("yangwoo"); + assertThat(player.getCards().size()).isEqualTo(2); + Player player1 = new Player("seungyun"); + assertThat(player1.getCards().size()).isEqualTo(2); + } +} From 4ae4e6897f34c7d2ac11509e37ae3cee1c97588e Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 18:13:48 +0900 Subject: [PATCH 20/56] =?UTF-8?q?feat:=20player=EB=8A=94=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=EC=97=90=20=EC=B9=B4=EB=93=9C=EA=B0=80=20=EC=84=9E?= =?UTF-8?q?=EC=97=AC=EC=84=9C=202=EA=B0=9C=EC=94=A9=20=EC=A3=BC=EC=96=B4?= =?UTF-8?q?=EC=A7=84=EB=8B=A4.=201.=20=EC=B9=B4=EB=93=9C=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=9C=EA=B3=B5=EB=B0=9B=EA=B3=A0=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=EB=A5=BC=20=EC=9C=84=ED=95=B4=202=EA=B0=9C?= =?UTF-8?q?=EB=A5=BC=20=EC=A7=80=EC=9B=8C=EC=A4=80=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/Player.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Player.java diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java new file mode 100644 index 00000000..3ac19f25 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -0,0 +1,31 @@ +package blackjack.domain.Card; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class Player { + + private static final int INIT_CARD_COUNT = 2; + + private List cards; + private final String name; + public Player(String name) { + this.name = name; + initSetting(); + } + + private void initSetting() { + List cards = Cards.getCardList(); + Collections.shuffle(cards); + this.cards = cards.stream() + .limit(INIT_CARD_COUNT) + .collect(Collectors.toList()); + cards.remove(0); + cards.remove(0); + } + + public List getCards() { + return cards; + } +} From b505c9275a048e365fd78a2b179b620f7533fb5d Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 18:45:30 +0900 Subject: [PATCH 21/56] =?UTF-8?q?feat:=20Players=EC=9D=98=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9D=84=20=EB=B0=9B=EC=95=84=20List=EB=A5=BC?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/Application.java | 13 ++++++++++ .../blackjack/controller/GameLauncher.java | 18 ++++++++++++++ src/main/java/blackjack/domain/Card/Card.java | 1 + .../java/blackjack/domain/Card/Player.java | 1 + .../java/blackjack/domain/Card/Players.java | 24 +++++++++++++++++++ src/main/java/blackjack/view/OutputView.java | 3 +-- 6 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/main/java/blackjack/Application.java create mode 100644 src/main/java/blackjack/controller/GameLauncher.java create mode 100644 src/main/java/blackjack/domain/Card/Players.java diff --git a/src/main/java/blackjack/Application.java b/src/main/java/blackjack/Application.java new file mode 100644 index 00000000..d4df5209 --- /dev/null +++ b/src/main/java/blackjack/Application.java @@ -0,0 +1,13 @@ +package blackjack; + + +import blackjack.controller.GameLauncher; + +public class Application { + + public static void main(String[] args) { + GameLauncher gameLauncher = new GameLauncher(); + gameLauncher.start(); + } + +} diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java new file mode 100644 index 00000000..8ad53e87 --- /dev/null +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -0,0 +1,18 @@ +package blackjack.controller; + + +import blackjack.domain.Card.Players; +import blackjack.view.InputView; +import blackjack.view.OutputView; + +public class GameLauncher { + + public void start() { + OutputView.requestPlayersName(); + String[] playerNames = InputView.readPlayerName(); + OutputView.printGamePlayer(playerNames); + Players players = new Players(playerNames); + players.getPlayers().forEach(player -> player.getCards().forEach(card -> System.out.println(card.getDenomination().getName() + card.getSuit().getValue()))); + } +} + diff --git a/src/main/java/blackjack/domain/Card/Card.java b/src/main/java/blackjack/domain/Card/Card.java index 802acc38..012d8a84 100644 --- a/src/main/java/blackjack/domain/Card/Card.java +++ b/src/main/java/blackjack/domain/Card/Card.java @@ -16,4 +16,5 @@ public Denomination getDenomination() { public Suit getSuit() { return suit; } + } diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index 3ac19f25..33f86c5e 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -10,6 +10,7 @@ public class Player { private List cards; private final String name; + public Player(String name) { this.name = name; initSetting(); diff --git a/src/main/java/blackjack/domain/Card/Players.java b/src/main/java/blackjack/domain/Card/Players.java new file mode 100644 index 00000000..c4e24209 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Players.java @@ -0,0 +1,24 @@ +package blackjack.domain.Card; + +import java.util.ArrayList; +import java.util.List; + +public class Players { + + private List players = new ArrayList<>(); + private String[] playernames; + public Players(String[] playernames) { + this.playernames = playernames; + init(); + } + + private void init() { + for(String playerName : playernames) { + players.add(new Player(playerName)); + } + } + + public List getPlayers() { + return players; + } +} diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index d0832d71..000fd639 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -7,9 +7,8 @@ public class OutputView { private OutputView() {} - public static void requestPlayersName(String[] players) { + public static void requestPlayersName() { System.out.println(REQUEST_PLAYERS_NAME); - printGamePlayer(players); } public static void printGamePlayer(String[] players) { From b5c381474307887710a5ffc8eea007c221ad52fd Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Mon, 14 Feb 2022 18:47:10 +0900 Subject: [PATCH 22/56] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=EC=9A=94?= =?UTF-8?q?=EA=B5=AC=EC=82=AC=ED=95=AD=20=EB=B0=98=ED=95=AD=20=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index b044fad0..9b1e3b25 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,12 @@ # 블랙잭 ### 기능요구사항 -- [ ] 게임에 참여할 사람의 이름을 입력받을 수 있다. 이름은 쉼표를 기준으로 분리한다 +- [x] 게임에 참여할 사람의 이름을 입력받을 수 있다. 이름은 쉼표를 기준으로 분리한다 ex) pobi, jason -- [ ] 카드의 숫자 계산은 카드 숫자를 기본으로 한다. +- [x] 카드의 숫자 계산은 카드 숫자를 기본으로 한다. - [ ] 예외로 Ace는 1 또는 11로 계산할 수 있다. - - [ ] King, Queen, Jack은 각각 10으로 계산한다. -- [ ] 게임을 시작하면 플레이어는 두 장의 카드를 지급 받는다. + - [x] King, Queen, Jack은 각각 10으로 계산한다. +- [x] 게임을 시작하면 플레이어는 두 장의 카드를 지급 받는다. - [ ] 숫자 합이 21을 넘지 않으면 카드를 계속 뽑을 수 있다. - [ ] 딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다. - [ ] 가지고 있는 카드 숫자 합이 21을 초과하면 게임에서 진다. @@ -37,7 +37,7 @@ - 3항 연산자를 쓰지 않는다. - else 예약어를 쓰지 않는다. - else 예약어를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다. - - 힌트: if문에서 값을 반환하는 방식으로 구현하면 else 예약어를 사용하지 않아도 된다. + - 힌트: if문에서 값을 반환하는 방식으로 구현하면 else 예약어를 사용하지 않아도 된다. - 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외 - 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다. - UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다. @@ -57,4 +57,4 @@ git commit -m "commit message Co-authored-by: seungyeonjeong -Co-authored-by: YuYangWoo \ No newline at end of file +Co-authored-by: YuYangWoo From c74faa9e371c50eb3d9f87c6f8cf3baf6095f931 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 17:28:59 +0900 Subject: [PATCH 23/56] =?UTF-8?q?feat:=20=EB=94=9C=EB=9F=AC=EC=99=80=20?= =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EA=B0=80=20=EC=83=81?= =?UTF-8?q?=EC=86=8D=ED=95=98=EB=8A=94=20Gamer=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/Gamer.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Gamer.java diff --git a/src/main/java/blackjack/domain/Card/Gamer.java b/src/main/java/blackjack/domain/Card/Gamer.java new file mode 100644 index 00000000..1173fc05 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Gamer.java @@ -0,0 +1,25 @@ +package blackjack.domain.Card; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public abstract class Gamer { + + private static final int INIT_CARD_COUNT = 2; + + private List cards; + private String name; + public List initSetting() { + List cards = Cards.getCardList(); + Collections.shuffle(cards); + this.cards = cards.stream() + .limit(INIT_CARD_COUNT) + .collect(Collectors.toList()); + cards.remove(0); + cards.remove(0); + return this.cards; + } + + public abstract String getName(); +} From 81d8921a2b60867ffa49fdb8a101c6226cfd9e64 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 17:31:06 +0900 Subject: [PATCH 24/56] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=EC=9D=98=20?= =?UTF-8?q?=EB=94=9C=EB=9F=AC=EB=A5=BC=20=EA=B5=AC=ED=98=84=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/Dealer.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/Dealer.java diff --git a/src/main/java/blackjack/domain/Card/Dealer.java b/src/main/java/blackjack/domain/Card/Dealer.java new file mode 100644 index 00000000..65380b2f --- /dev/null +++ b/src/main/java/blackjack/domain/Card/Dealer.java @@ -0,0 +1,21 @@ +package blackjack.domain.Card; + +import java.util.List; + +public class Dealer extends Gamer{ + private static final int INIT_CARD_COUNT = 2; + + private List cards; + + public Dealer() { + this.cards = initSetting(); + } + public List getCards() { + return cards; + } + + @Override + public String getName() { + return "딜러"; + } +} From dcd8f4b2a048cb9203b6aef617cb8f40b1fec057 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 17:31:49 +0900 Subject: [PATCH 25/56] =?UTF-8?q?feat:=20=EA=B2=B9=EC=B9=98=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=83=81=EC=86=8D=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/Player.java | 19 +++++++------------ .../java/blackjack/domain/Card/Players.java | 1 + 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index 33f86c5e..89b2d103 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -4,7 +4,7 @@ import java.util.List; import java.util.stream.Collectors; -public class Player { +public class Player extends Gamer{ private static final int INIT_CARD_COUNT = 2; @@ -13,20 +13,15 @@ public class Player { public Player(String name) { this.name = name; - initSetting(); - } - - private void initSetting() { - List cards = Cards.getCardList(); - Collections.shuffle(cards); - this.cards = cards.stream() - .limit(INIT_CARD_COUNT) - .collect(Collectors.toList()); - cards.remove(0); - cards.remove(0); + cards = initSetting(); } public List getCards() { return cards; } + + @Override + public String getName() { + return name; + } } diff --git a/src/main/java/blackjack/domain/Card/Players.java b/src/main/java/blackjack/domain/Card/Players.java index c4e24209..0b5353f8 100644 --- a/src/main/java/blackjack/domain/Card/Players.java +++ b/src/main/java/blackjack/domain/Card/Players.java @@ -7,6 +7,7 @@ public class Players { private List players = new ArrayList<>(); private String[] playernames; + public Players(String[] playernames) { this.playernames = playernames; init(); From 7a1bf3254f513ad53bea945a5b1d9d22ebf50109 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 17:32:22 +0900 Subject: [PATCH 26/56] =?UTF-8?q?feat:=20=EB=94=9C=EB=9F=AC=EC=99=80=20?= =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=EC=9D=98=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=A5=BC=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 9 ++++++- src/main/java/blackjack/view/OutputView.java | 27 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 8ad53e87..edeee92c 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -1,6 +1,7 @@ package blackjack.controller; +import blackjack.domain.Card.Dealer; import blackjack.domain.Card.Players; import blackjack.view.InputView; import blackjack.view.OutputView; @@ -11,8 +12,14 @@ public void start() { OutputView.requestPlayersName(); String[] playerNames = InputView.readPlayerName(); OutputView.printGamePlayer(playerNames); + + OutputView.printCardsSetting(playerNames); + + Dealer dealer = new Dealer(); + OutputView.printDealerCardsSetting(dealer); + Players players = new Players(playerNames); - players.getPlayers().forEach(player -> player.getCards().forEach(card -> System.out.println(card.getDenomination().getName() + card.getSuit().getValue()))); + OutputView.printPlayerStatus(players); } } diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index 000fd639..e605b3ea 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -1,5 +1,11 @@ package blackjack.view; +import blackjack.domain.Card.Card; +import blackjack.domain.Card.Dealer; +import blackjack.domain.Card.Player; +import blackjack.domain.Card.Players; +import java.util.List; + public class OutputView { private static final String REQUEST_PLAYERS_NAME = "게임에 참여할 사람의 이름을 입력하세요"; private static final String DELIMITER = ", "; @@ -19,6 +25,25 @@ public static void printCardsSetting(String[] players) { System.out.println("딜러와 " + String.join(DELIMITER, players) + "에게 2장의 카드를 나누었습니다."); } + public static void printDealerCardsSetting(Dealer dealer) { + System.out.print(dealer.getName() + ": "); + printPlayerCards(dealer.getCards()); + } + + public static void printPlayerStatus(Players players) { + for(Player player : players.getPlayers()) { + System.out.print(player.getName() + "카드: "); + printPlayerCards(player.getCards()); + } + } + + public static void printPlayerCards(List cards) { + for(Card card : cards) { + System.out.print(card.getDenomination().getName() + card.getSuit().getValue()); + } + System.out.println(); + } + } -// 다이아몬드, 하트, spade, clover + From 04e744aa6ed2ffd4a500cbdeaf795b6f339a4eeb Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 21:31:31 +0900 Subject: [PATCH 27/56] =?UTF-8?q?feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=20=EC=B9=B4=EB=93=9C=EB=A5=BC=20=EB=8D=94=20?= =?UTF-8?q?=EB=B0=9B=EB=8A=94=20=EB=A1=9C=EC=A7=81=20Gamer.java=EC=97=90?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/Card/Gamer.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Gamer.java b/src/main/java/blackjack/domain/Card/Gamer.java index 1173fc05..1dbe6d9e 100644 --- a/src/main/java/blackjack/domain/Card/Gamer.java +++ b/src/main/java/blackjack/domain/Card/Gamer.java @@ -1,5 +1,6 @@ package blackjack.domain.Card; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -7,19 +8,25 @@ public abstract class Gamer { private static final int INIT_CARD_COUNT = 2; + private List cardsAll = new ArrayList<>(); + private List cards = new ArrayList<>(); - private List cards; - private String name; public List initSetting() { - List cards = Cards.getCardList(); - Collections.shuffle(cards); - this.cards = cards.stream() + cardsAll = Cards.getCardList(); + Collections.shuffle(cardsAll); + this.cards = cardsAll.stream() .limit(INIT_CARD_COUNT) .collect(Collectors.toList()); - cards.remove(0); - cards.remove(0); + cardsAll.remove(0); + cardsAll.remove(0); return this.cards; } + public List addCard(List cards) { + cards.add(cardsAll.get(0)); + cardsAll.remove(0); + return cards; + } + public abstract String getName(); } From 4dd6ddb13c45973d5186b442ad496302768aa9af Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 21:31:56 +0900 Subject: [PATCH 28/56] =?UTF-8?q?feat:=20Player=EA=B0=80=20=EA=B0=80?= =?UTF-8?q?=EC=A7=84=20=EC=B9=B4=EB=93=9C=EC=9D=98=20=ED=95=A9=EC=9D=84=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Player.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index 89b2d103..cfabd4ba 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -1,8 +1,6 @@ package blackjack.domain.Card; -import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; public class Player extends Gamer{ @@ -16,6 +14,11 @@ public Player(String name) { cards = initSetting(); } + public int getPlayerCardSum(Player player) { + return player.getCards().stream().map(Card::getDenomination) + .mapToInt(Denomination::getValue).sum(); + } + public List getCards() { return cards; } From 2a4894c0579ea3d46076c190c45569431a93417a Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 21:32:38 +0900 Subject: [PATCH 29/56] =?UTF-8?q?feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=20=EC=B9=B4=EB=93=9C=EB=A5=BC=20=EB=8D=94=20?= =?UTF-8?q?=EB=B0=9B=EC=9D=84=EC=A7=80=20=EC=95=88=EB=B0=9B=EC=9D=84?= =?UTF-8?q?=EC=A7=80=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 21 +++++++++++++++++-- src/main/java/blackjack/view/InputView.java | 13 ++++++++++++ src/main/java/blackjack/view/OutputView.java | 10 +++++++-- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index edeee92c..de02acbd 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -1,13 +1,15 @@ package blackjack.controller; - import blackjack.domain.Card.Dealer; +import blackjack.domain.Card.Player; import blackjack.domain.Card.Players; import blackjack.view.InputView; import blackjack.view.OutputView; public class GameLauncher { + private static final int BLACK_JACK_SUM_LIMIT = 21; + public void start() { OutputView.requestPlayersName(); String[] playerNames = InputView.readPlayerName(); @@ -19,7 +21,22 @@ public void start() { OutputView.printDealerCardsSetting(dealer); Players players = new Players(playerNames); - OutputView.printPlayerStatus(players); + OutputView.printPlayersStatus(players); + + for (Player player : players.getPlayers()) { + getCardOrNot(player); + } + } + + private void getCardOrNot(Player player) { + while (InputView.readAddCardOrNot(player) && player.getPlayerCardSum(player) < BLACK_JACK_SUM_LIMIT) { + player.addCard(player.getCards()); + OutputView.printPlayerStatus(player); + + } + } + } + diff --git a/src/main/java/blackjack/view/InputView.java b/src/main/java/blackjack/view/InputView.java index 82cfc20f..ee1f6440 100644 --- a/src/main/java/blackjack/view/InputView.java +++ b/src/main/java/blackjack/view/InputView.java @@ -1,5 +1,6 @@ package blackjack.view; +import blackjack.domain.Card.Player; import java.util.Scanner; public class InputView { @@ -15,4 +16,16 @@ public static final String[] readPlayerName() { } return readPlayerName(); } + + public static final boolean readAddCardOrNot(Player player) { + Scanner scanner = new Scanner(System.in); + OutputView.requestAddCardOrNot(player); + + try { + if("y".equals(scanner.nextLine())) return true; + } catch (IllegalArgumentException illegalArgumentException) { + System.out.println(illegalArgumentException.getMessage()); + } + return false; + } } diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index e605b3ea..24553824 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -30,7 +30,7 @@ public static void printDealerCardsSetting(Dealer dealer) { printPlayerCards(dealer.getCards()); } - public static void printPlayerStatus(Players players) { + public static void printPlayersStatus(Players players) { for(Player player : players.getPlayers()) { System.out.print(player.getName() + "카드: "); printPlayerCards(player.getCards()); @@ -44,6 +44,12 @@ public static void printPlayerCards(List cards) { System.out.println(); } + public static void requestAddCardOrNot(Player player) { + System.out.println(player.getName() + REQUEST_RECEIVE_CARD); + } + public static void printPlayerStatus(Player player) { + System.out.print(player.getName() + ": "); + printPlayerCards(player.getCards()); + } } - From 015ea73d3d65b4eea52b5079bf61e52b05f68ffb Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 22:36:11 +0900 Subject: [PATCH 30/56] =?UTF-8?q?feat:=20dealer=EC=99=80=20player=EC=9D=98?= =?UTF-8?q?=20cardSum=20=EA=B5=AC=ED=95=98=EB=8A=94=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Dealer.java | 6 +++++- src/main/java/blackjack/domain/Card/Player.java | 2 -- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Dealer.java b/src/main/java/blackjack/domain/Card/Dealer.java index 65380b2f..55244319 100644 --- a/src/main/java/blackjack/domain/Card/Dealer.java +++ b/src/main/java/blackjack/domain/Card/Dealer.java @@ -3,17 +3,21 @@ import java.util.List; public class Dealer extends Gamer{ - private static final int INIT_CARD_COUNT = 2; private List cards; public Dealer() { this.cards = initSetting(); } + public List getCards() { return cards; } + public int getPlayerCardSum(Dealer dealer) { + return dealer.getCards().stream().map(Card::getDenomination) + .mapToInt(Denomination::getValue).sum(); + } @Override public String getName() { return "딜러"; diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index cfabd4ba..ebcd9df3 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -4,8 +4,6 @@ public class Player extends Gamer{ - private static final int INIT_CARD_COUNT = 2; - private List cards; private final String name; From 9edf9ed856105f942f50e835ee21012d7f0e1ba5 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 22:39:05 +0900 Subject: [PATCH 31/56] =?UTF-8?q?feat:=20=EB=94=9C=EB=9F=AC=EC=99=80=20?= =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EC=9D=98=20gameResult?= =?UTF-8?q?=EB=A5=BC=20=EA=B5=AC=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../blackjack/domain/Card/GameResult.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/blackjack/domain/Card/GameResult.java diff --git a/src/main/java/blackjack/domain/Card/GameResult.java b/src/main/java/blackjack/domain/Card/GameResult.java new file mode 100644 index 00000000..f905313f --- /dev/null +++ b/src/main/java/blackjack/domain/Card/GameResult.java @@ -0,0 +1,32 @@ +package blackjack.domain.Card; + +import java.util.ArrayList; +import java.util.List; + +public class GameResult { + + private Players players; + private Dealer dealer; + + public GameResult(Players players, Dealer dealer) { + this.players = players; + this.dealer = dealer; + } + + // list 승 1 패 0 players 3명 yang 1, woo 1 ,jeung 0 + public List getGameResult() { + List gameResultList = new ArrayList<>(); + for(Player player : players.getPlayers()) { + if(player.getPlayerCardSum(player) > dealer.getPlayerCardSum(dealer)) { + gameResultList.add(1); + } + if(player.getPlayerCardSum(player) < dealer.getPlayerCardSum(dealer)) { + gameResultList.add(0); + } + if(player.getPlayerCardSum(player) == dealer.getPlayerCardSum(dealer)) { + gameResultList.add(2); + } + } + return gameResultList; + } +} From 97e6457ae7b5a76f8b0e3bbc1d2d36b0f7e1b524 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Tue, 15 Feb 2022 22:41:04 +0900 Subject: [PATCH 32/56] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=EC=9D=98=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=EB=A5=BC=20=EA=B5=AC=ED=95=98=EA=B3=A0=20?= =?UTF-8?q?=EC=B9=B4=EB=93=9C=EC=9D=98=20=ED=95=A9=EC=9D=84=20=EA=B5=AC?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=B6=9C=EB=A0=A5=EB=AC=B8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 19 ++++++- src/main/java/blackjack/view/OutputView.java | 55 +++++++++++++++++-- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index de02acbd..cd979149 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -1,13 +1,15 @@ package blackjack.controller; import blackjack.domain.Card.Dealer; +import blackjack.domain.Card.GameResult; import blackjack.domain.Card.Player; import blackjack.domain.Card.Players; import blackjack.view.InputView; import blackjack.view.OutputView; +import java.util.List; public class GameLauncher { - + private static final int DEALER_SUM_LIMIT = 16; private static final int BLACK_JACK_SUM_LIMIT = 21; public void start() { @@ -18,7 +20,7 @@ public void start() { OutputView.printCardsSetting(playerNames); Dealer dealer = new Dealer(); - OutputView.printDealerCardsSetting(dealer); + OutputView.printDealerCardsSetting(dealer, true); Players players = new Players(playerNames); OutputView.printPlayersStatus(players); @@ -27,13 +29,24 @@ public void start() { getCardOrNot(player); } + if (dealer.getPlayerCardSum(dealer) < DEALER_SUM_LIMIT) { + dealer.addCard(dealer.getCards()); + OutputView.printDealerAddCard(); + } + + OutputView.printDealerCardSum(dealer); + OutputView.printPlayerCardSum(players); + + OutputView.printFinalGameResult(); + GameResult gameResult = new GameResult(players, dealer); + List gameResultList = gameResult.getGameResult(); + OutputView.printGameResult(gameResultList, players); } private void getCardOrNot(Player player) { while (InputView.readAddCardOrNot(player) && player.getPlayerCardSum(player) < BLACK_JACK_SUM_LIMIT) { player.addCard(player.getCards()); OutputView.printPlayerStatus(player); - } } diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index 24553824..3de6148c 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -10,6 +10,8 @@ public class OutputView { private static final String REQUEST_PLAYERS_NAME = "게임에 참여할 사람의 이름을 입력하세요"; private static final String DELIMITER = ", "; private static final String REQUEST_RECEIVE_CARD = "는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)"; + private static final String DEALER_ADD_CARD = "딜러는 16이하라 한장의 카드를 더 받았습니다."; + private static final String FINAL_GAME_RESULT = "## 최종 승패"; private OutputView() {} @@ -25,23 +27,23 @@ public static void printCardsSetting(String[] players) { System.out.println("딜러와 " + String.join(DELIMITER, players) + "에게 2장의 카드를 나누었습니다."); } - public static void printDealerCardsSetting(Dealer dealer) { + public static void printDealerCardsSetting(Dealer dealer, boolean flag) { System.out.print(dealer.getName() + ": "); - printPlayerCards(dealer.getCards()); + printPlayerCards(dealer.getCards(), flag); } public static void printPlayersStatus(Players players) { for(Player player : players.getPlayers()) { System.out.print(player.getName() + "카드: "); - printPlayerCards(player.getCards()); + printPlayerCards(player.getCards(), true); } } - public static void printPlayerCards(List cards) { + public static void printPlayerCards(List cards, boolean flag) { for(Card card : cards) { System.out.print(card.getDenomination().getName() + card.getSuit().getValue()); } - System.out.println(); + if(flag) System.out.println(); } public static void requestAddCardOrNot(Player player) { @@ -50,6 +52,47 @@ public static void requestAddCardOrNot(Player player) { public static void printPlayerStatus(Player player) { System.out.print(player.getName() + ": "); - printPlayerCards(player.getCards()); + printPlayerCards(player.getCards(), true); + } + + public static void printDealerAddCard() { + System.out.println(DEALER_ADD_CARD); + System.out.println(); + } + + public static void printDealerCardSum(Dealer dealer) { + printDealerCardsSetting(dealer, false); + System.out.println("- 결과:" + dealer.getPlayerCardSum(dealer)); + + } + + public static void printPlayerCardSum(Players players) { + for (Player player : players.getPlayers()) { + System.out.print(player.getName() + ": "); + printPlayerCards(player.getCards(), false); + System.out.println("- 결과" + player.getPlayerCardSum(player)); + } + } + + public static void printFinalGameResult() { + System.out.println(FINAL_GAME_RESULT); + } + + public static void printGameResult(List gameResultList, Players players) { + StringBuilder stringBuilder = new StringBuilder(); + long win = gameResultList.stream().filter(result -> result == 0).count(); + long lose = gameResultList.stream().filter(result -> result == 1).count(); + stringBuilder.append("딜러: ").append(win + "승").append(lose + "패"); + System.out.println(stringBuilder); + // 플레이어 + for(int i = 0; i < gameResultList.size(); i++) { + if(gameResultList.get(i) == 1) { + System.out.println(players.getPlayers().get(i).getName() + "승"); + } + if(gameResultList.get(i) == 0) { + System.out.println(players.getPlayers().get(i).getName() + "패"); + } + } + } } From 2c2d98005f78aa3f79c052e82e94e9f31bdeab0a Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Wed, 16 Feb 2022 17:21:02 +0900 Subject: [PATCH 33/56] =?UTF-8?q?feat:=20Ace=EB=8A=94=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EB=A1=9C=201=EC=9D=B4=EB=82=98=2011=EB=A1=9C=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84=20-=20Playe?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- README.md | 12 +++++----- .../blackjack/controller/GameLauncher.java | 3 ++- src/main/java/blackjack/domain/Card/Card.java | 24 ++++++++++++++++++- .../java/blackjack/domain/Card/Player.java | 18 +++++++++++--- src/main/java/empty.txt | 0 .../blackjack/domain/Card/PlayerTest.java | 7 ++++++ src/test/java/empty.txt | 0 7 files changed, 53 insertions(+), 11 deletions(-) delete mode 100644 src/main/java/empty.txt delete mode 100644 src/test/java/empty.txt diff --git a/README.md b/README.md index 9b1e3b25..a58c1db9 100644 --- a/README.md +++ b/README.md @@ -18,14 +18,14 @@ - [x] 게임에 참여할 사람의 이름을 입력받을 수 있다. 이름은 쉼표를 기준으로 분리한다 ex) pobi, jason - [x] 카드의 숫자 계산은 카드 숫자를 기본으로 한다. - - [ ] 예외로 Ace는 1 또는 11로 계산할 수 있다. + - [x] 예외로 Ace는 1 또는 11로 계산할 수 있다. - [x] King, Queen, Jack은 각각 10으로 계산한다. - [x] 게임을 시작하면 플레이어는 두 장의 카드를 지급 받는다. - - [ ] 숫자 합이 21을 넘지 않으면 카드를 계속 뽑을 수 있다. - - [ ] 딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다. -- [ ] 가지고 있는 카드 숫자 합이 21을 초과하면 게임에서 진다. -- [ ] 가지고 있는 카드 숫자 합이 21이거나 21을 초과하지 않으면서 21에 가장 가까운 플레이어가 승리한다. -- [ ] 게임을 완료한 후 각 플레이어별로 승패를 출력한다. + - [x] 숫자 합이 21을 넘지 않으면 카드를 계속 뽑을 수 있다. + - [x] 딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다. +- [x] 가지고 있는 카드 숫자 합이 21을 초과하면 게임에서 진다. +- [x] 가지고 있는 카드 숫자 합이 21이거나 21을 초과하지 않으면서 21에 가장 가까운 플레이어가 승리한다. +- [x] 게임을 완료한 후 각 플레이어별로 승패를 출력한다. ### 프로그래밍 요구 사항 - 자바 코드 컨벤션을 지키면서 프로그래밍한다. diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index cd979149..224ee8c2 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -24,7 +24,7 @@ public void start() { Players players = new Players(playerNames); OutputView.printPlayersStatus(players); - + // ace가 포함되어있으면 11을 더해서 21아래면 11로 해주고 아니면 1을 해준다. for (Player player : players.getPlayers()) { getCardOrNot(player); } @@ -37,6 +37,7 @@ public void start() { OutputView.printDealerCardSum(dealer); OutputView.printPlayerCardSum(players); + // TODO 21이 다넘을 때 OutputView.printFinalGameResult(); GameResult gameResult = new GameResult(players, dealer); List gameResultList = gameResult.getGameResult(); diff --git a/src/main/java/blackjack/domain/Card/Card.java b/src/main/java/blackjack/domain/Card/Card.java index 012d8a84..975e9344 100644 --- a/src/main/java/blackjack/domain/Card/Card.java +++ b/src/main/java/blackjack/domain/Card/Card.java @@ -1,14 +1,36 @@ package blackjack.domain.Card; +import java.util.Objects; + public class Card { private final Denomination denomination; - private final Suit suit; + private Suit suit; + public Card(final Denomination denomination) { + this.denomination = denomination; + } public Card(final Denomination denomination, final Suit suit) { this.denomination = denomination; this.suit = suit; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Card card = (Card) o; + return denomination == card.denomination && suit == card.suit; + } + + @Override + public int hashCode() { + return Objects.hash(denomination, suit); + } + public Denomination getDenomination() { return denomination; } diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index ebcd9df3..62a63b70 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -2,7 +2,7 @@ import java.util.List; -public class Player extends Gamer{ +public class Player extends Gamer { private List cards; private final String name; @@ -13,8 +13,20 @@ public Player(String name) { } public int getPlayerCardSum(Player player) { - return player.getCards().stream().map(Card::getDenomination) - .mapToInt(Denomination::getValue).sum(); + int cardSum = player.getCards().stream() + .map(Card::getDenomination) + .mapToInt(Denomination::getValue) + .sum(); + + if (player.getCards().contains(new Card(Denomination.ACE, Suit.CLUBS)) || + player.getCards().contains(new Card(Denomination.ACE, Suit.HEARTS)) || + player.getCards().contains(new Card(Denomination.ACE, Suit.DIAMONDS)) || + player.getCards().contains(new Card(Denomination.ACE, Suit.SPADES))) { + if (cardSum <= 11) { + return cardSum + 10; + } + } + return cardSum; } public List getCards() { diff --git a/src/main/java/empty.txt b/src/main/java/empty.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/src/test/java/blackjack/domain/Card/PlayerTest.java b/src/test/java/blackjack/domain/Card/PlayerTest.java index 3553695f..3b8a1182 100644 --- a/src/test/java/blackjack/domain/Card/PlayerTest.java +++ b/src/test/java/blackjack/domain/Card/PlayerTest.java @@ -14,4 +14,11 @@ class PlayerTest { Player player1 = new Player("seungyun"); assertThat(player1.getCards().size()).isEqualTo(2); } + + @Test + void ACE는_1이나_11로_계산될_수_있다() { + Player player = new Player("yang"); + player.getCards().add(new Card(Denomination.ACE, Suit.DIAMONDS)); + player.getPlayerCardSum(player); + } } diff --git a/src/test/java/empty.txt b/src/test/java/empty.txt deleted file mode 100644 index e69de29b..00000000 From 27c5f3f7914e8aaff29ad312141e8be7baad0597 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Wed, 16 Feb 2022 17:57:01 +0900 Subject: [PATCH 34/56] =?UTF-8?q?refactor:=20Ace=EA=B0=80=20=EC=9E=88?= =?UTF-8?q?=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20=EA=B3=84=EC=82=B0=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 2 +- .../java/blackjack/domain/Card/Dealer.java | 26 +++++++++++++++--- .../blackjack/domain/Card/Denomination.java | 4 +++ .../java/blackjack/domain/Card/Player.java | 27 +++++++++++-------- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 224ee8c2..cd2d68c1 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -29,7 +29,7 @@ public void start() { getCardOrNot(player); } - if (dealer.getPlayerCardSum(dealer) < DEALER_SUM_LIMIT) { + if (dealer.getPlayerCardSum(dealer) < DEALER_SUM_LIMIT) { // ace 10 11 dealer.addCard(dealer.getCards()); OutputView.printDealerAddCard(); } diff --git a/src/main/java/blackjack/domain/Card/Dealer.java b/src/main/java/blackjack/domain/Card/Dealer.java index 55244319..77699e26 100644 --- a/src/main/java/blackjack/domain/Card/Dealer.java +++ b/src/main/java/blackjack/domain/Card/Dealer.java @@ -3,6 +3,8 @@ import java.util.List; public class Dealer extends Gamer{ + private static final int TEN = 10; + private static final int THRESHOLD = 21; private List cards; @@ -10,14 +12,30 @@ public Dealer() { this.cards = initSetting(); } + public int getPlayerCardSum(Dealer dealer) { + int score = dealer.getCards().stream() + .map(Card::getDenomination) + .mapToInt(Denomination::getValue) + .sum(); + + long aceCount = dealer.getCards().stream().filter(card -> card.getDenomination().isAce()).count(); + for(int i = 0; i< aceCount; i++) { + score = adjustScore(score); + } + return score; + } + + private int adjustScore(int score) { + if(score + TEN <= THRESHOLD) { + score += TEN; + } + return score; + } + public List getCards() { return cards; } - public int getPlayerCardSum(Dealer dealer) { - return dealer.getCards().stream().map(Card::getDenomination) - .mapToInt(Denomination::getValue).sum(); - } @Override public String getName() { return "딜러"; diff --git a/src/main/java/blackjack/domain/Card/Denomination.java b/src/main/java/blackjack/domain/Card/Denomination.java index e7877700..0f1264ab 100644 --- a/src/main/java/blackjack/domain/Card/Denomination.java +++ b/src/main/java/blackjack/domain/Card/Denomination.java @@ -23,6 +23,10 @@ public enum Denomination { this.value = value; } + public boolean isAce() { + return this == ACE; + } + public String getName() { return name; } diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index 62a63b70..f3ac3f86 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -3,6 +3,8 @@ import java.util.List; public class Player extends Gamer { + private static final int TEN = 10; + private static final int THRESHOLD = 21; private List cards; private final String name; @@ -12,25 +14,28 @@ public Player(String name) { cards = initSetting(); } + public List getCards() { + return cards; + } + public int getPlayerCardSum(Player player) { - int cardSum = player.getCards().stream() + int score = player.getCards().stream() .map(Card::getDenomination) .mapToInt(Denomination::getValue) .sum(); - if (player.getCards().contains(new Card(Denomination.ACE, Suit.CLUBS)) || - player.getCards().contains(new Card(Denomination.ACE, Suit.HEARTS)) || - player.getCards().contains(new Card(Denomination.ACE, Suit.DIAMONDS)) || - player.getCards().contains(new Card(Denomination.ACE, Suit.SPADES))) { - if (cardSum <= 11) { - return cardSum + 10; - } + long aceCount = player.getCards().stream().filter(card -> card.getDenomination().isAce()).count(); + for(int i = 0; i< aceCount; i++) { + score = adjustScore(score); } - return cardSum; + return score; } - public List getCards() { - return cards; + private int adjustScore(int score) { + if(score + TEN <= THRESHOLD) { + score += TEN; + } + return score; } @Override From 2d051516211861a1f7ce2303381e132c7a2fed25 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Wed, 16 Feb 2022 17:58:26 +0900 Subject: [PATCH 35/56] =?UTF-8?q?refactor:=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/controller/GameLauncher.java | 2 +- src/main/java/blackjack/domain/Card/Dealer.java | 2 +- src/main/java/blackjack/domain/Card/GameResult.java | 6 +++--- src/main/java/blackjack/view/OutputView.java | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index cd2d68c1..2d8fd8fa 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -29,7 +29,7 @@ public void start() { getCardOrNot(player); } - if (dealer.getPlayerCardSum(dealer) < DEALER_SUM_LIMIT) { // ace 10 11 + if (dealer.getDealerCardSum(dealer) < DEALER_SUM_LIMIT) { // ace 10 11 dealer.addCard(dealer.getCards()); OutputView.printDealerAddCard(); } diff --git a/src/main/java/blackjack/domain/Card/Dealer.java b/src/main/java/blackjack/domain/Card/Dealer.java index 77699e26..5aa65336 100644 --- a/src/main/java/blackjack/domain/Card/Dealer.java +++ b/src/main/java/blackjack/domain/Card/Dealer.java @@ -12,7 +12,7 @@ public Dealer() { this.cards = initSetting(); } - public int getPlayerCardSum(Dealer dealer) { + public int getDealerCardSum(Dealer dealer) { int score = dealer.getCards().stream() .map(Card::getDenomination) .mapToInt(Denomination::getValue) diff --git a/src/main/java/blackjack/domain/Card/GameResult.java b/src/main/java/blackjack/domain/Card/GameResult.java index f905313f..cf289c14 100644 --- a/src/main/java/blackjack/domain/Card/GameResult.java +++ b/src/main/java/blackjack/domain/Card/GameResult.java @@ -17,13 +17,13 @@ public GameResult(Players players, Dealer dealer) { public List getGameResult() { List gameResultList = new ArrayList<>(); for(Player player : players.getPlayers()) { - if(player.getPlayerCardSum(player) > dealer.getPlayerCardSum(dealer)) { + if(player.getPlayerCardSum(player) > dealer.getDealerCardSum(dealer)) { gameResultList.add(1); } - if(player.getPlayerCardSum(player) < dealer.getPlayerCardSum(dealer)) { + if(player.getPlayerCardSum(player) < dealer.getDealerCardSum(dealer)) { gameResultList.add(0); } - if(player.getPlayerCardSum(player) == dealer.getPlayerCardSum(dealer)) { + if(player.getPlayerCardSum(player) == dealer.getDealerCardSum(dealer)) { gameResultList.add(2); } } diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index 3de6148c..79aa07bf 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -62,7 +62,7 @@ public static void printDealerAddCard() { public static void printDealerCardSum(Dealer dealer) { printDealerCardsSetting(dealer, false); - System.out.println("- 결과:" + dealer.getPlayerCardSum(dealer)); + System.out.println("- 결과:" + dealer.getDealerCardSum(dealer)); } From 7ca8326c8c75d805f5610ecde4a77700ec5e396e Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Wed, 16 Feb 2022 20:37:47 +0900 Subject: [PATCH 36/56] =?UTF-8?q?refactor:=20=EB=94=9C=EB=9F=AC=EC=99=80?= =?UTF-8?q?=20=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EC=9D=98=20=EC=8A=B9,?= =?UTF-8?q?=20=ED=8C=A8=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 3 +-- .../java/blackjack/domain/Card/GameResult.java | 18 +++++++++++++++++- .../java/blackjack/domain/Card/Player.java | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 2d8fd8fa..6ce063e0 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -24,12 +24,11 @@ public void start() { Players players = new Players(playerNames); OutputView.printPlayersStatus(players); - // ace가 포함되어있으면 11을 더해서 21아래면 11로 해주고 아니면 1을 해준다. for (Player player : players.getPlayers()) { getCardOrNot(player); } - if (dealer.getDealerCardSum(dealer) < DEALER_SUM_LIMIT) { // ace 10 11 + if (dealer.getDealerCardSum(dealer) < DEALER_SUM_LIMIT) { dealer.addCard(dealer.getCards()); OutputView.printDealerAddCard(); } diff --git a/src/main/java/blackjack/domain/Card/GameResult.java b/src/main/java/blackjack/domain/Card/GameResult.java index cf289c14..58ee42a5 100644 --- a/src/main/java/blackjack/domain/Card/GameResult.java +++ b/src/main/java/blackjack/domain/Card/GameResult.java @@ -16,7 +16,23 @@ public GameResult(Players players, Dealer dealer) { // list 승 1 패 0 players 3명 yang 1, woo 1 ,jeung 0 public List getGameResult() { List gameResultList = new ArrayList<>(); - for(Player player : players.getPlayers()) { + if (dealer.getDealerCardSum(dealer) > 21) { + for (Player player : players.getPlayers()) { + if (player.getPlayerCardSum(player) <= 21) { + gameResultList.add(0); + } + else { + gameResultList.add(1); + } + } + return gameResultList; + } + + for (Player player : players.getPlayers()) { // dealer 25 player 23 24 + if (player.getPlayerCardSum(player) > 21) { + gameResultList.add(0); + continue; + } if(player.getPlayerCardSum(player) > dealer.getDealerCardSum(dealer)) { gameResultList.add(1); } diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index f3ac3f86..6c8dfdc6 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -25,7 +25,7 @@ public int getPlayerCardSum(Player player) { .sum(); long aceCount = player.getCards().stream().filter(card -> card.getDenomination().isAce()).count(); - for(int i = 0; i< aceCount; i++) { + for(int i = 0; i < aceCount; i++) { score = adjustScore(score); } return score; From 55b62b9810453591ae758d7bff1c8cc4870089db Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Wed, 16 Feb 2022 21:38:20 +0900 Subject: [PATCH 37/56] =?UTF-8?q?refactor:=20=EB=94=9C=EB=9F=AC=EC=99=80?= =?UTF-8?q?=20=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EC=9D=98=20=EC=8A=B9,?= =?UTF-8?q?=20=ED=8C=A8=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=201.=20MatchResult=20enum=20class=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9C=BC=EB=A1=9C=20=EB=A7=A4=EC=B9=98=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EB=A5=BC=20=EA=B3=84=EC=82=B0=ED=95=98=EA=B2=8C?= =?UTF-8?q?=EB=81=94=20=EA=B5=AC=ED=98=84=202.=20MatchResultBoard=20player?= =?UTF-8?q?=EC=99=80=20dealer=EC=9D=98=20=EA=B2=B0=EA=B3=BC=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A7=80=EB=8A=94=20map=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=203.=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EC=99=80=20=EB=94=9C=EB=9F=AC=EC=9D=98=20score?= =?UTF-8?q?=EB=A5=BC=20=EA=B0=80=EC=A7=80=EB=8A=94=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84=204.=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 18 +++--- .../java/blackjack/domain/Card/Dealer.java | 10 +++- .../blackjack/domain/Card/GameResult.java | 48 ---------------- .../Card/MatchInfo/DealerMatchScoreInfo.java | 42 ++++++++++++++ .../domain/Card/MatchInfo/MatchResult.java | 55 +++++++++++++++++++ .../Card/MatchInfo/MatchResultBoard.java | 42 ++++++++++++++ .../Card/MatchInfo/PlayerMatchScoreInfo.java | 48 ++++++++++++++++ .../java/blackjack/domain/Card/Player.java | 15 ++++- .../java/blackjack/domain/Card/Players.java | 9 ++- src/main/java/blackjack/view/OutputView.java | 39 +++++++------ .../blackjack/domain/Card/PlayerTest.java | 3 +- 11 files changed, 249 insertions(+), 80 deletions(-) delete mode 100644 src/main/java/blackjack/domain/Card/GameResult.java create mode 100644 src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java create mode 100644 src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java create mode 100644 src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java create mode 100644 src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 6ce063e0..abfb650d 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -1,12 +1,11 @@ package blackjack.controller; import blackjack.domain.Card.Dealer; -import blackjack.domain.Card.GameResult; +import blackjack.domain.Card.MatchInfo.MatchResultBoard; import blackjack.domain.Card.Player; import blackjack.domain.Card.Players; import blackjack.view.InputView; import blackjack.view.OutputView; -import java.util.List; public class GameLauncher { private static final int DEALER_SUM_LIMIT = 16; @@ -28,7 +27,7 @@ public void start() { getCardOrNot(player); } - if (dealer.getDealerCardSum(dealer) < DEALER_SUM_LIMIT) { + if (dealer.calcScore(dealer) < DEALER_SUM_LIMIT) { dealer.addCard(dealer.getCards()); OutputView.printDealerAddCard(); } @@ -36,20 +35,17 @@ public void start() { OutputView.printDealerCardSum(dealer); OutputView.printPlayerCardSum(players); - // TODO 21이 다넘을 때 OutputView.printFinalGameResult(); - GameResult gameResult = new GameResult(players, dealer); - List gameResultList = gameResult.getGameResult(); - OutputView.printGameResult(gameResultList, players); + MatchResultBoard matchResultBoard = players.playMatch(dealer); + OutputView.printDealerMatchResult(dealer, matchResultBoard.getDealerMatchScoreInfo()); + OutputView.printPlayersMatchResult(matchResultBoard.getPlayersMatchScoreInfo()); + } private void getCardOrNot(Player player) { - while (InputView.readAddCardOrNot(player) && player.getPlayerCardSum(player) < BLACK_JACK_SUM_LIMIT) { + while (InputView.readAddCardOrNot(player) && player.calcScore(player) < BLACK_JACK_SUM_LIMIT) { player.addCard(player.getCards()); OutputView.printPlayerStatus(player); } } - } - - diff --git a/src/main/java/blackjack/domain/Card/Dealer.java b/src/main/java/blackjack/domain/Card/Dealer.java index 5aa65336..a3e9d2ad 100644 --- a/src/main/java/blackjack/domain/Card/Dealer.java +++ b/src/main/java/blackjack/domain/Card/Dealer.java @@ -12,7 +12,7 @@ public Dealer() { this.cards = initSetting(); } - public int getDealerCardSum(Dealer dealer) { + public int calcScore(Dealer dealer) { int score = dealer.getCards().stream() .map(Card::getDenomination) .mapToInt(Denomination::getValue) @@ -32,6 +32,14 @@ private int adjustScore(int score) { return score; } + public boolean isBlackJack(Dealer dealer) { + return calcScore(dealer) == THRESHOLD; + } + + public boolean isBust(Dealer dealer) { + return calcScore(dealer) > THRESHOLD; + } + public List getCards() { return cards; } diff --git a/src/main/java/blackjack/domain/Card/GameResult.java b/src/main/java/blackjack/domain/Card/GameResult.java deleted file mode 100644 index 58ee42a5..00000000 --- a/src/main/java/blackjack/domain/Card/GameResult.java +++ /dev/null @@ -1,48 +0,0 @@ -package blackjack.domain.Card; - -import java.util.ArrayList; -import java.util.List; - -public class GameResult { - - private Players players; - private Dealer dealer; - - public GameResult(Players players, Dealer dealer) { - this.players = players; - this.dealer = dealer; - } - - // list 승 1 패 0 players 3명 yang 1, woo 1 ,jeung 0 - public List getGameResult() { - List gameResultList = new ArrayList<>(); - if (dealer.getDealerCardSum(dealer) > 21) { - for (Player player : players.getPlayers()) { - if (player.getPlayerCardSum(player) <= 21) { - gameResultList.add(0); - } - else { - gameResultList.add(1); - } - } - return gameResultList; - } - - for (Player player : players.getPlayers()) { // dealer 25 player 23 24 - if (player.getPlayerCardSum(player) > 21) { - gameResultList.add(0); - continue; - } - if(player.getPlayerCardSum(player) > dealer.getDealerCardSum(dealer)) { - gameResultList.add(1); - } - if(player.getPlayerCardSum(player) < dealer.getDealerCardSum(dealer)) { - gameResultList.add(0); - } - if(player.getPlayerCardSum(player) == dealer.getDealerCardSum(dealer)) { - gameResultList.add(2); - } - } - return gameResultList; - } -} diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java b/src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java new file mode 100644 index 00000000..7549e70d --- /dev/null +++ b/src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java @@ -0,0 +1,42 @@ +package blackjack.domain.Card.MatchInfo; + +import java.util.List; +import java.util.Objects; + +public class DealerMatchScoreInfo { + private final List matchScores; + + public DealerMatchScoreInfo(List matchScores) { + this.matchScores = matchScores; + } + + @Override + public String toString() { + return "DealerMatchScoreInfo{" + + "matchScores=" + matchScores + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DealerMatchScoreInfo that = (DealerMatchScoreInfo) o; + return Objects.equals(matchScores, that.matchScores); + } + + @Override + public int hashCode() { + return Objects.hash(matchScores); + } + + public List getMatchScores() { + return matchScores; + } + + +} diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java b/src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java new file mode 100644 index 00000000..43c15a37 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java @@ -0,0 +1,55 @@ +package blackjack.domain.Card.MatchInfo; + +import blackjack.domain.Card.Dealer; +import blackjack.domain.Card.Player; +import java.util.Arrays; + +public enum MatchResult { + WIN(1, "승"), + DRAW(0, "무"), + LOSE(-1, "패"); + + private static final String WRONG_MATCH_SCORE_KEY_ERR_MSG = "잘못된 매치 결과 키값입니다."; + private static final String UNREACHABLE_POINT_ERR_MSG = "예기치 않은 오류입니다."; + + private final int key; + private final String name; + + MatchResult(int key, String name) { + this.key = key; + this.name = name; + } + + public String getName() { + return name; + } + + private static MatchResult of(final int value) { + return Arrays.stream( + MatchResult.values() + ).filter( + result -> result.key == value + ).findFirst().orElseThrow( + () -> new RuntimeException(WRONG_MATCH_SCORE_KEY_ERR_MSG) + ); + } + + public static MatchResult calcMatchScore(Player player, Dealer dealer) { + if (player.isBust(player)) return LOSE; + if (dealer.isBust(dealer)) return WIN; + + if (player.isBlackJack(player) && dealer.isBlackJack(dealer)) return DRAW; + if (player.isBlackJack(player)) return WIN; + if (dealer.isBlackJack(dealer)) return LOSE; + + if (player.calcScore(player) == dealer.calcScore(dealer)) return DRAW; + if (player.calcScore(player) > dealer.calcScore(dealer)) return WIN; + if (player.calcScore(player) < dealer.calcScore(dealer)) return LOSE; + + throw new RuntimeException(UNREACHABLE_POINT_ERR_MSG); + } + + public MatchResult oppositeMatchScore() { + return MatchResult.of(-key); + } +} diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java b/src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java new file mode 100644 index 00000000..cd7f333e --- /dev/null +++ b/src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java @@ -0,0 +1,42 @@ +package blackjack.domain.Card.MatchInfo; + +import blackjack.domain.Card.Player; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class MatchResultBoard { + + private final Map matchResultMap; + + public MatchResultBoard(Map matchResultMap) { + this.matchResultMap = matchResultMap; + } + + public List getPlayersMatchScoreInfo() { + return matchResultMap + .entrySet() + .stream() + .map(map -> + new PlayerMatchScoreInfo( + map.getKey().getName(), + map.getValue().getName() + )) + .collect(Collectors.toList()); + } + + public DealerMatchScoreInfo getDealerMatchScoreInfo() { + return new DealerMatchScoreInfo( + matchResultMap + .values() + .stream() + .map(MatchResult::oppositeMatchScore) + .collect(Collectors.groupingBy(o -> o, Collectors.counting())) + .entrySet() + .stream() + .sorted(Map.Entry.comparingByKey()) + .map(map -> map.getValue() + map.getKey().getName()) + .collect(Collectors.toList()) + ); + } +} diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java b/src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java new file mode 100644 index 00000000..b2bdc798 --- /dev/null +++ b/src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java @@ -0,0 +1,48 @@ +package blackjack.domain.Card.MatchInfo; + +import java.util.Objects; + +public class PlayerMatchScoreInfo { + private final String name; + private final String matchScore; + + public PlayerMatchScoreInfo(String name, String matchScore) { + this.name = name; + this.matchScore = matchScore; + } + + public String getName() { + return name; + } + + public String getMatchScore() { + return matchScore; + } + + @Override + public String toString() { + return "PlayerMatchScoreInfo{" + + "name='" + name + '\'' + + ", matchScore='" + matchScore + '\'' + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PlayerMatchScoreInfo that = (PlayerMatchScoreInfo) o; + return Objects.equals(name, that.name) && Objects.equals(matchScore, + that.matchScore); + } + + @Override + public int hashCode() { + return Objects.hash(name, matchScore); + } + +} diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/Card/Player.java index 6c8dfdc6..3525c0ba 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/Card/Player.java @@ -1,5 +1,6 @@ package blackjack.domain.Card; +import blackjack.domain.Card.MatchInfo.MatchResult; import java.util.List; public class Player extends Gamer { @@ -14,11 +15,15 @@ public Player(String name) { cards = initSetting(); } + public MatchResult getMatchResult(Player player, Dealer dealer) { + return MatchResult.calcMatchScore(player, dealer); + } + public List getCards() { return cards; } - public int getPlayerCardSum(Player player) { + public int calcScore(Player player) { int score = player.getCards().stream() .map(Card::getDenomination) .mapToInt(Denomination::getValue) @@ -38,6 +43,14 @@ private int adjustScore(int score) { return score; } + public boolean isBlackJack(Player player) { + return calcScore(player) == THRESHOLD; + } + + public boolean isBust(Player player) { + return calcScore(player) > THRESHOLD; + } + @Override public String getName() { return name; diff --git a/src/main/java/blackjack/domain/Card/Players.java b/src/main/java/blackjack/domain/Card/Players.java index 0b5353f8..dcd8c114 100644 --- a/src/main/java/blackjack/domain/Card/Players.java +++ b/src/main/java/blackjack/domain/Card/Players.java @@ -1,7 +1,9 @@ package blackjack.domain.Card; +import blackjack.domain.Card.MatchInfo.MatchResultBoard; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class Players { @@ -14,11 +16,16 @@ public Players(String[] playernames) { } private void init() { - for(String playerName : playernames) { + for (String playerName : playernames) { players.add(new Player(playerName)); } } + public MatchResultBoard playMatch(Dealer dealer) { + return new MatchResultBoard(players.stream(). + collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); + } + public List getPlayers() { return players; } diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index 79aa07bf..c070d11b 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -2,6 +2,8 @@ import blackjack.domain.Card.Card; import blackjack.domain.Card.Dealer; +import blackjack.domain.Card.MatchInfo.DealerMatchScoreInfo; +import blackjack.domain.Card.MatchInfo.PlayerMatchScoreInfo; import blackjack.domain.Card.Player; import blackjack.domain.Card.Players; import java.util.List; @@ -12,6 +14,8 @@ public class OutputView { private static final String REQUEST_RECEIVE_CARD = "는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)"; private static final String DEALER_ADD_CARD = "딜러는 16이하라 한장의 카드를 더 받았습니다."; private static final String FINAL_GAME_RESULT = "## 최종 승패"; + private static final String MATCH_SCORE_INFO_FMT = "%s: %s\n"; + private static final String DEALER_MATCH_SCORE_DELIMITER = " "; private OutputView() {} @@ -62,7 +66,7 @@ public static void printDealerAddCard() { public static void printDealerCardSum(Dealer dealer) { printDealerCardsSetting(dealer, false); - System.out.println("- 결과:" + dealer.getDealerCardSum(dealer)); + System.out.println("- 결과:" + dealer.calcScore(dealer)); } @@ -70,7 +74,7 @@ public static void printPlayerCardSum(Players players) { for (Player player : players.getPlayers()) { System.out.print(player.getName() + ": "); printPlayerCards(player.getCards(), false); - System.out.println("- 결과" + player.getPlayerCardSum(player)); + System.out.println("- 결과" + player.calcScore(player)); } } @@ -78,21 +82,24 @@ public static void printFinalGameResult() { System.out.println(FINAL_GAME_RESULT); } - public static void printGameResult(List gameResultList, Players players) { - StringBuilder stringBuilder = new StringBuilder(); - long win = gameResultList.stream().filter(result -> result == 0).count(); - long lose = gameResultList.stream().filter(result -> result == 1).count(); - stringBuilder.append("딜러: ").append(win + "승").append(lose + "패"); - System.out.println(stringBuilder); - // 플레이어 - for(int i = 0; i < gameResultList.size(); i++) { - if(gameResultList.get(i) == 1) { - System.out.println(players.getPlayers().get(i).getName() + "승"); - } - if(gameResultList.get(i) == 0) { - System.out.println(players.getPlayers().get(i).getName() + "패"); - } + public static void printDealerMatchResult(Dealer dealer, DealerMatchScoreInfo dealerMatchScoreInfo) { + System.out.format( + MATCH_SCORE_INFO_FMT, + dealer.getName(), + String.join( + DEALER_MATCH_SCORE_DELIMITER, + dealerMatchScoreInfo.getMatchScores() + ) + ); + } + + public static void printPlayersMatchResult(List playerMatchScoreInfos) { + for(PlayerMatchScoreInfo playerMatchScoreInfo : playerMatchScoreInfos) { + printPlayerMatchResult(playerMatchScoreInfo); } + } + public static void printPlayerMatchResult(PlayerMatchScoreInfo playerMatchScoreInfo) { + System.out.println(playerMatchScoreInfo.getName() + ":" + playerMatchScoreInfo.getMatchScore()); } } diff --git a/src/test/java/blackjack/domain/Card/PlayerTest.java b/src/test/java/blackjack/domain/Card/PlayerTest.java index 3b8a1182..88ee2b14 100644 --- a/src/test/java/blackjack/domain/Card/PlayerTest.java +++ b/src/test/java/blackjack/domain/Card/PlayerTest.java @@ -1,7 +1,6 @@ package blackjack.domain.Card; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; @@ -19,6 +18,6 @@ class PlayerTest { void ACE는_1이나_11로_계산될_수_있다() { Player player = new Player("yang"); player.getCards().add(new Card(Denomination.ACE, Suit.DIAMONDS)); - player.getPlayerCardSum(player); + player.calcScore(player); } } From cde826e06111f6a25ec23f16026abe853b0b31b7 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Wed, 16 Feb 2022 22:08:11 +0900 Subject: [PATCH 38/56] =?UTF-8?q?refactor:=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EA=B0=84=EA=B2=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Players.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Players.java b/src/main/java/blackjack/domain/Card/Players.java index dcd8c114..04ed48a5 100644 --- a/src/main/java/blackjack/domain/Card/Players.java +++ b/src/main/java/blackjack/domain/Card/Players.java @@ -22,8 +22,7 @@ private void init() { } public MatchResultBoard playMatch(Dealer dealer) { - return new MatchResultBoard(players.stream(). - collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); + return new MatchResultBoard(players.stream().collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); } public List getPlayers() { From 317b7dc6d4553d2fc9f0ca806afd6bfe8e099806 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 10:07:51 +0900 Subject: [PATCH 39/56] =?UTF-8?q?refactor:=20=EC=A4=91=EB=B3=B5=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=EB=A5=BC=20Car.class=EB=A1=9C=20?= =?UTF-8?q?=EC=9C=84=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- src/main/java/fuel/domain/Avante.java | 21 +-------------------- src/main/java/fuel/domain/Car.java | 18 +++++++++++++++--- src/main/java/fuel/domain/K5.java | 21 +-------------------- src/main/java/fuel/domain/Sonata.java | 22 +--------------------- 4 files changed, 18 insertions(+), 64 deletions(-) diff --git a/src/main/java/fuel/domain/Avante.java b/src/main/java/fuel/domain/Avante.java index ec030422..034e7dbc 100644 --- a/src/main/java/fuel/domain/Avante.java +++ b/src/main/java/fuel/domain/Avante.java @@ -1,33 +1,14 @@ package fuel.domain; public class Avante extends Car{ - private static final int FUEL_EFFICIENCY = 15; - private final String carName; - private final double distance; public Avante(double distance) { - this.distance = distance; - this.carName = "Avante"; + super(distance, "Avante"); } @Override double getDistancePerLiter() { return FUEL_EFFICIENCY; } - - @Override - double getTripDistance() { - return distance; - } - - @Override - double getChargeQuantity() { - return distance / FUEL_EFFICIENCY; - } - - @Override - String getName() { - return carName; - } } diff --git a/src/main/java/fuel/domain/Car.java b/src/main/java/fuel/domain/Car.java index 4e68b853..efd4e960 100644 --- a/src/main/java/fuel/domain/Car.java +++ b/src/main/java/fuel/domain/Car.java @@ -2,13 +2,25 @@ public abstract class Car { + private final double distance; + private final String carName; + + public Car(final double distance, final String carName) { + this.distance = distance; + this.carName = carName; + } + abstract double getDistancePerLiter(); - abstract double getTripDistance(); + protected double getTripDistance() { + return distance; + } - abstract String getName(); + protected String getName() { + return carName; + } - double getChargeQuantity() { + protected double getChargeQuantity() { return getTripDistance() / getDistancePerLiter(); } } diff --git a/src/main/java/fuel/domain/K5.java b/src/main/java/fuel/domain/K5.java index 02bbfa95..d64e950d 100644 --- a/src/main/java/fuel/domain/K5.java +++ b/src/main/java/fuel/domain/K5.java @@ -1,33 +1,14 @@ package fuel.domain; public class K5 extends Car { - private static final int FUEL_EFFICIENCY = 13; - private final String carName; - private final double distance; public K5(double distance) { - this.distance = distance; - this.carName = "K5"; + super(distance, "K5"); } @Override double getDistancePerLiter() { return FUEL_EFFICIENCY; } - - @Override - double getTripDistance() { - return distance; - } - - @Override - double getChargeQuantity() { - return distance / FUEL_EFFICIENCY; - } - - @Override - String getName() { - return carName; - } } diff --git a/src/main/java/fuel/domain/Sonata.java b/src/main/java/fuel/domain/Sonata.java index 9e286acd..8908ba06 100644 --- a/src/main/java/fuel/domain/Sonata.java +++ b/src/main/java/fuel/domain/Sonata.java @@ -1,30 +1,10 @@ package fuel.domain; public class Sonata extends Car { - private static final int FUEL_EFFICIENCY = 10; - private final String carName; - private final double distance; - public Sonata(double distance) { - this.carName = "Sonata"; - this.distance = distance; - } - - @Override - String getName() { - return carName; - } - - @Override - double getChargeQuantity() { - return distance / FUEL_EFFICIENCY; - } - - @Override - double getTripDistance() { - return distance; + super(distance, "Sonata"); } @Override From 2019fc65e2aa031229d7ce81c9d193a65780715e Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 10:12:36 +0900 Subject: [PATCH 40/56] =?UTF-8?q?refactor:=20=ED=8C=A8=ED=82=A4=EC=A7=80?= =?UTF-8?q?=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonyeong Co-authored-by: YuYangWoo --- .../blackjack/controller/GameLauncher.java | 12 +++++----- .../blackjack/domain/{Card => card}/Card.java | 2 +- .../domain/{Card => card}/Cards.java | 2 +- .../domain/{Card => card}/Denomination.java | 2 +- .../domain/{Card => gamer}/Dealer.java | 4 +++- .../domain/{Card => gamer}/Gamer.java | 8 ++++++- .../domain/{Card => gamer}/Player.java | 8 ++++--- .../domain/{Card => gamer}/Players.java | 4 ++-- .../DealerMatchResultInfo.java} | 10 ++++---- .../MatchInfo => matchInfo}/MatchResult.java | 21 +++++++--------- .../MatchResultBoard.java | 14 +++++------ .../PlayerMatchResultInfo.java} | 10 ++++---- src/main/java/blackjack/view/InputView.java | 2 +- src/main/java/blackjack/view/OutputView.java | 24 +++++++++---------- .../blackjack/domain/{Card => }/CardTest.java | 5 +++- .../domain/{Card => }/CardsTest.java | 5 +++- .../domain/{Card => }/DenominationTest.java | 3 ++- .../domain/{Card => }/PlayerTest.java | 6 ++++- 18 files changed, 80 insertions(+), 62 deletions(-) rename src/main/java/blackjack/domain/{Card => card}/Card.java (96%) rename src/main/java/blackjack/domain/{Card => card}/Cards.java (93%) rename src/main/java/blackjack/domain/{Card => card}/Denomination.java (95%) rename src/main/java/blackjack/domain/{Card => gamer}/Dealer.java (91%) rename src/main/java/blackjack/domain/{Card => gamer}/Gamer.java (85%) rename src/main/java/blackjack/domain/{Card => gamer}/Player.java (85%) rename src/main/java/blackjack/domain/{Card => gamer}/Players.java (89%) rename src/main/java/blackjack/domain/{Card/MatchInfo/DealerMatchScoreInfo.java => matchInfo/DealerMatchResultInfo.java} (74%) rename src/main/java/blackjack/domain/{Card/MatchInfo => matchInfo}/MatchResult.java (72%) rename src/main/java/blackjack/domain/{Card/MatchInfo => matchInfo}/MatchResultBoard.java (73%) rename src/main/java/blackjack/domain/{Card/MatchInfo/PlayerMatchScoreInfo.java => matchInfo/PlayerMatchResultInfo.java} (78%) rename src/test/java/blackjack/domain/{Card => }/CardTest.java (87%) rename src/test/java/blackjack/domain/{Card => }/CardsTest.java (80%) rename src/test/java/blackjack/domain/{Card => }/DenominationTest.java (91%) rename src/test/java/blackjack/domain/{Card => }/PlayerTest.java (78%) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index abfb650d..06827c6e 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -1,9 +1,9 @@ package blackjack.controller; -import blackjack.domain.Card.Dealer; -import blackjack.domain.Card.MatchInfo.MatchResultBoard; -import blackjack.domain.Card.Player; -import blackjack.domain.Card.Players; +import blackjack.domain.gamer.Dealer; +import blackjack.domain.matchInfo.MatchResultBoard; +import blackjack.domain.gamer.Player; +import blackjack.domain.gamer.Players; import blackjack.view.InputView; import blackjack.view.OutputView; @@ -37,8 +37,8 @@ public void start() { OutputView.printFinalGameResult(); MatchResultBoard matchResultBoard = players.playMatch(dealer); - OutputView.printDealerMatchResult(dealer, matchResultBoard.getDealerMatchScoreInfo()); - OutputView.printPlayersMatchResult(matchResultBoard.getPlayersMatchScoreInfo()); + OutputView.printDealerMatchResult(dealer, matchResultBoard.getDealerMatchResultInfo()); + OutputView.printPlayersMatchResult(matchResultBoard.getPlayersMatchResultInfo()); } diff --git a/src/main/java/blackjack/domain/Card/Card.java b/src/main/java/blackjack/domain/card/Card.java similarity index 96% rename from src/main/java/blackjack/domain/Card/Card.java rename to src/main/java/blackjack/domain/card/Card.java index 975e9344..eaa3155a 100644 --- a/src/main/java/blackjack/domain/Card/Card.java +++ b/src/main/java/blackjack/domain/card/Card.java @@ -1,4 +1,4 @@ -package blackjack.domain.Card; +package blackjack.domain.card; import java.util.Objects; diff --git a/src/main/java/blackjack/domain/Card/Cards.java b/src/main/java/blackjack/domain/card/Cards.java similarity index 93% rename from src/main/java/blackjack/domain/Card/Cards.java rename to src/main/java/blackjack/domain/card/Cards.java index 624f18ae..ae3930ba 100644 --- a/src/main/java/blackjack/domain/Card/Cards.java +++ b/src/main/java/blackjack/domain/card/Cards.java @@ -1,4 +1,4 @@ -package blackjack.domain.Card; +package blackjack.domain.card; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/blackjack/domain/Card/Denomination.java b/src/main/java/blackjack/domain/card/Denomination.java similarity index 95% rename from src/main/java/blackjack/domain/Card/Denomination.java rename to src/main/java/blackjack/domain/card/Denomination.java index 0f1264ab..53de5b27 100644 --- a/src/main/java/blackjack/domain/Card/Denomination.java +++ b/src/main/java/blackjack/domain/card/Denomination.java @@ -1,4 +1,4 @@ -package blackjack.domain.Card; +package blackjack.domain.card; public enum Denomination { ACE("A", 1), diff --git a/src/main/java/blackjack/domain/Card/Dealer.java b/src/main/java/blackjack/domain/gamer/Dealer.java similarity index 91% rename from src/main/java/blackjack/domain/Card/Dealer.java rename to src/main/java/blackjack/domain/gamer/Dealer.java index a3e9d2ad..27d7c2ca 100644 --- a/src/main/java/blackjack/domain/Card/Dealer.java +++ b/src/main/java/blackjack/domain/gamer/Dealer.java @@ -1,5 +1,7 @@ -package blackjack.domain.Card; +package blackjack.domain.gamer; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Card; import java.util.List; public class Dealer extends Gamer{ diff --git a/src/main/java/blackjack/domain/Card/Gamer.java b/src/main/java/blackjack/domain/gamer/Gamer.java similarity index 85% rename from src/main/java/blackjack/domain/Card/Gamer.java rename to src/main/java/blackjack/domain/gamer/Gamer.java index 1dbe6d9e..93378769 100644 --- a/src/main/java/blackjack/domain/Card/Gamer.java +++ b/src/main/java/blackjack/domain/gamer/Gamer.java @@ -1,5 +1,7 @@ -package blackjack.domain.Card; +package blackjack.domain.gamer; +import blackjack.domain.card.Card; +import blackjack.domain.card.Cards; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -11,6 +13,10 @@ public abstract class Gamer { private List cardsAll = new ArrayList<>(); private List cards = new ArrayList<>(); + public void match() { + + } + public List initSetting() { cardsAll = Cards.getCardList(); Collections.shuffle(cardsAll); diff --git a/src/main/java/blackjack/domain/Card/Player.java b/src/main/java/blackjack/domain/gamer/Player.java similarity index 85% rename from src/main/java/blackjack/domain/Card/Player.java rename to src/main/java/blackjack/domain/gamer/Player.java index 3525c0ba..c49a562e 100644 --- a/src/main/java/blackjack/domain/Card/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -1,6 +1,8 @@ -package blackjack.domain.Card; +package blackjack.domain.gamer; -import blackjack.domain.Card.MatchInfo.MatchResult; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Card; +import blackjack.domain.matchInfo.MatchResult; import java.util.List; public class Player extends Gamer { @@ -16,7 +18,7 @@ public Player(String name) { } public MatchResult getMatchResult(Player player, Dealer dealer) { - return MatchResult.calcMatchScore(player, dealer); + return MatchResult.calcMatchResult(player, dealer); } public List getCards() { diff --git a/src/main/java/blackjack/domain/Card/Players.java b/src/main/java/blackjack/domain/gamer/Players.java similarity index 89% rename from src/main/java/blackjack/domain/Card/Players.java rename to src/main/java/blackjack/domain/gamer/Players.java index 04ed48a5..f2229764 100644 --- a/src/main/java/blackjack/domain/Card/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -1,6 +1,6 @@ -package blackjack.domain.Card; +package blackjack.domain.gamer; -import blackjack.domain.Card.MatchInfo.MatchResultBoard; +import blackjack.domain.matchInfo.MatchResultBoard; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java b/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java similarity index 74% rename from src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java rename to src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java index 7549e70d..1c35b201 100644 --- a/src/main/java/blackjack/domain/Card/MatchInfo/DealerMatchScoreInfo.java +++ b/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java @@ -1,12 +1,12 @@ -package blackjack.domain.Card.MatchInfo; +package blackjack.domain.matchInfo; import java.util.List; import java.util.Objects; -public class DealerMatchScoreInfo { +public class DealerMatchResultInfo { private final List matchScores; - public DealerMatchScoreInfo(List matchScores) { + public DealerMatchResultInfo(List matchScores) { this.matchScores = matchScores; } @@ -25,7 +25,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - DealerMatchScoreInfo that = (DealerMatchScoreInfo) o; + DealerMatchResultInfo that = (DealerMatchResultInfo) o; return Objects.equals(matchScores, that.matchScores); } @@ -34,7 +34,7 @@ public int hashCode() { return Objects.hash(matchScores); } - public List getMatchScores() { + public List getMatchResult() { return matchScores; } diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java b/src/main/java/blackjack/domain/matchInfo/MatchResult.java similarity index 72% rename from src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java rename to src/main/java/blackjack/domain/matchInfo/MatchResult.java index 43c15a37..390440d7 100644 --- a/src/main/java/blackjack/domain/Card/MatchInfo/MatchResult.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResult.java @@ -1,7 +1,7 @@ -package blackjack.domain.Card.MatchInfo; +package blackjack.domain.matchInfo; -import blackjack.domain.Card.Dealer; -import blackjack.domain.Card.Player; +import blackjack.domain.gamer.Dealer; +import blackjack.domain.gamer.Player; import java.util.Arrays; public enum MatchResult { @@ -25,16 +25,13 @@ public String getName() { } private static MatchResult of(final int value) { - return Arrays.stream( - MatchResult.values() - ).filter( - result -> result.key == value - ).findFirst().orElseThrow( - () -> new RuntimeException(WRONG_MATCH_SCORE_KEY_ERR_MSG) - ); + return Arrays.stream(MatchResult.values()) + .filter(result -> result.key == value) + .findFirst() + .orElseThrow(() -> new RuntimeException(WRONG_MATCH_SCORE_KEY_ERR_MSG)); } - public static MatchResult calcMatchScore(Player player, Dealer dealer) { + public static MatchResult calcMatchResult(Player player, Dealer dealer) { if (player.isBust(player)) return LOSE; if (dealer.isBust(dealer)) return WIN; @@ -49,7 +46,7 @@ public static MatchResult calcMatchScore(Player player, Dealer dealer) { throw new RuntimeException(UNREACHABLE_POINT_ERR_MSG); } - public MatchResult oppositeMatchScore() { + public MatchResult oppositeMatchResult() { return MatchResult.of(-key); } } diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java b/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java similarity index 73% rename from src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java rename to src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java index cd7f333e..cd9e280f 100644 --- a/src/main/java/blackjack/domain/Card/MatchInfo/MatchResultBoard.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java @@ -1,6 +1,6 @@ -package blackjack.domain.Card.MatchInfo; +package blackjack.domain.matchInfo; -import blackjack.domain.Card.Player; +import blackjack.domain.gamer.Player; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -13,24 +13,24 @@ public MatchResultBoard(Map matchResultMap) { this.matchResultMap = matchResultMap; } - public List getPlayersMatchScoreInfo() { + public List getPlayersMatchResultInfo() { return matchResultMap .entrySet() .stream() .map(map -> - new PlayerMatchScoreInfo( + new PlayerMatchResultInfo( map.getKey().getName(), map.getValue().getName() )) .collect(Collectors.toList()); } - public DealerMatchScoreInfo getDealerMatchScoreInfo() { - return new DealerMatchScoreInfo( + public DealerMatchResultInfo getDealerMatchResultInfo() { + return new DealerMatchResultInfo( matchResultMap .values() .stream() - .map(MatchResult::oppositeMatchScore) + .map(MatchResult::oppositeMatchResult) .collect(Collectors.groupingBy(o -> o, Collectors.counting())) .entrySet() .stream() diff --git a/src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java b/src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java similarity index 78% rename from src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java rename to src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java index b2bdc798..02b4645b 100644 --- a/src/main/java/blackjack/domain/Card/MatchInfo/PlayerMatchScoreInfo.java +++ b/src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java @@ -1,12 +1,12 @@ -package blackjack.domain.Card.MatchInfo; +package blackjack.domain.matchInfo; import java.util.Objects; -public class PlayerMatchScoreInfo { +public class PlayerMatchResultInfo { private final String name; private final String matchScore; - public PlayerMatchScoreInfo(String name, String matchScore) { + public PlayerMatchResultInfo(String name, String matchScore) { this.name = name; this.matchScore = matchScore; } @@ -15,7 +15,7 @@ public String getName() { return name; } - public String getMatchScore() { + public String getMatchResult() { return matchScore; } @@ -35,7 +35,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - PlayerMatchScoreInfo that = (PlayerMatchScoreInfo) o; + PlayerMatchResultInfo that = (PlayerMatchResultInfo) o; return Objects.equals(name, that.name) && Objects.equals(matchScore, that.matchScore); } diff --git a/src/main/java/blackjack/view/InputView.java b/src/main/java/blackjack/view/InputView.java index ee1f6440..cb7ff742 100644 --- a/src/main/java/blackjack/view/InputView.java +++ b/src/main/java/blackjack/view/InputView.java @@ -1,6 +1,6 @@ package blackjack.view; -import blackjack.domain.Card.Player; +import blackjack.domain.gamer.Player; import java.util.Scanner; public class InputView { diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index c070d11b..a7232f6a 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -1,11 +1,11 @@ package blackjack.view; -import blackjack.domain.Card.Card; -import blackjack.domain.Card.Dealer; -import blackjack.domain.Card.MatchInfo.DealerMatchScoreInfo; -import blackjack.domain.Card.MatchInfo.PlayerMatchScoreInfo; -import blackjack.domain.Card.Player; -import blackjack.domain.Card.Players; +import blackjack.domain.card.Card; +import blackjack.domain.gamer.Dealer; +import blackjack.domain.matchInfo.DealerMatchResultInfo; +import blackjack.domain.matchInfo.PlayerMatchResultInfo; +import blackjack.domain.gamer.Player; +import blackjack.domain.gamer.Players; import java.util.List; public class OutputView { @@ -82,24 +82,24 @@ public static void printFinalGameResult() { System.out.println(FINAL_GAME_RESULT); } - public static void printDealerMatchResult(Dealer dealer, DealerMatchScoreInfo dealerMatchScoreInfo) { + public static void printDealerMatchResult(Dealer dealer, DealerMatchResultInfo dealerMatchScoreInfo) { System.out.format( MATCH_SCORE_INFO_FMT, dealer.getName(), String.join( DEALER_MATCH_SCORE_DELIMITER, - dealerMatchScoreInfo.getMatchScores() + dealerMatchScoreInfo.getMatchResult() ) ); } - public static void printPlayersMatchResult(List playerMatchScoreInfos) { - for(PlayerMatchScoreInfo playerMatchScoreInfo : playerMatchScoreInfos) { + public static void printPlayersMatchResult(List playerMatchScoreInfos) { + for(PlayerMatchResultInfo playerMatchScoreInfo : playerMatchScoreInfos) { printPlayerMatchResult(playerMatchScoreInfo); } } - public static void printPlayerMatchResult(PlayerMatchScoreInfo playerMatchScoreInfo) { - System.out.println(playerMatchScoreInfo.getName() + ":" + playerMatchScoreInfo.getMatchScore()); + public static void printPlayerMatchResult(PlayerMatchResultInfo playerMatchScoreInfo) { + System.out.println(playerMatchScoreInfo.getName() + ":" + playerMatchScoreInfo.getMatchResult()); } } diff --git a/src/test/java/blackjack/domain/Card/CardTest.java b/src/test/java/blackjack/domain/CardTest.java similarity index 87% rename from src/test/java/blackjack/domain/Card/CardTest.java rename to src/test/java/blackjack/domain/CardTest.java index 65d483cc..92da3b9a 100644 --- a/src/test/java/blackjack/domain/Card/CardTest.java +++ b/src/test/java/blackjack/domain/CardTest.java @@ -1,7 +1,10 @@ -package blackjack.domain.Card; +package blackjack.domain; import static org.assertj.core.api.Assertions.assertThat; +import blackjack.domain.card.Card; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Suit; import org.junit.jupiter.api.Test; class CardTest { diff --git a/src/test/java/blackjack/domain/Card/CardsTest.java b/src/test/java/blackjack/domain/CardsTest.java similarity index 80% rename from src/test/java/blackjack/domain/Card/CardsTest.java rename to src/test/java/blackjack/domain/CardsTest.java index 984ecd6b..d1524627 100644 --- a/src/test/java/blackjack/domain/Card/CardsTest.java +++ b/src/test/java/blackjack/domain/CardsTest.java @@ -1,5 +1,8 @@ -package blackjack.domain.Card; +package blackjack.domain; +import blackjack.domain.card.Card; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Suit; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; diff --git a/src/test/java/blackjack/domain/Card/DenominationTest.java b/src/test/java/blackjack/domain/DenominationTest.java similarity index 91% rename from src/test/java/blackjack/domain/Card/DenominationTest.java rename to src/test/java/blackjack/domain/DenominationTest.java index 2b5f0dad..9d47b856 100644 --- a/src/test/java/blackjack/domain/Card/DenominationTest.java +++ b/src/test/java/blackjack/domain/DenominationTest.java @@ -1,7 +1,8 @@ -package blackjack.domain.Card; +package blackjack.domain; import static org.assertj.core.api.Assertions.assertThat; +import blackjack.domain.card.Denomination; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/blackjack/domain/Card/PlayerTest.java b/src/test/java/blackjack/domain/PlayerTest.java similarity index 78% rename from src/test/java/blackjack/domain/Card/PlayerTest.java rename to src/test/java/blackjack/domain/PlayerTest.java index 88ee2b14..e67ba471 100644 --- a/src/test/java/blackjack/domain/Card/PlayerTest.java +++ b/src/test/java/blackjack/domain/PlayerTest.java @@ -1,7 +1,11 @@ -package blackjack.domain.Card; +package blackjack.domain; import static org.assertj.core.api.Assertions.assertThat; +import blackjack.domain.card.Card; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Suit; +import blackjack.domain.gamer.Player; import org.junit.jupiter.api.Test; class PlayerTest { From 0e6fe11d8b34ec5c1b812a2db947fc8d5fbcb67d Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 10:26:55 +0900 Subject: [PATCH 41/56] =?UTF-8?q?refactor:=20player=EC=99=80=20dealer?= =?UTF-8?q?=EC=9D=98=20=EC=A4=91=EB=B3=B5=EB=90=9C=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20Gamer=EB=A1=9C=20=EC=9C=84=EC=9E=84=201.=20?= =?UTF-8?q?=EC=B9=B4=EB=93=9C=EC=9D=98=20=ED=95=A9=EC=9D=84=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=202.=20card?= =?UTF-8?q?=EC=99=80=20=EC=9D=B4=EB=A6=84=EC=9D=84=20super=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=B4=20Gamer=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Suit.java | 2 +- .../java/blackjack/domain/gamer/Dealer.java | 33 +------------- .../java/blackjack/domain/gamer/Gamer.java | 43 ++++++++++++++++--- .../java/blackjack/domain/gamer/Player.java | 38 +--------------- .../java/blackjack/domain/gamer/Players.java | 3 +- 5 files changed, 43 insertions(+), 76 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Suit.java b/src/main/java/blackjack/domain/Card/Suit.java index 0aaf8a99..49fd54e2 100644 --- a/src/main/java/blackjack/domain/Card/Suit.java +++ b/src/main/java/blackjack/domain/Card/Suit.java @@ -1,4 +1,4 @@ -package blackjack.domain.Card; +package blackjack.domain.card; public enum Suit { CLUBS("클로버"), diff --git a/src/main/java/blackjack/domain/gamer/Dealer.java b/src/main/java/blackjack/domain/gamer/Dealer.java index 27d7c2ca..e5040769 100644 --- a/src/main/java/blackjack/domain/gamer/Dealer.java +++ b/src/main/java/blackjack/domain/gamer/Dealer.java @@ -5,33 +5,10 @@ import java.util.List; public class Dealer extends Gamer{ - private static final int TEN = 10; private static final int THRESHOLD = 21; - private List cards; - public Dealer() { - this.cards = initSetting(); - } - - public int calcScore(Dealer dealer) { - int score = dealer.getCards().stream() - .map(Card::getDenomination) - .mapToInt(Denomination::getValue) - .sum(); - - long aceCount = dealer.getCards().stream().filter(card -> card.getDenomination().isAce()).count(); - for(int i = 0; i< aceCount; i++) { - score = adjustScore(score); - } - return score; - } - - private int adjustScore(int score) { - if(score + TEN <= THRESHOLD) { - score += TEN; - } - return score; + super("딜러"); } public boolean isBlackJack(Dealer dealer) { @@ -42,12 +19,4 @@ public boolean isBust(Dealer dealer) { return calcScore(dealer) > THRESHOLD; } - public List getCards() { - return cards; - } - - @Override - public String getName() { - return "딜러"; - } } diff --git a/src/main/java/blackjack/domain/gamer/Gamer.java b/src/main/java/blackjack/domain/gamer/Gamer.java index 93378769..e50a9092 100644 --- a/src/main/java/blackjack/domain/gamer/Gamer.java +++ b/src/main/java/blackjack/domain/gamer/Gamer.java @@ -2,6 +2,7 @@ import blackjack.domain.card.Card; import blackjack.domain.card.Cards; +import blackjack.domain.card.Denomination; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -9,15 +10,20 @@ public abstract class Gamer { + private static final int TEN = 10; + private static final int THRESHOLD = 21; private static final int INIT_CARD_COUNT = 2; - private List cardsAll = new ArrayList<>(); - private List cards = new ArrayList<>(); - public void match() { + private List cardsAll = new ArrayList<>(); + private List cards; + private final String name; + public Gamer(String name) { + this.name = name; + this.cards = initSetting(); } - public List initSetting() { + private List initSetting() { cardsAll = Cards.getCardList(); Collections.shuffle(cardsAll); this.cards = cardsAll.stream() @@ -28,11 +34,38 @@ public List initSetting() { return this.cards; } + public int calcScore(Gamer player) { + int score = player.cards.stream() + .map(Card::getDenomination) + .mapToInt(Denomination::getValue) + .sum(); + + long aceCount = player.cards.stream().filter(card -> card.getDenomination().isAce()) + .count(); + for (int i = 0; i < aceCount; i++) { + score = adjustScore(score); + } + return score; + } + + private int adjustScore(int score) { + if (score + TEN <= THRESHOLD) { + score += TEN; + } + return score; + } + public List addCard(List cards) { cards.add(cardsAll.get(0)); cardsAll.remove(0); return cards; } - public abstract String getName(); + public List getCards() { + return cards; + } + + public String getName() { + return name; + } } diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index c49a562e..b568ec95 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -1,50 +1,18 @@ package blackjack.domain.gamer; -import blackjack.domain.card.Denomination; -import blackjack.domain.card.Card; import blackjack.domain.matchInfo.MatchResult; -import java.util.List; public class Player extends Gamer { - private static final int TEN = 10; private static final int THRESHOLD = 21; - private List cards; - private final String name; - public Player(String name) { - this.name = name; - cards = initSetting(); + super(name); } public MatchResult getMatchResult(Player player, Dealer dealer) { return MatchResult.calcMatchResult(player, dealer); } - public List getCards() { - return cards; - } - - public int calcScore(Player player) { - int score = player.getCards().stream() - .map(Card::getDenomination) - .mapToInt(Denomination::getValue) - .sum(); - - long aceCount = player.getCards().stream().filter(card -> card.getDenomination().isAce()).count(); - for(int i = 0; i < aceCount; i++) { - score = adjustScore(score); - } - return score; - } - - private int adjustScore(int score) { - if(score + TEN <= THRESHOLD) { - score += TEN; - } - return score; - } - public boolean isBlackJack(Player player) { return calcScore(player) == THRESHOLD; } @@ -53,8 +21,4 @@ public boolean isBust(Player player) { return calcScore(player) > THRESHOLD; } - @Override - public String getName() { - return name; - } } diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index f2229764..834f7a17 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -22,7 +22,8 @@ private void init() { } public MatchResultBoard playMatch(Dealer dealer) { - return new MatchResultBoard(players.stream().collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); + return new MatchResultBoard(players.stream() + .collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); } public List getPlayers() { From 8dfac2c2f10e0ef476a05d43e5f60fe4b4a7f319 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 10:54:37 +0900 Subject: [PATCH 42/56] =?UTF-8?q?refactor:=20=EC=A4=91=EB=B3=B5=EB=90=9C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20Gamer=EC=97=90=20=EC=9C=84=EC=9E=84=201?= =?UTF-8?q?.=20isBlackJack=20=EC=BD=94=EB=93=9C=20=EC=9C=84=EC=9E=84=202.?= =?UTF-8?q?=20isBust=20=EC=BD=94=EB=93=9C=20=EC=9C=84=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/gamer/Dealer.java | 9 --------- src/main/java/blackjack/domain/gamer/Gamer.java | 9 ++++++++- src/main/java/blackjack/domain/gamer/Player.java | 8 -------- 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/java/blackjack/domain/gamer/Dealer.java b/src/main/java/blackjack/domain/gamer/Dealer.java index e5040769..ee03be38 100644 --- a/src/main/java/blackjack/domain/gamer/Dealer.java +++ b/src/main/java/blackjack/domain/gamer/Dealer.java @@ -5,18 +5,9 @@ import java.util.List; public class Dealer extends Gamer{ - private static final int THRESHOLD = 21; public Dealer() { super("딜러"); } - public boolean isBlackJack(Dealer dealer) { - return calcScore(dealer) == THRESHOLD; - } - - public boolean isBust(Dealer dealer) { - return calcScore(dealer) > THRESHOLD; - } - } diff --git a/src/main/java/blackjack/domain/gamer/Gamer.java b/src/main/java/blackjack/domain/gamer/Gamer.java index e50a9092..314de41e 100644 --- a/src/main/java/blackjack/domain/gamer/Gamer.java +++ b/src/main/java/blackjack/domain/gamer/Gamer.java @@ -9,7 +9,6 @@ import java.util.stream.Collectors; public abstract class Gamer { - private static final int TEN = 10; private static final int THRESHOLD = 21; private static final int INIT_CARD_COUNT = 2; @@ -61,6 +60,14 @@ public List addCard(List cards) { return cards; } + public boolean isBlackJack(Gamer player) { + return calcScore(player) == THRESHOLD; + } + + public boolean isBust(Gamer player) { + return calcScore(player) > THRESHOLD; + } + public List getCards() { return cards; } diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index b568ec95..29c2cc46 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -13,12 +13,4 @@ public MatchResult getMatchResult(Player player, Dealer dealer) { return MatchResult.calcMatchResult(player, dealer); } - public boolean isBlackJack(Player player) { - return calcScore(player) == THRESHOLD; - } - - public boolean isBust(Player player) { - return calcScore(player) > THRESHOLD; - } - } From 9bf6d84bc41cd80b79337b0be3bc81d543d842c2 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 11:07:02 +0900 Subject: [PATCH 43/56] =?UTF-8?q?refactor:=20=EC=83=9D=EC=84=B1=EC=9E=90?= =?UTF-8?q?=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/gamer/Players.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index 834f7a17..5ff7e954 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -8,15 +8,15 @@ public class Players { private List players = new ArrayList<>(); - private String[] playernames; + private String[] playerNames; - public Players(String[] playernames) { - this.playernames = playernames; + public Players(String[] playerNames) { + this.playerNames = playerNames; init(); } private void init() { - for (String playerName : playernames) { + for (String playerName : playerNames) { players.add(new Player(playerName)); } } From f7fa94ece0c70a4202d264bfa6e4038f991ddfad Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 11:10:04 +0900 Subject: [PATCH 44/56] =?UTF-8?q?refactor:=20Gamer=EB=A5=BC=20=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=ED=95=9C=20=EC=9D=BC=EA=B8=89=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/controller/GameLauncher.java | 3 ++- src/main/java/blackjack/domain/gamer/Player.java | 2 +- src/main/java/blackjack/domain/gamer/Players.java | 2 +- src/main/java/blackjack/domain/matchInfo/MatchResult.java | 3 ++- src/main/java/blackjack/view/OutputView.java | 7 ++++--- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 06827c6e..b3c469f2 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -1,6 +1,7 @@ package blackjack.controller; import blackjack.domain.gamer.Dealer; +import blackjack.domain.gamer.Gamer; import blackjack.domain.matchInfo.MatchResultBoard; import blackjack.domain.gamer.Player; import blackjack.domain.gamer.Players; @@ -18,7 +19,7 @@ public void start() { OutputView.printCardsSetting(playerNames); - Dealer dealer = new Dealer(); + Gamer dealer = new Dealer(); OutputView.printDealerCardsSetting(dealer, true); Players players = new Players(playerNames); diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index 29c2cc46..d8e43ee2 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -9,7 +9,7 @@ public Player(String name) { super(name); } - public MatchResult getMatchResult(Player player, Dealer dealer) { + public MatchResult getMatchResult(Gamer player, Gamer dealer) { return MatchResult.calcMatchResult(player, dealer); } diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index 5ff7e954..d5ed8cb0 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -21,7 +21,7 @@ private void init() { } } - public MatchResultBoard playMatch(Dealer dealer) { + public MatchResultBoard playMatch(Gamer dealer) { return new MatchResultBoard(players.stream() .collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); } diff --git a/src/main/java/blackjack/domain/matchInfo/MatchResult.java b/src/main/java/blackjack/domain/matchInfo/MatchResult.java index 390440d7..7bee7338 100644 --- a/src/main/java/blackjack/domain/matchInfo/MatchResult.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResult.java @@ -1,6 +1,7 @@ package blackjack.domain.matchInfo; import blackjack.domain.gamer.Dealer; +import blackjack.domain.gamer.Gamer; import blackjack.domain.gamer.Player; import java.util.Arrays; @@ -31,7 +32,7 @@ private static MatchResult of(final int value) { .orElseThrow(() -> new RuntimeException(WRONG_MATCH_SCORE_KEY_ERR_MSG)); } - public static MatchResult calcMatchResult(Player player, Dealer dealer) { + public static MatchResult calcMatchResult(Gamer player, Gamer dealer) { if (player.isBust(player)) return LOSE; if (dealer.isBust(dealer)) return WIN; diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index a7232f6a..b3acce75 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -2,6 +2,7 @@ import blackjack.domain.card.Card; import blackjack.domain.gamer.Dealer; +import blackjack.domain.gamer.Gamer; import blackjack.domain.matchInfo.DealerMatchResultInfo; import blackjack.domain.matchInfo.PlayerMatchResultInfo; import blackjack.domain.gamer.Player; @@ -31,7 +32,7 @@ public static void printCardsSetting(String[] players) { System.out.println("딜러와 " + String.join(DELIMITER, players) + "에게 2장의 카드를 나누었습니다."); } - public static void printDealerCardsSetting(Dealer dealer, boolean flag) { + public static void printDealerCardsSetting(Gamer dealer, boolean flag) { System.out.print(dealer.getName() + ": "); printPlayerCards(dealer.getCards(), flag); } @@ -64,7 +65,7 @@ public static void printDealerAddCard() { System.out.println(); } - public static void printDealerCardSum(Dealer dealer) { + public static void printDealerCardSum(Gamer dealer) { printDealerCardsSetting(dealer, false); System.out.println("- 결과:" + dealer.calcScore(dealer)); @@ -82,7 +83,7 @@ public static void printFinalGameResult() { System.out.println(FINAL_GAME_RESULT); } - public static void printDealerMatchResult(Dealer dealer, DealerMatchResultInfo dealerMatchScoreInfo) { + public static void printDealerMatchResult(Gamer dealer, DealerMatchResultInfo dealerMatchScoreInfo) { System.out.format( MATCH_SCORE_INFO_FMT, dealer.getName(), From c6ae257ccb27285ca8518e662c059a370c804e8d Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 11:14:24 +0900 Subject: [PATCH 45/56] =?UTF-8?q?refactor:=20Gamer=EB=A5=BC=20=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=ED=95=9C=20=EC=9D=BC=EA=B8=89=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94=20-=20Gamer=20Player?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/controller/GameLauncher.java | 2 +- src/main/java/blackjack/view/InputView.java | 3 ++- src/main/java/blackjack/view/OutputView.java | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index b3c469f2..6bf6d13d 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -43,7 +43,7 @@ public void start() { } - private void getCardOrNot(Player player) { + private void getCardOrNot(Gamer player) { while (InputView.readAddCardOrNot(player) && player.calcScore(player) < BLACK_JACK_SUM_LIMIT) { player.addCard(player.getCards()); OutputView.printPlayerStatus(player); diff --git a/src/main/java/blackjack/view/InputView.java b/src/main/java/blackjack/view/InputView.java index cb7ff742..5affa519 100644 --- a/src/main/java/blackjack/view/InputView.java +++ b/src/main/java/blackjack/view/InputView.java @@ -1,5 +1,6 @@ package blackjack.view; +import blackjack.domain.gamer.Gamer; import blackjack.domain.gamer.Player; import java.util.Scanner; @@ -17,7 +18,7 @@ public static final String[] readPlayerName() { return readPlayerName(); } - public static final boolean readAddCardOrNot(Player player) { + public static final boolean readAddCardOrNot(Gamer player) { Scanner scanner = new Scanner(System.in); OutputView.requestAddCardOrNot(player); diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index b3acce75..3098dfed 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -51,11 +51,11 @@ public static void printPlayerCards(List cards, boolean flag) { if(flag) System.out.println(); } - public static void requestAddCardOrNot(Player player) { + public static void requestAddCardOrNot(Gamer player) { System.out.println(player.getName() + REQUEST_RECEIVE_CARD); } - public static void printPlayerStatus(Player player) { + public static void printPlayerStatus(Gamer player) { System.out.print(player.getName() + ": "); printPlayerCards(player.getCards(), true); } From fe7206579b1ede839333952c2ff5d2fc91c08364 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 11:59:46 +0900 Subject: [PATCH 46/56] =?UTF-8?q?refactor:=20LinkedHashMap=EC=9D=84=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=B4=20=EA=B2=B0=EA=B3=BC=20=EC=88=9C?= =?UTF-8?q?=EC=84=9C=EB=B3=B4=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/card/Card.java | 5 +---- src/main/java/blackjack/domain/gamer/Player.java | 2 -- src/main/java/blackjack/domain/gamer/Players.java | 6 ++++-- src/main/java/blackjack/domain/matchInfo/MatchResult.java | 2 -- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/blackjack/domain/card/Card.java b/src/main/java/blackjack/domain/card/Card.java index eaa3155a..b45bfc53 100644 --- a/src/main/java/blackjack/domain/card/Card.java +++ b/src/main/java/blackjack/domain/card/Card.java @@ -4,11 +4,8 @@ public class Card { private final Denomination denomination; - private Suit suit; + private final Suit suit; - public Card(final Denomination denomination) { - this.denomination = denomination; - } public Card(final Denomination denomination, final Suit suit) { this.denomination = denomination; this.suit = suit; diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index d8e43ee2..c525ae89 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -3,8 +3,6 @@ import blackjack.domain.matchInfo.MatchResult; public class Player extends Gamer { - private static final int THRESHOLD = 21; - public Player(String name) { super(name); } diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index d5ed8cb0..ba67de73 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -2,6 +2,7 @@ import blackjack.domain.matchInfo.MatchResultBoard; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; @@ -22,8 +23,9 @@ private void init() { } public MatchResultBoard playMatch(Gamer dealer) { - return new MatchResultBoard(players.stream() - .collect(Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer)))); + return new MatchResultBoard(players.stream().collect( + Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer), + (player1, player2) -> player1, LinkedHashMap::new))); } public List getPlayers() { diff --git a/src/main/java/blackjack/domain/matchInfo/MatchResult.java b/src/main/java/blackjack/domain/matchInfo/MatchResult.java index 7bee7338..7ebaa6f7 100644 --- a/src/main/java/blackjack/domain/matchInfo/MatchResult.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResult.java @@ -1,8 +1,6 @@ package blackjack.domain.matchInfo; -import blackjack.domain.gamer.Dealer; import blackjack.domain.gamer.Gamer; -import blackjack.domain.gamer.Player; import java.util.Arrays; public enum MatchResult { From ebf319eb05ef429eb20109c353083dc674471352 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 12:09:38 +0900 Subject: [PATCH 47/56] =?UTF-8?q?test:=20=EB=AA=A8=EB=93=A0=20=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=EB=8A=94=2052=EC=9E=A5=EC=9D=B4=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/test/java/blackjack/domain/CardsTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/blackjack/domain/CardsTest.java b/src/test/java/blackjack/domain/CardsTest.java index d1524627..a04482d6 100644 --- a/src/test/java/blackjack/domain/CardsTest.java +++ b/src/test/java/blackjack/domain/CardsTest.java @@ -1,5 +1,7 @@ package blackjack.domain; +import static org.assertj.core.api.Assertions.assertThat; + import blackjack.domain.card.Card; import blackjack.domain.card.Denomination; import blackjack.domain.card.Suit; @@ -10,13 +12,13 @@ class CardsTest { @Test - void 모든_카드를_출력한다() { + void 모든_카드는_52장이다() { List cardList = new ArrayList<>(); for(Denomination denomination : Denomination.values()) { for(Suit suit : Suit.values()) { cardList.add(new Card(denomination, suit)); } } - cardList.forEach(card -> System.out.println(new StringBuilder().append(card.getDenomination().getName()).append(card.getSuit().getValue()))); + assertThat(cardList.size()).isEqualTo(52); } } From f80450962f3995d48893a7ef7cbd1eabf849c9c5 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 14:53:43 +0900 Subject: [PATCH 48/56] =?UTF-8?q?test:=20GamerTest.java=20=EC=97=90=20Game?= =?UTF-8?q?r=EC=97=90=20=EB=8C=80=ED=95=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84=201.=20=EB=AA=A8?= =?UTF-8?q?=EB=93=A0=5F=EA=B2=8C=EC=9D=B4=EB=A8=B8=EB=8A=94=5F=EC=B2=98?= =?UTF-8?q?=EC=9D=8C=EC=97=90=5F2=EC=9E=A5=EC=9D=98=5F=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=5F=EB=B0=9B=EB=8A=94=EB=8B=A4=202.=20=ED=94=8C?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=EC=9D=98=5F=EC=B9=B4=EB=93=9C=5F?= =?UTF-8?q?=EC=B4=9D=ED=95=A9=EC=9D=84=5F=EA=B3=84=EC=82=B0=ED=95=9C?= =?UTF-8?q?=EB=8B=A4=203.=20ACE=EB=8A=94=5F1=EC=9D=B4=EB=82=98=5F11?= =?UTF-8?q?=EB=A1=9C=5F=EA=B3=84=EC=82=B0=EB=90=A0=5F=EC=88=98=5F=EC=9E=88?= =?UTF-8?q?=EB=8B=A4=204.=20=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EB=8A=94?= =?UTF-8?q?=5F=EC=B9=B4=EB=93=9C=EB=A5=BC=5F=ED=95=9C=5F=EC=9E=A5=EB=8D=94?= =?UTF-8?q?=5F=EB=B0=9B=EC=9D=84=5F=EC=88=98=5F=EC=9E=88=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/gamer/Dealer.java | 5 --- .../java/blackjack/domain/gamer/Gamer.java | 27 +++++++---- .../java/blackjack/domain/gamer/Player.java | 10 +++++ .../java/blackjack/domain/gamer/Players.java | 7 +-- .../blackjack/domain/gamer/GamerTest.java | 45 +++++++++++++++++++ 5 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 src/test/java/blackjack/domain/gamer/GamerTest.java diff --git a/src/main/java/blackjack/domain/gamer/Dealer.java b/src/main/java/blackjack/domain/gamer/Dealer.java index ee03be38..64225389 100644 --- a/src/main/java/blackjack/domain/gamer/Dealer.java +++ b/src/main/java/blackjack/domain/gamer/Dealer.java @@ -1,13 +1,8 @@ package blackjack.domain.gamer; -import blackjack.domain.card.Denomination; -import blackjack.domain.card.Card; -import java.util.List; - public class Dealer extends Gamer{ public Dealer() { super("딜러"); } - } diff --git a/src/main/java/blackjack/domain/gamer/Gamer.java b/src/main/java/blackjack/domain/gamer/Gamer.java index 314de41e..d19d65d2 100644 --- a/src/main/java/blackjack/domain/gamer/Gamer.java +++ b/src/main/java/blackjack/domain/gamer/Gamer.java @@ -13,23 +13,32 @@ public abstract class Gamer { private static final int THRESHOLD = 21; private static final int INIT_CARD_COUNT = 2; - private List cardsAll = new ArrayList<>(); + private List cardsBundle = new ArrayList<>(); private List cards; - private final String name; + private String name; + + public Gamer(List cards) { + this.cards = cards; + } public Gamer(String name) { this.name = name; this.cards = initSetting(); } + public Gamer(String name, List cards) { + this.name = name; + this.cards = cards; + } + private List initSetting() { - cardsAll = Cards.getCardList(); - Collections.shuffle(cardsAll); - this.cards = cardsAll.stream() + cardsBundle = Cards.getCardList(); + Collections.shuffle(cardsBundle); + this.cards = cardsBundle.stream() .limit(INIT_CARD_COUNT) .collect(Collectors.toList()); - cardsAll.remove(0); - cardsAll.remove(0); + cardsBundle.remove(0); + cardsBundle.remove(0); return this.cards; } @@ -55,8 +64,8 @@ private int adjustScore(int score) { } public List addCard(List cards) { - cards.add(cardsAll.get(0)); - cardsAll.remove(0); + cards.add(cardsBundle.get(0)); + cardsBundle.remove(0); return cards; } diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index c525ae89..199deb1d 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -1,12 +1,22 @@ package blackjack.domain.gamer; +import blackjack.domain.card.Card; import blackjack.domain.matchInfo.MatchResult; +import java.util.List; public class Player extends Gamer { + + public Player(List cards) { + super(cards); + } public Player(String name) { super(name); } + public Player(String name, List cards) { + super(name, cards); + } + public MatchResult getMatchResult(Gamer player, Gamer dealer) { return MatchResult.calcMatchResult(player, dealer); } diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index ba67de73..23b65980 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -23,9 +23,10 @@ private void init() { } public MatchResultBoard playMatch(Gamer dealer) { - return new MatchResultBoard(players.stream().collect( - Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer), - (player1, player2) -> player1, LinkedHashMap::new))); + return new MatchResultBoard(players.stream() + .collect( + Collectors.toMap(player -> player, player -> player.getMatchResult(player, dealer), + (player1, player2) -> player1, LinkedHashMap::new))); } public List getPlayers() { diff --git a/src/test/java/blackjack/domain/gamer/GamerTest.java b/src/test/java/blackjack/domain/gamer/GamerTest.java new file mode 100644 index 00000000..1ab66dc4 --- /dev/null +++ b/src/test/java/blackjack/domain/gamer/GamerTest.java @@ -0,0 +1,45 @@ +package blackjack.domain.gamer; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +import blackjack.domain.card.Card; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Suit; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Test; + +class GamerTest { + + @Test + void 모든_게이머는_처음에_2장의_카드를_받는다() { + Gamer player = new Player("yang"); + Gamer dealer = new Dealer(); + assertThat(player.getCards().size()).isEqualTo(2); + assertThat(dealer.getCards().size()).isEqualTo(2); + } + + @Test + void 플레이어의_카드_총합을_계산한다() { + Gamer player = new Player("yang", Arrays.asList(new Card(Denomination.FOUR, Suit.DIAMONDS), + new Card(Denomination.NINE, Suit.DIAMONDS))); + assertThat(player.calcScore(player)).isEqualTo(13); + } + + @Test + void ACE는_1이나_11로_계산될_수_있다() { + Gamer player = new Player("yang", Arrays.asList(new Card(Denomination.FOUR, Suit.DIAMONDS), + new Card(Denomination.ACE, Suit.DIAMONDS))); + assertThat(player.calcScore(player)).isEqualTo(15); + } + + @Test + void 플레이어는_카드를_한_장더_받을_수_있다() { + Gamer player = new Player("yang"); + assertThat(player.addCard(player.getCards()).size()).isEqualTo(3); + } + + +} From 12d9584e293c93c8414c9d2e0cf93e468d407877 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 14:58:20 +0900 Subject: [PATCH 49/56] =?UTF-8?q?test:=20GamerTest.java=20=EC=97=90=20Game?= =?UTF-8?q?r=EC=97=90=20=EB=8C=80=ED=95=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84=201.=20=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=EC=9D=98=5F=EC=B4=9D=ED=95=A9=EC=9D=B4=5F21=EC=9D=B4?= =?UTF-8?q?=EB=A9=B4=5F=EB=B8=94=EB=9E=99=EC=9E=AD=EC=9D=B4=EB=8B=A4=202.?= =?UTF-8?q?=20=EC=B9=B4=EB=93=9C=EC=9D=98=5F=EC=B4=9D=ED=95=A9=EC=9D=B4=5F?= =?UTF-8?q?21=EC=9D=84=5F=EB=84=98=EC=9C=BC=EB=A9=B4=5F=EB=B2=84=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=9D=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/gamer/Player.java | 4 ---- .../java/blackjack/domain/gamer/GamerTest.java | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index 199deb1d..294488a9 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -5,10 +5,6 @@ import java.util.List; public class Player extends Gamer { - - public Player(List cards) { - super(cards); - } public Player(String name) { super(name); } diff --git a/src/test/java/blackjack/domain/gamer/GamerTest.java b/src/test/java/blackjack/domain/gamer/GamerTest.java index 1ab66dc4..7303bb18 100644 --- a/src/test/java/blackjack/domain/gamer/GamerTest.java +++ b/src/test/java/blackjack/domain/gamer/GamerTest.java @@ -6,6 +6,7 @@ import blackjack.domain.card.Card; import blackjack.domain.card.Denomination; import blackjack.domain.card.Suit; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -41,5 +42,18 @@ class GamerTest { assertThat(player.addCard(player.getCards()).size()).isEqualTo(3); } + @Test + void 카드의_총합이_21이면_블랙잭이다() { + Gamer player = new Player("yang", Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS))); + assertThat(player.isBlackJack(player)).isTrue(); + } + + @Test + void 카드의_총합이_21을_넘으면_버스트이다() { + Gamer player = new Player("yang", Arrays.asList(new Card(Denomination.FIVE, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS), new Card(Denomination.TEN, Suit.CLUBS))); + assertThat(player.isBust(player)).isTrue(); + } } From 1bad02bc9d0b96671aed32b44ae4f8036b33a4d7 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 15:07:44 +0900 Subject: [PATCH 50/56] =?UTF-8?q?test:=20PlayerTest=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EA=B5=AC=ED=98=84=201.=20?= =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EA=B0=80=5F=EB=94=9C?= =?UTF-8?q?=EB=9F=AC=EB=9E=91=5F=EC=B9=B4=EB=93=9C=ED=95=A9=EC=9D=B4=5F?= =?UTF-8?q?=EA=B0=99=EC=9C=BC=EB=A9=B4=5F=EB=AC=B4=EC=8A=B9=EB=B6=80?= =?UTF-8?q?=EB=8B=A4=202.=20=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EA=B0=80?= =?UTF-8?q?=5F=EB=94=9C=EB=9F=AC=EB=B3=B4=EB=8B=A4=5F=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=ED=95=A9=EC=9D=B4=5F=ED=81=AC=EB=A9=B4=5F=EC=8A=B9=EB=A6=AC?= =?UTF-8?q?=ED=95=9C=EB=8B=A4=203.=20=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EA=B0=80=5F=EB=94=9C=EB=9F=AC=EB=B3=B4=EB=8B=A4=5F=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=ED=95=A9=EC=9D=B4=5F=EC=9E=91=EC=9C=BC=EB=A9=B4=5F?= =?UTF-8?q?=ED=8C=A8=EB=B0=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/gamer/Dealer.java | 8 +++- .../blackjack/domain/gamer/PlayerTest.java | 44 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/test/java/blackjack/domain/gamer/PlayerTest.java diff --git a/src/main/java/blackjack/domain/gamer/Dealer.java b/src/main/java/blackjack/domain/gamer/Dealer.java index 64225389..67f26372 100644 --- a/src/main/java/blackjack/domain/gamer/Dealer.java +++ b/src/main/java/blackjack/domain/gamer/Dealer.java @@ -1,8 +1,14 @@ package blackjack.domain.gamer; -public class Dealer extends Gamer{ +import blackjack.domain.card.Card; +import java.util.List; +public class Dealer extends Gamer { public Dealer() { super("딜러"); } + + public Dealer(List cards) { + super("딜러", cards); + } } diff --git a/src/test/java/blackjack/domain/gamer/PlayerTest.java b/src/test/java/blackjack/domain/gamer/PlayerTest.java new file mode 100644 index 00000000..0ebb8d7d --- /dev/null +++ b/src/test/java/blackjack/domain/gamer/PlayerTest.java @@ -0,0 +1,44 @@ +package blackjack.domain.gamer; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +import blackjack.domain.card.Card; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Suit; +import blackjack.domain.matchInfo.MatchResult; +import java.util.Arrays; +import org.junit.jupiter.api.Test; + +class PlayerTest { + + @Test + void 플레이어가_딜러랑_카드합이_같으면_무승부다() { + Player player = new Player("yang", Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS))); + Dealer dealer = new Dealer(Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS))); + MatchResult matchResult = player.getMatchResult(player, dealer); + assertThat(matchResult.getName()).isEqualTo("무"); + } + + @Test + void 플레이어가_딜러보다_카드합이_크면_승리한다() { + Player player = new Player("yang", Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS))); + Dealer dealer = new Dealer(Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.FIVE, Suit.DIAMONDS))); + MatchResult matchResult = player.getMatchResult(player, dealer); + assertThat(matchResult.getName()).isEqualTo("승"); + } + + @Test + void 플레이어가_딜러보다_카드합이_작으면_패배한다() { + Player player = new Player("yang", Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.TWO, Suit.DIAMONDS))); + Dealer dealer = new Dealer(Arrays.asList(new Card(Denomination.ACE, Suit.DIAMONDS), + new Card(Denomination.FIVE, Suit.DIAMONDS))); + MatchResult matchResult = player.getMatchResult(player, dealer); + assertThat(matchResult.getName()).isEqualTo("패"); + } +} From 41acbdf6d215e0559b199da51c8beaa50eba561a Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 16:51:10 +0900 Subject: [PATCH 51/56] =?UTF-8?q?refactor:=20=EB=B0=A9=EC=96=B4=EC=A0=81?= =?UTF-8?q?=20=EB=B3=B5=EC=82=AC=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/card/Cards.java | 3 ++- src/main/java/blackjack/domain/gamer/Gamer.java | 10 +++------- src/main/java/blackjack/domain/gamer/Players.java | 3 ++- .../domain/matchInfo/DealerMatchResultInfo.java | 4 ++-- .../blackjack/domain/matchInfo/MatchResultBoard.java | 5 +++-- src/test/java/blackjack/domain/gamer/PlayerTest.java | 1 - 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/blackjack/domain/card/Cards.java b/src/main/java/blackjack/domain/card/Cards.java index ae3930ba..604161fd 100644 --- a/src/main/java/blackjack/domain/card/Cards.java +++ b/src/main/java/blackjack/domain/card/Cards.java @@ -1,6 +1,7 @@ package blackjack.domain.card; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class Cards { @@ -15,7 +16,7 @@ public class Cards { } public static List getCardList() { - return cardList; + return Collections.unmodifiableList(cardList); } } diff --git a/src/main/java/blackjack/domain/gamer/Gamer.java b/src/main/java/blackjack/domain/gamer/Gamer.java index d19d65d2..ca73845d 100644 --- a/src/main/java/blackjack/domain/gamer/Gamer.java +++ b/src/main/java/blackjack/domain/gamer/Gamer.java @@ -17,10 +17,6 @@ public abstract class Gamer { private List cards; private String name; - public Gamer(List cards) { - this.cards = cards; - } - public Gamer(String name) { this.name = name; this.cards = initSetting(); @@ -39,7 +35,7 @@ private List initSetting() { .collect(Collectors.toList()); cardsBundle.remove(0); cardsBundle.remove(0); - return this.cards; + return Collections.unmodifiableList(this.cards); } public int calcScore(Gamer player) { @@ -66,7 +62,7 @@ private int adjustScore(int score) { public List addCard(List cards) { cards.add(cardsBundle.get(0)); cardsBundle.remove(0); - return cards; + return Collections.unmodifiableList(cards); } public boolean isBlackJack(Gamer player) { @@ -78,7 +74,7 @@ public boolean isBust(Gamer player) { } public List getCards() { - return cards; + return Collections.unmodifiableList(cards); } public String getName() { diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index 23b65980..b5d52327 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -2,6 +2,7 @@ import blackjack.domain.matchInfo.MatchResultBoard; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; @@ -30,6 +31,6 @@ public MatchResultBoard playMatch(Gamer dealer) { } public List getPlayers() { - return players; + return Collections.unmodifiableList(players); } } diff --git a/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java b/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java index 1c35b201..bf46d05d 100644 --- a/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java +++ b/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java @@ -1,5 +1,6 @@ package blackjack.domain.matchInfo; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -35,8 +36,7 @@ public int hashCode() { } public List getMatchResult() { - return matchScores; + return Collections.unmodifiableList(matchScores); } - } diff --git a/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java b/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java index cd9e280f..c5f212dd 100644 --- a/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java @@ -1,6 +1,7 @@ package blackjack.domain.matchInfo; import blackjack.domain.gamer.Player; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -14,7 +15,7 @@ public MatchResultBoard(Map matchResultMap) { } public List getPlayersMatchResultInfo() { - return matchResultMap + return Collections.unmodifiableList(matchResultMap .entrySet() .stream() .map(map -> @@ -22,7 +23,7 @@ public List getPlayersMatchResultInfo() { map.getKey().getName(), map.getValue().getName() )) - .collect(Collectors.toList()); + .collect(Collectors.toList())); } public DealerMatchResultInfo getDealerMatchResultInfo() { diff --git a/src/test/java/blackjack/domain/gamer/PlayerTest.java b/src/test/java/blackjack/domain/gamer/PlayerTest.java index 0ebb8d7d..4f20b1f1 100644 --- a/src/test/java/blackjack/domain/gamer/PlayerTest.java +++ b/src/test/java/blackjack/domain/gamer/PlayerTest.java @@ -1,7 +1,6 @@ package blackjack.domain.gamer; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; import blackjack.domain.card.Card; import blackjack.domain.card.Denomination; From 8f653216bc88543a8d0ea070d0ab43fb46e74fa3 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 18:07:48 +0900 Subject: [PATCH 52/56] =?UTF-8?q?refactor:=20Dealer.java=2016=EC=9D=B4?= =?UTF-8?q?=ED=95=98=EB=A9=B4=20=EC=B9=B4=EB=93=9C=EB=A5=BC=20=EB=8D=94?= =?UTF-8?q?=EB=B0=9B=EB=8A=94=20=EB=A1=9C=EC=A7=81=20Dealer=EC=97=90=20?= =?UTF-8?q?=EC=B1=85=EC=9E=84=20=EC=9C=84=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/controller/GameLauncher.java | 5 ++--- src/main/java/blackjack/domain/gamer/Dealer.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 6bf6d13d..34e8a139 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -19,7 +19,7 @@ public void start() { OutputView.printCardsSetting(playerNames); - Gamer dealer = new Dealer(); + Dealer dealer = new Dealer(); OutputView.printDealerCardsSetting(dealer, true); Players players = new Players(playerNames); @@ -28,8 +28,7 @@ public void start() { getCardOrNot(player); } - if (dealer.calcScore(dealer) < DEALER_SUM_LIMIT) { - dealer.addCard(dealer.getCards()); + if (dealer.getCardOrNot(dealer)) { OutputView.printDealerAddCard(); } diff --git a/src/main/java/blackjack/domain/gamer/Dealer.java b/src/main/java/blackjack/domain/gamer/Dealer.java index 67f26372..176412b8 100644 --- a/src/main/java/blackjack/domain/gamer/Dealer.java +++ b/src/main/java/blackjack/domain/gamer/Dealer.java @@ -4,6 +4,8 @@ import java.util.List; public class Dealer extends Gamer { + + private static final int DEALER_SUM_LIMIT = 16; public Dealer() { super("딜러"); } @@ -11,4 +13,12 @@ public Dealer() { public Dealer(List cards) { super("딜러", cards); } + + public boolean getCardOrNot(Dealer dealer) { + if (dealer.calcScore(dealer) < DEALER_SUM_LIMIT) { + dealer.addCard(dealer.getCards()); + return true; + } + return false; + } } From 157a9a56ad32b1fb5a8161bacb461d2fbf0ae3bc Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 18:08:33 +0900 Subject: [PATCH 53/56] =?UTF-8?q?test:=20Dealer=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84=201.=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=EC=97=90=5F=EC=B9=B4=EB=93=9C=EB=8A=94=5F?= =?UTF-8?q?=EC=84=9E=EC=97=AC=EC=84=9C=5F2=EA=B0=9C=EA=B0=80=5F=EC=A3=BC?= =?UTF-8?q?=EC=96=B4=EC=A7=84=EB=8B=A4()=202.=20=EB=91=90=5F=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=EC=9D=98=5F=ED=95=A9=EC=9D=B4=5F16=5F=EC=9D=B4?= =?UTF-8?q?=ED=95=98=EC=9D=BC=5F=EA=B2=BD=EC=9A=B0=5F=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=5F=EC=B6=94=EA=B0=80=EB=A1=9C=5F=ED=95=9C=EC=9E=A5=5F?= =?UTF-8?q?=EB=B0=9B=EB=8A=94=EB=8B=A4()=203.=20=EB=91=90=5F=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=EC=9D=98=5F=ED=95=A9=EC=9D=B4=5F16=5F=EC=B4=88?= =?UTF-8?q?=EA=B3=BC=EC=9D=BC=5F=EA=B2=BD=EC=9A=B0=5F=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=5F=EC=B6=94=EA=B0=80=EB=A1=9C=5F=EB=B0=9B=EC=A7=80=5F?= =?UTF-8?q?=EC=95=8A=EB=8A=94=EB=8B=A4()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../blackjack/domain/gamer/DealerTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/test/java/blackjack/domain/gamer/DealerTest.java diff --git a/src/test/java/blackjack/domain/gamer/DealerTest.java b/src/test/java/blackjack/domain/gamer/DealerTest.java new file mode 100644 index 00000000..1ff6bdd4 --- /dev/null +++ b/src/test/java/blackjack/domain/gamer/DealerTest.java @@ -0,0 +1,32 @@ +package blackjack.domain.gamer; + +import static org.assertj.core.api.Assertions.assertThat; + +import blackjack.domain.card.Card; +import blackjack.domain.card.Denomination; +import blackjack.domain.card.Suit; +import java.util.Arrays; +import org.junit.jupiter.api.Test; + +class DealerTest { + + @Test + void 초기에_카드는_섞여서_2개가_주어진다() { + Dealer dealer = new Dealer(); + assertThat(dealer.getCards().size()).isEqualTo(2); + } + + @Test + void 두_카드의_합이_16_이하일_경우_카드를_추가로_한장_받는다() { + Dealer dealer = new Dealer(Arrays.asList(new Card(Denomination.TWO, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS))); + assertThat(dealer.getCardOrNot(dealer)).isTrue(); + } + + @Test + void 두_카드의_합이_16_초과일_경우_카드를_추가로_받지_않는다() { + Dealer dealer = new Dealer(Arrays.asList(new Card(Denomination.NINE, Suit.DIAMONDS), + new Card(Denomination.TEN, Suit.DIAMONDS))); + assertThat(dealer.getCardOrNot(dealer)).isFalse(); + } +} From 69de10d09bd06647cdab588ec4e7e07de265adae Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 18:09:12 +0900 Subject: [PATCH 54/56] =?UTF-8?q?fix:=20=EC=B9=B4=EB=93=9C=EA=B0=80=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=EC=9D=B4=20=EB=90=98=EB=8A=94=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EC=9D=B4=EC=8A=88=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- .../java/blackjack/domain/card/Cards.java | 2 +- .../java/blackjack/domain/gamer/Gamer.java | 33 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/main/java/blackjack/domain/card/Cards.java b/src/main/java/blackjack/domain/card/Cards.java index 604161fd..1a15be12 100644 --- a/src/main/java/blackjack/domain/card/Cards.java +++ b/src/main/java/blackjack/domain/card/Cards.java @@ -16,7 +16,7 @@ public class Cards { } public static List getCardList() { - return Collections.unmodifiableList(cardList); + return cardList; } } diff --git a/src/main/java/blackjack/domain/gamer/Gamer.java b/src/main/java/blackjack/domain/gamer/Gamer.java index ca73845d..91e95eab 100644 --- a/src/main/java/blackjack/domain/gamer/Gamer.java +++ b/src/main/java/blackjack/domain/gamer/Gamer.java @@ -9,12 +9,13 @@ import java.util.stream.Collectors; public abstract class Gamer { + private static final String ERROR_NOT_ENOUGH_CARD = "덱에 남아있는 카드가 없습니다."; private static final int TEN = 10; private static final int THRESHOLD = 21; private static final int INIT_CARD_COUNT = 2; - private List cardsBundle = new ArrayList<>(); - private List cards; + private List cardsBundle = Cards.getCardList(); + private List cards = new ArrayList<>(); private String name; public Gamer(String name) { @@ -24,18 +25,22 @@ public Gamer(String name) { public Gamer(String name, List cards) { this.name = name; - this.cards = cards; + for(Card card : cards) { + this.cards.add(card); + } + for(Card card : cards) { + cardsBundle.remove(card); + } } private List initSetting() { - cardsBundle = Cards.getCardList(); Collections.shuffle(cardsBundle); this.cards = cardsBundle.stream() .limit(INIT_CARD_COUNT) .collect(Collectors.toList()); - cardsBundle.remove(0); - cardsBundle.remove(0); - return Collections.unmodifiableList(this.cards); + removeCard(); + removeCard(); + return this.cards; } public int calcScore(Gamer player) { @@ -61,8 +66,16 @@ private int adjustScore(int score) { public List addCard(List cards) { cards.add(cardsBundle.get(0)); - cardsBundle.remove(0); - return Collections.unmodifiableList(cards); + removeCard(); + return cards; + } + + private void removeCard() { + try { + cardsBundle.remove(0); + } catch (RuntimeException runtimeException) { + throw new RuntimeException(ERROR_NOT_ENOUGH_CARD); + } } public boolean isBlackJack(Gamer player) { @@ -74,7 +87,7 @@ public boolean isBust(Gamer player) { } public List getCards() { - return Collections.unmodifiableList(cards); + return cards; } public String getName() { From 0d305fe8554196f5436f7be4678e0035fc7c9eb1 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 18:22:27 +0900 Subject: [PATCH 55/56] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EB=B0=8F=20final=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/Application.java | 1 - src/main/java/blackjack/controller/GameLauncher.java | 3 +-- src/main/java/blackjack/domain/card/Denomination.java | 6 +++--- src/main/java/blackjack/domain/gamer/Player.java | 7 ++++--- src/main/java/blackjack/domain/gamer/Players.java | 4 ++-- .../blackjack/domain/matchInfo/DealerMatchResultInfo.java | 2 +- src/main/java/blackjack/domain/matchInfo/MatchResult.java | 2 +- .../java/blackjack/domain/matchInfo/MatchResultBoard.java | 2 +- .../blackjack/domain/matchInfo/PlayerMatchResultInfo.java | 2 +- src/main/java/blackjack/view/InputView.java | 3 ++- src/main/java/blackjack/view/OutputView.java | 1 - src/main/java/fuel/domain/Avante.java | 2 +- src/main/java/fuel/domain/K5.java | 2 +- src/main/java/fuel/domain/RentCompany.java | 2 +- src/main/java/fuel/domain/Sonata.java | 2 +- 15 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/main/java/blackjack/Application.java b/src/main/java/blackjack/Application.java index d4df5209..a65c4515 100644 --- a/src/main/java/blackjack/Application.java +++ b/src/main/java/blackjack/Application.java @@ -1,6 +1,5 @@ package blackjack; - import blackjack.controller.GameLauncher; public class Application { diff --git a/src/main/java/blackjack/controller/GameLauncher.java b/src/main/java/blackjack/controller/GameLauncher.java index 34e8a139..04f7e401 100644 --- a/src/main/java/blackjack/controller/GameLauncher.java +++ b/src/main/java/blackjack/controller/GameLauncher.java @@ -9,11 +9,10 @@ import blackjack.view.OutputView; public class GameLauncher { - private static final int DEALER_SUM_LIMIT = 16; + private static final int BLACK_JACK_SUM_LIMIT = 21; public void start() { - OutputView.requestPlayersName(); String[] playerNames = InputView.readPlayerName(); OutputView.printGamePlayer(playerNames); diff --git a/src/main/java/blackjack/domain/card/Denomination.java b/src/main/java/blackjack/domain/card/Denomination.java index 53de5b27..2a43f4f7 100644 --- a/src/main/java/blackjack/domain/card/Denomination.java +++ b/src/main/java/blackjack/domain/card/Denomination.java @@ -15,10 +15,10 @@ public enum Denomination { QUEEN("Q", 10), KING("K", 10); - private String name; - private int value; + private final String name; + private final int value; - Denomination(String name, int value) { + Denomination(final String name, final int value) { this.name = name; this.value = value; } diff --git a/src/main/java/blackjack/domain/gamer/Player.java b/src/main/java/blackjack/domain/gamer/Player.java index 294488a9..242d40a0 100644 --- a/src/main/java/blackjack/domain/gamer/Player.java +++ b/src/main/java/blackjack/domain/gamer/Player.java @@ -5,15 +5,16 @@ import java.util.List; public class Player extends Gamer { - public Player(String name) { + + public Player(final String name) { super(name); } - public Player(String name, List cards) { + public Player(final String name, final List cards) { super(name, cards); } - public MatchResult getMatchResult(Gamer player, Gamer dealer) { + public MatchResult getMatchResult(final Gamer player, final Gamer dealer) { return MatchResult.calcMatchResult(player, dealer); } diff --git a/src/main/java/blackjack/domain/gamer/Players.java b/src/main/java/blackjack/domain/gamer/Players.java index b5d52327..ca16ec2f 100644 --- a/src/main/java/blackjack/domain/gamer/Players.java +++ b/src/main/java/blackjack/domain/gamer/Players.java @@ -9,8 +9,8 @@ public class Players { - private List players = new ArrayList<>(); - private String[] playerNames; + private final List players = new ArrayList<>(); + private final String[] playerNames; public Players(String[] playerNames) { this.playerNames = playerNames; diff --git a/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java b/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java index bf46d05d..3f80b3c4 100644 --- a/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java +++ b/src/main/java/blackjack/domain/matchInfo/DealerMatchResultInfo.java @@ -7,7 +7,7 @@ public class DealerMatchResultInfo { private final List matchScores; - public DealerMatchResultInfo(List matchScores) { + public DealerMatchResultInfo(final List matchScores) { this.matchScores = matchScores; } diff --git a/src/main/java/blackjack/domain/matchInfo/MatchResult.java b/src/main/java/blackjack/domain/matchInfo/MatchResult.java index 7ebaa6f7..8e4ede00 100644 --- a/src/main/java/blackjack/domain/matchInfo/MatchResult.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResult.java @@ -14,7 +14,7 @@ public enum MatchResult { private final int key; private final String name; - MatchResult(int key, String name) { + MatchResult(final int key, final String name) { this.key = key; this.name = name; } diff --git a/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java b/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java index c5f212dd..2ac60442 100644 --- a/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java +++ b/src/main/java/blackjack/domain/matchInfo/MatchResultBoard.java @@ -10,7 +10,7 @@ public class MatchResultBoard { private final Map matchResultMap; - public MatchResultBoard(Map matchResultMap) { + public MatchResultBoard(final Map matchResultMap) { this.matchResultMap = matchResultMap; } diff --git a/src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java b/src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java index 02b4645b..320fc6ea 100644 --- a/src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java +++ b/src/main/java/blackjack/domain/matchInfo/PlayerMatchResultInfo.java @@ -6,7 +6,7 @@ public class PlayerMatchResultInfo { private final String name; private final String matchScore; - public PlayerMatchResultInfo(String name, String matchScore) { + public PlayerMatchResultInfo(final String name, final String matchScore) { this.name = name; this.matchScore = matchScore; } diff --git a/src/main/java/blackjack/view/InputView.java b/src/main/java/blackjack/view/InputView.java index 5affa519..68c66327 100644 --- a/src/main/java/blackjack/view/InputView.java +++ b/src/main/java/blackjack/view/InputView.java @@ -1,7 +1,6 @@ package blackjack.view; import blackjack.domain.gamer.Gamer; -import blackjack.domain.gamer.Player; import java.util.Scanner; public class InputView { @@ -9,6 +8,8 @@ private InputView() {} public static final String[] readPlayerName() { Scanner scanner = new Scanner(System.in); + OutputView.requestPlayersName(); + try { String playerNames = scanner.nextLine(); return playerNames.split(","); diff --git a/src/main/java/blackjack/view/OutputView.java b/src/main/java/blackjack/view/OutputView.java index 3098dfed..1ac51dec 100644 --- a/src/main/java/blackjack/view/OutputView.java +++ b/src/main/java/blackjack/view/OutputView.java @@ -1,7 +1,6 @@ package blackjack.view; import blackjack.domain.card.Card; -import blackjack.domain.gamer.Dealer; import blackjack.domain.gamer.Gamer; import blackjack.domain.matchInfo.DealerMatchResultInfo; import blackjack.domain.matchInfo.PlayerMatchResultInfo; diff --git a/src/main/java/fuel/domain/Avante.java b/src/main/java/fuel/domain/Avante.java index 034e7dbc..c9c958a3 100644 --- a/src/main/java/fuel/domain/Avante.java +++ b/src/main/java/fuel/domain/Avante.java @@ -3,7 +3,7 @@ public class Avante extends Car{ private static final int FUEL_EFFICIENCY = 15; - public Avante(double distance) { + public Avante(final double distance) { super(distance, "Avante"); } diff --git a/src/main/java/fuel/domain/K5.java b/src/main/java/fuel/domain/K5.java index d64e950d..c8ff5e27 100644 --- a/src/main/java/fuel/domain/K5.java +++ b/src/main/java/fuel/domain/K5.java @@ -3,7 +3,7 @@ public class K5 extends Car { private static final int FUEL_EFFICIENCY = 13; - public K5(double distance) { + public K5(final double distance) { super(distance, "K5"); } diff --git a/src/main/java/fuel/domain/RentCompany.java b/src/main/java/fuel/domain/RentCompany.java index e51b5f0e..b4cb461f 100644 --- a/src/main/java/fuel/domain/RentCompany.java +++ b/src/main/java/fuel/domain/RentCompany.java @@ -6,7 +6,7 @@ public class RentCompany { private static final String NEWLINE = System.getProperty("line.separator"); - final List carLists = new ArrayList<>(); + private final List carLists = new ArrayList<>(); public static RentCompany create() { return new RentCompany(); diff --git a/src/main/java/fuel/domain/Sonata.java b/src/main/java/fuel/domain/Sonata.java index 8908ba06..79daad14 100644 --- a/src/main/java/fuel/domain/Sonata.java +++ b/src/main/java/fuel/domain/Sonata.java @@ -3,7 +3,7 @@ public class Sonata extends Car { private static final int FUEL_EFFICIENCY = 10; - public Sonata(double distance) { + public Sonata(final double distance) { super(distance, "Sonata"); } From 397f22e1c2abbd90919134843df596625a821494 Mon Sep 17 00:00:00 2001 From: YangWoo Yu Date: Thu, 17 Feb 2022 18:37:19 +0900 Subject: [PATCH 56/56] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EB=B0=8F=20final=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: seungyeonjeong Co-authored-by: YuYangWoo --- src/main/java/blackjack/domain/Card/Suit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/blackjack/domain/Card/Suit.java b/src/main/java/blackjack/domain/Card/Suit.java index 49fd54e2..17c094ce 100644 --- a/src/main/java/blackjack/domain/Card/Suit.java +++ b/src/main/java/blackjack/domain/Card/Suit.java @@ -6,9 +6,9 @@ public enum Suit { HEARTS("하트"), SPADES("스페이드"); - private String value; + private final String value; - Suit(String value) { + Suit(final String value) { this.value = value; }