From 193cdb02d67895768aff7159c51307951c2df819 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:11:46 +0900 Subject: [PATCH 01/42] =?UTF-8?q?docs:=20=EA=B5=AC=ED=98=84=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 491aece1..ea5b6157 100644 --- a/README.md +++ b/README.md @@ -1 +1,56 @@ -# java-racingcar-precourse \ No newline at end of file +# java-racingcar-precourse + +## 기능 요구 사항 +- 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다. +- 각 자동차에 이름을 부여할 수 있다. +- 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. +- 자동차 이름은 쉼표(,)를 기준으로 구분하며 이름은 5자 이하만 가능하다. +- 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다. +- 전진하는 조건은 0에서 9 사이에서 무작위 값을 구한 후 무작위 값이 4 이상일 경우이다. +- 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다. +- 우승자가 여러 명일 경우 쉼표(,)를 이용하여 구분한다. +- 사용자가 잘못된 값을 입력할 경우 를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다 + 시 받는다. +- IllegalArgumentException이 아닌 IllegalArgumentException , IllegalStateException 등과 같은 명확한 유형을 처리한다. + +## 구현 기능 목록 +### model +자동차 +- [ ] 자동차 전진 + +게임 +- [ ] 경주 참여 자동차 추가 +- [ ] 시도 횟수 설정 +- [ ] 경주 자동차 이동 +- [ ] 현재 실행 횟수 증가 +- [ ] 현재 실행 횟수와 목표 실행 횟수 비교 +- [ ] 최대 위치 얻기 +- [ ] 우승자 정보 얻기 + + +사용자 입력 유효성 검사 +- [ ] 자동차 이름 입력 유효성 검사 +- [ ] 시도 횟수 입력 유효성 검사 + +### view +입력 +- [ ] 자동차 이름 입력 메시지 출력 +- [ ] 시도 횟수 입력 메시지 출력 + +출력 +- [ ] 실행 결과 출력 +- [ ] 우승자 출력 + +### controller +- [ ] 자동차 이름 유효성 검사 +- [ ] 시도 횟수 유효성 검사 +- [ ] 자동차 이름 입력 받기 +- [ ] 시도 횟수 입력 받기 +- [ ] 경주 자동차 등록 +- [ ] 시도 횟수 설정 +- [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) + +### utils +- [ ] 자동차 이름 parser +- [ ] 시도 횟수 parser +- [ ] 난수 생성기 \ No newline at end of file From 2d5de4a21939dc155962250424e225a273265679 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:13:56 +0900 Subject: [PATCH 02/42] =?UTF-8?q?chore:=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8=20=EC=8B=A4=ED=96=89=20=EC=8B=9C=EC=9E=91=EC=A0=90=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 --- src/main/java/racingcar/Application.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/racingcar/Application.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java new file mode 100644 index 00000000..c2b9df59 --- /dev/null +++ b/src/main/java/racingcar/Application.java @@ -0,0 +1,7 @@ +package racingcar; + +public class Application { + public static void main(String[] args) { + + } +} From 41e6a630456a95d3bfdc531ae97320bf0e96e689 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:40:00 +0900 Subject: [PATCH 03/42] =?UTF-8?q?docs:=20=EA=B5=AC=ED=98=84=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ea5b6157..edb04302 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,8 @@ ### view 입력 -- [ ] 자동차 이름 입력 메시지 출력 -- [ ] 시도 횟수 입력 메시지 출력 +- [ ] 자동차 이름 입력 +- [ ] 시도 횟수 입력 출력 - [ ] 실행 결과 출력 @@ -44,8 +44,6 @@ ### controller - [ ] 자동차 이름 유효성 검사 - [ ] 시도 횟수 유효성 검사 -- [ ] 자동차 이름 입력 받기 -- [ ] 시도 횟수 입력 받기 - [ ] 경주 자동차 등록 - [ ] 시도 횟수 설정 - [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) From f4be75ce654461ceec1ba30d7d686be65311c907 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:42:46 +0900 Subject: [PATCH 04/42] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=A0=84=EC=A7=84=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/model/Car.java | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/model/Car.java diff --git a/README.md b/README.md index edb04302..d07ac857 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ ## 구현 기능 목록 ### model 자동차 -- [ ] 자동차 전진 +- [X] 자동차 전진 게임 - [ ] 경주 참여 자동차 추가 diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java new file mode 100644 index 00000000..1f226a73 --- /dev/null +++ b/src/main/java/racingcar/model/Car.java @@ -0,0 +1,26 @@ +package racingcar.model; + +public class Car { + private String name; + private int position; + private static final int FORWARD_CONDITION = 4; + + public Car (String name){ + this.name = name; + this.position = 0; + } + + public String getName(){ + return name; + } + + public int getPosition(){ + return position; + } + + public void move(int condition){ + if(condition>=FORWARD_CONDITION){ + this.position += 1; + } + } +} From ad58285d4021b2a06850e1dffac65ff3bf3dd116 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:45:31 +0900 Subject: [PATCH 05/42] =?UTF-8?q?add:=20Game=20=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Game.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/racingcar/model/Game.java diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java new file mode 100644 index 00000000..855de651 --- /dev/null +++ b/src/main/java/racingcar/model/Game.java @@ -0,0 +1,19 @@ +package racingcar.model; + +import java.util.ArrayList; +import java.util.List; + +public class Game { + private final List raceCars; + private static int trial; + private int trialNumber = 0; + + public Game(){ + Game.trial = 0; + raceCars = new ArrayList<>(); + } + + public List getRaceCars(){ + return raceCars; + } +} From 7673b5ec8fc084ff45091f4c04bb0c532c268562 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:47:39 +0900 Subject: [PATCH 06/42] =?UTF-8?q?feat:=20=EA=B2=BD=EC=A3=BC=20=EC=B0=B8?= =?UTF-8?q?=EC=97=AC=20=EC=9E=90=EB=8F=99=EC=B0=A8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Game.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 855de651..2212f6de 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -16,4 +16,10 @@ public Game(){ public List getRaceCars(){ return raceCars; } + + public void setRaceCars(String[] carsName){ + for (String s : carsName) { + raceCars.add(new Car(s)); + } + } } From 23c7fcbcf5d11a0ba112703f14b6f4b4832d5085 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:49:02 +0900 Subject: [PATCH 07/42] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- src/main/java/racingcar/model/Game.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d07ac857..57c4ce12 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ - [X] 자동차 전진 게임 -- [ ] 경주 참여 자동차 추가 -- [ ] 시도 횟수 설정 +- [X] 경주 참여 자동차 추가 +- [X] 시도 횟수 설정 - [ ] 경주 자동차 이동 - [ ] 현재 실행 횟수 증가 - [ ] 현재 실행 횟수와 목표 실행 횟수 비교 diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 2212f6de..bf01cb0a 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -22,4 +22,8 @@ public void setRaceCars(String[] carsName){ raceCars.add(new Car(s)); } } + + public void setTrial(int trial){ + Game.trial = trial; + } } From 6e6045d369f5d29b7b3e1ef2f719aed339d41bf8 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:50:46 +0900 Subject: [PATCH 08/42] =?UTF-8?q?feat:=20=ED=98=84=EC=9E=AC=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=ED=9A=9F=EC=88=98=20=EC=A6=9D=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/model/Game.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 57c4ce12..30069bcb 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ - [X] 경주 참여 자동차 추가 - [X] 시도 횟수 설정 - [ ] 경주 자동차 이동 -- [ ] 현재 실행 횟수 증가 +- [X] 현재 실행 횟수 증가 - [ ] 현재 실행 횟수와 목표 실행 횟수 비교 - [ ] 최대 위치 얻기 - [ ] 우승자 정보 얻기 diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index bf01cb0a..3c81ff29 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -26,4 +26,8 @@ public void setRaceCars(String[] carsName){ public void setTrial(int trial){ Game.trial = trial; } + + private void increaseTrialNumber(){ + this.trialNumber += 1; + } } From 8953f0f8ee099838e92a43d0aaeb996e569d9833 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:51:39 +0900 Subject: [PATCH 09/42] =?UTF-8?q?feat:=20=ED=98=84=EC=9E=AC=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=ED=9A=9F=EC=88=98=EC=99=80=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=20=ED=9A=9F=EC=88=98=20=EB=B9=84=EA=B5=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/model/Game.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 30069bcb..d3e46d57 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ - [X] 시도 횟수 설정 - [ ] 경주 자동차 이동 - [X] 현재 실행 횟수 증가 -- [ ] 현재 실행 횟수와 목표 실행 횟수 비교 +- [X] 현재 실행 횟수와 목표 실행 횟수 비교 - [ ] 최대 위치 얻기 - [ ] 우승자 정보 얻기 diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 3c81ff29..7041b4c5 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -27,6 +27,10 @@ public void setTrial(int trial){ Game.trial = trial; } + public Boolean isGameEnd(){ + return trial == this.trialNumber; + } + private void increaseTrialNumber(){ this.trialNumber += 1; } From 9bda17b8b7d610df06ee17b69d46c8f5d08b937c Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:52:57 +0900 Subject: [PATCH 10/42] =?UTF-8?q?feat:=20=EA=B2=BD=EC=A3=BC=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=EC=B0=A8=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/model/Game.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d3e46d57..b7cbcf90 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ 게임 - [X] 경주 참여 자동차 추가 - [X] 시도 횟수 설정 -- [ ] 경주 자동차 이동 +- [X] 경주 자동차 이동 - [X] 현재 실행 횟수 증가 - [X] 현재 실행 횟수와 목표 실행 횟수 비교 - [ ] 최대 위치 얻기 diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 7041b4c5..92d9c621 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -27,6 +27,11 @@ public void setTrial(int trial){ Game.trial = trial; } + public void play(){ + moveForward(); + increaseTrialNumber(); + } + public Boolean isGameEnd(){ return trial == this.trialNumber; } @@ -34,4 +39,10 @@ public Boolean isGameEnd(){ private void increaseTrialNumber(){ this.trialNumber += 1; } + + private void moveForward(){ + for (Car car : raceCars){ + car.move(RandomNumberGenerator.generate()); + } + } } From 08fe183a111dacf59a711cd34fb587f0329d1086 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:54:12 +0900 Subject: [PATCH 11/42] =?UTF-8?q?feat:=20=EC=B5=9C=EB=8C=80=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EC=96=BB=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Game.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 92d9c621..a1c113dd 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -45,4 +45,11 @@ private void moveForward(){ car.move(RandomNumberGenerator.generate()); } } + + private int getMaxPosition(List cars){ + return cars.stream() + .mapToInt(Car::getPosition) + .max() + .orElse(0); + } } From 4425c9d1a1d5ceb6a7b174880fcb09c76a11d479 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:55:02 +0900 Subject: [PATCH 12/42] =?UTF-8?q?feat:=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=96=BB=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- src/main/java/racingcar/model/Game.java | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b7cbcf90..c9ef2b8c 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ - [X] 경주 자동차 이동 - [X] 현재 실행 횟수 증가 - [X] 현재 실행 횟수와 목표 실행 횟수 비교 -- [ ] 최대 위치 얻기 -- [ ] 우승자 정보 얻기 +- [X] 최대 위치 얻기 +- [X] 우승자 정보 얻기 사용자 입력 유효성 검사 diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index a1c113dd..dacde22f 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class Game { private final List raceCars; @@ -36,6 +37,12 @@ public Boolean isGameEnd(){ return trial == this.trialNumber; } + public List getWinners() { + return raceCars.stream() + .filter(c -> c.getPosition() == getMaxPosition(raceCars)) + .collect(Collectors.toList()); + } + private void increaseTrialNumber(){ this.trialNumber += 1; } From abb32da5bb8226c8d73932bb3bb577103be58f57 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:58:01 +0900 Subject: [PATCH 13/42] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20parser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/utils/Parser.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/utils/Parser.java diff --git a/README.md b/README.md index c9ef2b8c..726e8c98 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,6 @@ - [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) ### utils -- [ ] 자동차 이름 parser +- [X] 자동차 이름 parser - [ ] 시도 횟수 parser - [ ] 난수 생성기 \ No newline at end of file diff --git a/src/main/java/racingcar/utils/Parser.java b/src/main/java/racingcar/utils/Parser.java new file mode 100644 index 00000000..4f79a678 --- /dev/null +++ b/src/main/java/racingcar/utils/Parser.java @@ -0,0 +1,7 @@ +package racingcar.utils; + +public class Parser { + public static String[] parseCarName(String input){ + return input.split(","); + } +} From b8a335fba38c2800907cea62c7bdd2fa2714b9e3 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 11:59:00 +0900 Subject: [PATCH 14/42] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20parser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/utils/Parser.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 726e8c98..61f5855e 100644 --- a/README.md +++ b/README.md @@ -50,5 +50,5 @@ ### utils - [X] 자동차 이름 parser -- [ ] 시도 횟수 parser +- [X] 시도 횟수 parser - [ ] 난수 생성기 \ No newline at end of file diff --git a/src/main/java/racingcar/utils/Parser.java b/src/main/java/racingcar/utils/Parser.java index 4f79a678..cc52ab25 100644 --- a/src/main/java/racingcar/utils/Parser.java +++ b/src/main/java/racingcar/utils/Parser.java @@ -4,4 +4,8 @@ public class Parser { public static String[] parseCarName(String input){ return input.split(","); } + + public static int parseTrialNumber(String input){ + return Integer.parseInt(input); + } } From 953b01530abbdac01285d126db9bd6e0b16a74a5 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:00:11 +0900 Subject: [PATCH 15/42] =?UTF-8?q?feat:=20=EB=82=9C=EC=88=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/model/Game.java | 2 ++ .../java/racingcar/utils/RandomNumberGenerator.java | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/utils/RandomNumberGenerator.java diff --git a/README.md b/README.md index 61f5855e..343a1969 100644 --- a/README.md +++ b/README.md @@ -51,4 +51,4 @@ ### utils - [X] 자동차 이름 parser - [X] 시도 횟수 parser -- [ ] 난수 생성기 \ No newline at end of file +- [X] 난수 생성기 \ No newline at end of file diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index dacde22f..c3c3a4d1 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -1,5 +1,7 @@ package racingcar.model; +import racingcar.utils.RandomNumberGenerator; + import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/racingcar/utils/RandomNumberGenerator.java b/src/main/java/racingcar/utils/RandomNumberGenerator.java new file mode 100644 index 00000000..daaa0ac6 --- /dev/null +++ b/src/main/java/racingcar/utils/RandomNumberGenerator.java @@ -0,0 +1,10 @@ +package racingcar.utils; + +import java.util.Random; + +public class RandomNumberGenerator { + public static int generate(){ + Random random = new Random(); + return random.nextInt(10); + } +} From bcccc791554ff79d0c429b8d34637bf3401caef9 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:02:04 +0900 Subject: [PATCH 16/42] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9E=85=EB=A0=A5=20=EC=9C=A0=ED=9A=A8?= =?UTF-8?q?=EC=84=B1=20=EA=B2=80=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +-- src/main/java/racingcar/model/Validator.java | 22 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/main/java/racingcar/model/Validator.java diff --git a/README.md b/README.md index 343a1969..c79a576f 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,8 @@ - [X] 최대 위치 얻기 - [X] 우승자 정보 얻기 - 사용자 입력 유효성 검사 -- [ ] 자동차 이름 입력 유효성 검사 +- [X] 자동차 이름 입력 유효성 검사 - [ ] 시도 횟수 입력 유효성 검사 ### view diff --git a/src/main/java/racingcar/model/Validator.java b/src/main/java/racingcar/model/Validator.java new file mode 100644 index 00000000..416c318f --- /dev/null +++ b/src/main/java/racingcar/model/Validator.java @@ -0,0 +1,22 @@ +package racingcar.model; + +import java.util.HashSet; +import java.util.Set; + +public class Validator { + public void checkCarsName(String carsName){ + if (carsName.endsWith(",")) { + throw new IllegalArgumentException("입력 문자열의 마지막 문자가 ','일 수 없습니다."); + } + String[] names = carsName.split(","); + Set carSet = new HashSet<>(); + for (String name : names) { + if (name.length() > 5 || name.isEmpty()) { + throw new IllegalArgumentException("자동차 이름은 1 ~ 5글자로 입력해주세요."); + } + if (!carSet.add(name)) { + throw new IllegalArgumentException("자동차 이름은 중복될 수 없습니다."); + } + } + } +} From 59bd8139fc9f791ec8cd415b8ae853d56393d216 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:02:50 +0900 Subject: [PATCH 17/42] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20?= =?UTF-8?q?=EA=B2=80=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/model/Validator.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c79a576f..39e9b2e4 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ 사용자 입력 유효성 검사 - [X] 자동차 이름 입력 유효성 검사 -- [ ] 시도 횟수 입력 유효성 검사 +- [X] 시도 횟수 입력 유효성 검사 ### view 입력 diff --git a/src/main/java/racingcar/model/Validator.java b/src/main/java/racingcar/model/Validator.java index 416c318f..90713455 100644 --- a/src/main/java/racingcar/model/Validator.java +++ b/src/main/java/racingcar/model/Validator.java @@ -19,4 +19,16 @@ public void checkCarsName(String carsName){ } } } + + public void checkTrialNumber(String trialNumberInput){ + int trialNumber; + try{ + trialNumber = Integer.parseInt(trialNumberInput); + } catch (NumberFormatException e){ + throw new IllegalArgumentException("1 이상 2,147,483,647 이하의 자연수를 입력해주세요."); + } + if(trialNumber < 1){ + throw new IllegalArgumentException("1 이상 2,147,483,647 이하의 자연수를 입력해주세요."); + } + } } From fde0098b1493b525ea290a02083b68e3824abf8f Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:04:20 +0900 Subject: [PATCH 18/42] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/view/InputView.java | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/view/InputView.java diff --git a/README.md b/README.md index 39e9b2e4..9d432ff1 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ ### view 입력 -- [ ] 자동차 이름 입력 +- [X] 자동차 이름 입력 - [ ] 시도 횟수 입력 출력 diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java new file mode 100644 index 00000000..2e105835 --- /dev/null +++ b/src/main/java/racingcar/view/InputView.java @@ -0,0 +1,20 @@ +package racingcar.view; + +import java.util.Scanner; + +public class InputView { + private final Scanner scanner; + + public InputView() { + this.scanner = new Scanner(System.in); + } + + public String requestCarNamesMessage() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + return getUserInput(); + } + + private String getUserInput() { + return scanner.nextLine(); + } +} From 3e7f58f0fc2a2ec92a486808024ddd25e54e957d Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:05:00 +0900 Subject: [PATCH 19/42] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/view/InputView.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d432ff1..bf875d36 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ ### view 입력 - [X] 자동차 이름 입력 -- [ ] 시도 횟수 입력 +- [X] 시도 횟수 입력 출력 - [ ] 실행 결과 출력 diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 2e105835..b5447fa3 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -14,6 +14,11 @@ public String requestCarNamesMessage() { return getUserInput(); } + public String requestTrialNumberMessage() { + System.out.println("시도할 횟수는 몇회인가요?"); + return getUserInput(); + } + private String getUserInput() { return scanner.nextLine(); } From cb867a2824865fd4c050215fea97c2f174a9da89 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:06:35 +0900 Subject: [PATCH 20/42] =?UTF-8?q?feat:=20=EC=8B=A4=ED=96=89=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/view/OutputView.java | 31 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/view/OutputView.java diff --git a/README.md b/README.md index bf875d36..dc2b1e32 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ - [X] 시도 횟수 입력 출력 -- [ ] 실행 결과 출력 +- [X] 실행 결과 출력 - [ ] 우승자 출력 ### controller diff --git a/src/main/java/racingcar/view/OutputView.java b/src/main/java/racingcar/view/OutputView.java new file mode 100644 index 00000000..c82f636b --- /dev/null +++ b/src/main/java/racingcar/view/OutputView.java @@ -0,0 +1,31 @@ +package racingcar.view; + +import racingcar.model.Car; + +import java.util.List; + +public class OutputView { + public static void printHead(){ + System.out.println(); + System.out.println("실행 결과"); + } + + public static void printScore(List cars){ + for(Car car : cars) { + printCarScore(car); + } + System.out.println(); + } + + public static void printCarScore(Car car){ + System.out.print(car.getName()+" : "); + printCarPosition(car); + System.out.println(); + } + + public static void printCarPosition(Car car){ + for(int i=0; i Date: Mon, 10 Jun 2024 12:08:06 +0900 Subject: [PATCH 21/42] =?UTF-8?q?feat:=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/view/OutputView.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dc2b1e32..eddf89ba 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ 출력 - [X] 실행 결과 출력 -- [ ] 우승자 출력 +- [X] 우승자 출력 ### controller - [ ] 자동차 이름 유효성 검사 diff --git a/src/main/java/racingcar/view/OutputView.java b/src/main/java/racingcar/view/OutputView.java index c82f636b..47f1b90a 100644 --- a/src/main/java/racingcar/view/OutputView.java +++ b/src/main/java/racingcar/view/OutputView.java @@ -17,6 +17,16 @@ public static void printScore(List cars){ System.out.println(); } + public static void printWinners(List winners){ + StringBuilder winnerNames = new StringBuilder("최종 우승자 : "); + for(Car car : winners){ + winnerNames.append(car.getName()).append(", "); + } + int length = winnerNames.length(); + String result = winnerNames.substring(0, length - 2); + System.out.print(result); + } + public static void printCarScore(Car car){ System.out.print(car.getName()+" : "); printCarPosition(car); From 9d4b85548f3502276bc1f6b4ca46117666ddd025 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:10:57 +0900 Subject: [PATCH 22/42] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20=EA=B2=80?= =?UTF-8?q?=EC=82=AC=20=EB=B0=8F=20=EC=9E=85=EB=A0=A5=20=EB=B0=9B=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- .../java/racingcar/controller/Controller.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/main/java/racingcar/controller/Controller.java diff --git a/README.md b/README.md index eddf89ba..2dc55b37 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,8 @@ - [X] 우승자 출력 ### controller -- [ ] 자동차 이름 유효성 검사 -- [ ] 시도 횟수 유효성 검사 +- [X] 자동차 이름 유효성 검사 및 입력 받기 +- [ ] 시도 횟수 유효성 검사 및 입력 받기 - [ ] 경주 자동차 등록 - [ ] 시도 횟수 설정 - [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) diff --git a/src/main/java/racingcar/controller/Controller.java b/src/main/java/racingcar/controller/Controller.java new file mode 100644 index 00000000..fb85fd25 --- /dev/null +++ b/src/main/java/racingcar/controller/Controller.java @@ -0,0 +1,24 @@ +package racingcar.controller; + +import racingcar.model.Validator; +import racingcar.view.InputView; + +public class Controller { + private final Validator validator = new Validator(); + private final InputView inputView = new InputView(); + + private String getCarNamesUserInput() { + String input = inputView.requestCarNamesMessage(); + return checkValidationCarNames(input); + } + + private String checkValidationCarNames(String input) { + try { + validator.checkCarsName(input); + return input; + } catch (IllegalArgumentException e) { + System.out.println("[ERROR] " + e.getMessage()); + return getCarNamesUserInput(); + } + } +} From f040f34709fb433af179334ad9a2677b9b48c472 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:11:38 +0900 Subject: [PATCH 23/42] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=20?= =?UTF-8?q?=EB=B0=8F=20=EC=9E=85=EB=A0=A5=20=EB=B0=9B=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../java/racingcar/controller/Controller.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2dc55b37..3bf01766 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ ### controller - [X] 자동차 이름 유효성 검사 및 입력 받기 -- [ ] 시도 횟수 유효성 검사 및 입력 받기 +- [X] 시도 횟수 유효성 검사 및 입력 받기 - [ ] 경주 자동차 등록 - [ ] 시도 횟수 설정 - [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) diff --git a/src/main/java/racingcar/controller/Controller.java b/src/main/java/racingcar/controller/Controller.java index fb85fd25..854c41fa 100644 --- a/src/main/java/racingcar/controller/Controller.java +++ b/src/main/java/racingcar/controller/Controller.java @@ -21,4 +21,19 @@ private String checkValidationCarNames(String input) { return getCarNamesUserInput(); } } + + private String getTrialNumberUserInput() { + String input = inputView.requestTrialNumberMessage(); + return checkValidationTrialNumber(input); + } + + private String checkValidationTrialNumber(String input) { + try { + validator.checkTrialNumber(input); + return input; + } catch (IllegalArgumentException e) { + System.out.println("[ERROR] " + e.getMessage()); + return getTrialNumberUserInput(); + } + } } From 9de8d7ea7abbe35be12bc7fe480b34b0655abc05 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:12:23 +0900 Subject: [PATCH 24/42] =?UTF-8?q?feat:=20=EA=B2=BD=EC=A3=BC=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=EC=B0=A8=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/racingcar/controller/Controller.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bf01766..de8001e4 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ ### controller - [X] 자동차 이름 유효성 검사 및 입력 받기 - [X] 시도 횟수 유효성 검사 및 입력 받기 -- [ ] 경주 자동차 등록 +- [X] 경주 자동차 등록 - [ ] 시도 횟수 설정 - [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) diff --git a/src/main/java/racingcar/controller/Controller.java b/src/main/java/racingcar/controller/Controller.java index 854c41fa..355a4814 100644 --- a/src/main/java/racingcar/controller/Controller.java +++ b/src/main/java/racingcar/controller/Controller.java @@ -1,12 +1,18 @@ package racingcar.controller; +import racingcar.model.Game; import racingcar.model.Validator; +import racingcar.utils.Parser; import racingcar.view.InputView; public class Controller { private final Validator validator = new Validator(); private final InputView inputView = new InputView(); + private void registerRaceCar(Game game){ + game.setRaceCars(Parser.parseCarName(getCarNamesUserInput())); + } + private String getCarNamesUserInput() { String input = inputView.requestCarNamesMessage(); return checkValidationCarNames(input); From 5ed0d6c1c0daf1a91580e5efdecf11d1c0bc6153 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:14:00 +0900 Subject: [PATCH 25/42] =?UTF-8?q?feat:=20=EA=B2=BD=EC=A3=BC=20=EC=A7=84?= =?UTF-8?q?=ED=96=89(=EC=9E=85=EB=A0=A5=20=EC=B2=98=EB=A6=AC,=20=EA=B2=BD?= =?UTF-8?q?=EC=A3=BC=20=EC=8B=9C=EC=9E=91,=20=EC=9A=B0=EC=8A=B9=EC=9E=90?= =?UTF-8?q?=20=EC=B6=9C=EB=A0=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +-- .../java/racingcar/controller/Controller.java | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de8001e4..8eed3fd1 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,8 @@ - [X] 자동차 이름 유효성 검사 및 입력 받기 - [X] 시도 횟수 유효성 검사 및 입력 받기 - [X] 경주 자동차 등록 -- [ ] 시도 횟수 설정 -- [ ] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) +- [X] 시도 횟수 설정 +- [X] 경주 진행 (입력 처리, 경주 시작, 우승자 출력) ### utils - [X] 자동차 이름 parser diff --git a/src/main/java/racingcar/controller/Controller.java b/src/main/java/racingcar/controller/Controller.java index 355a4814..af120d54 100644 --- a/src/main/java/racingcar/controller/Controller.java +++ b/src/main/java/racingcar/controller/Controller.java @@ -4,15 +4,40 @@ import racingcar.model.Validator; import racingcar.utils.Parser; import racingcar.view.InputView; +import racingcar.view.OutputView; public class Controller { private final Validator validator = new Validator(); private final InputView inputView = new InputView(); + public void run(){ + play(createGame()); + } + + private Game createGame(){ + Game game = new Game(); + registerRaceCar(game); + setTrial(game); + return game; + } + + private void play(Game game){ + OutputView.printHead(); + while(!game.isGameEnd()){ + game.play(); + OutputView.printScore(game.getRaceCars()); + } + OutputView.printWinners(game.getWinners()); + } + private void registerRaceCar(Game game){ game.setRaceCars(Parser.parseCarName(getCarNamesUserInput())); } + private void setTrial(Game game){ + game.setTrial(Parser.parseTrialNumber(getTrialNumberUserInput())); + } + private String getCarNamesUserInput() { String input = inputView.requestCarNamesMessage(); return checkValidationCarNames(input); From c5ed77525f6ddef2f46fc537e9c4d52dfbb83a3b Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:15:08 +0900 Subject: [PATCH 26/42] =?UTF-8?q?add:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EA=B2=BD=EC=A3=BC=20=EA=B2=8C=EC=9E=84=20=EC=8B=A4=ED=96=89=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=EC=A0=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index c2b9df59..6afd456d 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,10 @@ package racingcar; +import racingcar.controller.Controller; + public class Application { public static void main(String[] args) { - + Controller controller = new Controller(); + controller.run(); } } From 9d2f513f11a1244e617330e20ed95a7bdae0af34 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:40:49 +0900 Subject: [PATCH 27/42] =?UTF-8?q?add:=20Validator=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/CarTest.java | 2 + .../java/racingcar/model/ValidatorTest.java | 56 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/test/java/racingcar/model/CarTest.java create mode 100644 src/test/java/racingcar/model/ValidatorTest.java diff --git a/src/test/java/racingcar/model/CarTest.java b/src/test/java/racingcar/model/CarTest.java new file mode 100644 index 00000000..d65f3288 --- /dev/null +++ b/src/test/java/racingcar/model/CarTest.java @@ -0,0 +1,2 @@ +package racingcar.model;public class CarTest { +} diff --git a/src/test/java/racingcar/model/ValidatorTest.java b/src/test/java/racingcar/model/ValidatorTest.java new file mode 100644 index 00000000..5a276fd1 --- /dev/null +++ b/src/test/java/racingcar/model/ValidatorTest.java @@ -0,0 +1,56 @@ +package racingcar.model; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + + +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class ValidatorTest { + private Validator validator = new Validator(); + + @Test + @DisplayName("자동차 이름 파싱 Test") + void 자동차_이름_파싱_TEST(){ + //given + String testInput1 = "a,b,c,"; + String testInput2 = "aaaaaa,b,c"; + String testInput3 = "a,a,c"; + String testInput4 = "a, ,c"; + + // when & then + assertThatThrownBy(() -> validator.checkCarsName(testInput1)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("입력 문자열의 마지막 문자가 ','일 수 없습니다."); + + assertThatThrownBy(() -> validator.checkCarsName(testInput2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("자동차 이름은 1 ~ 5글자로 입력해주세요."); + + assertThatThrownBy(() -> validator.checkCarsName(testInput3)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("자동차 이름은 중복될 수 없습니다."); + + assertThatThrownBy(() -> validator.checkCarsName(testInput4)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("자동차 이름은 1 ~ 5글자로 입력해주세요."); + } + + @Test + @DisplayName("시도 횟수 유효 Test") + void 시도_횟수_유효_TEST(){ + //given + String testNum1 = "2147483699"; + String testNum2 = "-1"; + + //when & then + assertThatThrownBy(() -> validator.checkTrialNumber(testNum1)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("1 이상 2,147,483,647 이하의 자연수만 입력 가능합니다."); + + assertThatThrownBy(() -> validator.checkTrialNumber(testNum2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("1 이상 2,147,483,647 이하의 자연수만 입력 가능합니다."); + } + +} From 84cd99218bdd0b810027c6d34441d8ae7f074f56 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:41:27 +0900 Subject: [PATCH 28/42] =?UTF-8?q?add:=20Car=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/CarTest.java | 38 +++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/test/java/racingcar/model/CarTest.java b/src/test/java/racingcar/model/CarTest.java index d65f3288..17cf87a2 100644 --- a/src/test/java/racingcar/model/CarTest.java +++ b/src/test/java/racingcar/model/CarTest.java @@ -1,2 +1,38 @@ -package racingcar.model;public class CarTest { +package racingcar.model; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class CarTest { + @Test + @DisplayName("Car CLASS 생성 Test") + public void Car_CLASS_생성_TEST() { + //given + Car car = new Car("테스트"); + + //when + + //then + assertThat(car.getName()).isEqualTo("테스트"); + assertThat(car.getPosition()).isEqualTo(0); + } + + @Test + @DisplayName("Car CLASS 이동 Test") + public void Car_이동_TEST() { + //given + Car car = new Car("테스트"); + + //when + car.move(2); + car.move(3); + car.move(4); + car.move(5); + + //then + assertThat(car.getPosition()).isEqualTo(2); + } } + From f7660be0784053a9cbd8c0d0e1c5fdd4f8e47d95 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 12:56:10 +0900 Subject: [PATCH 29/42] =?UTF-8?q?add:=20Game=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Game.java | 4 +- src/test/java/racingcar/model/GameTest.java | 65 +++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/test/java/racingcar/model/GameTest.java diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index c3c3a4d1..af2a3095 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -49,13 +49,13 @@ private void increaseTrialNumber(){ this.trialNumber += 1; } - private void moveForward(){ + public void moveForward(){ for (Car car : raceCars){ car.move(RandomNumberGenerator.generate()); } } - private int getMaxPosition(List cars){ + public int getMaxPosition(List cars){ return cars.stream() .mapToInt(Car::getPosition) .max() diff --git a/src/test/java/racingcar/model/GameTest.java b/src/test/java/racingcar/model/GameTest.java new file mode 100644 index 00000000..a5e37c1f --- /dev/null +++ b/src/test/java/racingcar/model/GameTest.java @@ -0,0 +1,65 @@ +package racingcar.model; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class GameTest { + private Game game = new Game(); + @Test + @DisplayName("경주 참여 자동차 등록 Test") + void 경주_참여_자동차_등록_TEST(){ + //given + String[] carsName = {"자동차1", "자동차2"}; + + //when + game.setRaceCars(carsName); + + //then + assertThat(game.getRaceCars().size()).isEqualTo(2); + } + + @Test + @DisplayName("경주 우승자 위치 GET Test") + void 경주_우승자_위치_GET_TEST(){ + //given + String[] carsName = {"자동차1", "자동차2"}; + game.setRaceCars(carsName); + + //when + for(int i=0; i<5; i++){ + game.getRaceCars().get(0).move(i); + } + + for(int i=0; i<5; i++){ + game.getRaceCars().get(1).move(i+3); + } + + //then + assertThat(game.getMaxPosition(game.getRaceCars())).isEqualTo(4); + } + + @Test + @DisplayName("경주 우승자 정보 GET Test") + void 경주_우승자_정보_GET_TEST(){ + //given + String[] carsName = {"자동차1", "자동차2", "자동차3"}; + game.setRaceCars(carsName); + + //when + for(int i=0; i<5; i++){ + game.getRaceCars().get(0).move(i); + } + + for(int i=0; i<5; i++){ + game.getRaceCars().get(1).move(i+3); + game.getRaceCars().get(2).move(i+3); + } + + //then + assertThat(game.getWinners().size()).isEqualTo(2); + assertThat(game.getWinners().get(0).getName()).isEqualTo("자동차2"); + assertThat(game.getWinners().get(1).getName()).isEqualTo("자동차3"); + } +} From 7c34bb56a1fda237e1f145306ac90bd9c7f03ed4 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 15:43:50 +0900 Subject: [PATCH 30/42] =?UTF-8?q?fix:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EA=B3=B5=EB=B0=B1=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Validator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/model/Validator.java b/src/main/java/racingcar/model/Validator.java index 90713455..22ed0f37 100644 --- a/src/main/java/racingcar/model/Validator.java +++ b/src/main/java/racingcar/model/Validator.java @@ -11,7 +11,7 @@ public void checkCarsName(String carsName){ String[] names = carsName.split(","); Set carSet = new HashSet<>(); for (String name : names) { - if (name.length() > 5 || name.isEmpty()) { + if (name.trim().isEmpty() || name.length() > 5) { throw new IllegalArgumentException("자동차 이름은 1 ~ 5글자로 입력해주세요."); } if (!carSet.add(name)) { From 2f2d9bb4de65542e29046d1cd18763b82fc2d680 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 15:58:45 +0900 Subject: [PATCH 31/42] =?UTF-8?q?test:=20ValidatorTest=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/ValidatorTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/racingcar/model/ValidatorTest.java b/src/test/java/racingcar/model/ValidatorTest.java index 5a276fd1..f09546c5 100644 --- a/src/test/java/racingcar/model/ValidatorTest.java +++ b/src/test/java/racingcar/model/ValidatorTest.java @@ -46,11 +46,11 @@ public class ValidatorTest { //when & then assertThatThrownBy(() -> validator.checkTrialNumber(testNum1)) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("1 이상 2,147,483,647 이하의 자연수만 입력 가능합니다."); + .hasMessage("1 이상 2,147,483,647 이하의 자연수를 입력해주세요."); assertThatThrownBy(() -> validator.checkTrialNumber(testNum2)) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("1 이상 2,147,483,647 이하의 자연수만 입력 가능합니다."); + .hasMessage("1 이상 2,147,483,647 이하의 자연수를 입력해주세요."); } } From 3867d1c3ec4e032e5c06b0738dff5578edd21855 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 15:59:56 +0900 Subject: [PATCH 32/42] =?UTF-8?q?chore:=20=EC=BD=94=EB=93=9C=20=ED=98=95?= =?UTF-8?q?=ED=83=9C=20=EC=88=98=EC=A0=95(=EC=8A=A4=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Car.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index 1f226a73..29a2f980 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -15,7 +15,7 @@ public String getName(){ } public int getPosition(){ - return position; + return position; } public void move(int condition){ From 89b6299da106d82fe4b6aaaccb7e2024fde4edb5 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:00:58 +0900 Subject: [PATCH 33/42] =?UTF-8?q?refactor:=20=EC=B0=A8=EB=9F=89=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99=20=EB=B0=8F=20=EA=B2=8C=EC=9E=84=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=A6=9D=EA=B0=80=20Controller=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/racingcar/controller/Controller.java | 10 +++++++-- src/main/java/racingcar/model/Game.java | 21 +++++++------------ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main/java/racingcar/controller/Controller.java b/src/main/java/racingcar/controller/Controller.java index af120d54..d23da3af 100644 --- a/src/main/java/racingcar/controller/Controller.java +++ b/src/main/java/racingcar/controller/Controller.java @@ -1,11 +1,16 @@ package racingcar.controller; +import racingcar.model.Car; import racingcar.model.Game; import racingcar.model.Validator; import racingcar.utils.Parser; import racingcar.view.InputView; import racingcar.view.OutputView; +import java.util.List; + +import static racingcar.utils.Parser.parseTrialNumber; + public class Controller { private final Validator validator = new Validator(); private final InputView inputView = new InputView(); @@ -24,7 +29,8 @@ private Game createGame(){ private void play(Game game){ OutputView.printHead(); while(!game.isGameEnd()){ - game.play(); + game.moveForward(); + game.increaseTrialNumber(); OutputView.printScore(game.getRaceCars()); } OutputView.printWinners(game.getWinners()); @@ -35,7 +41,7 @@ private void registerRaceCar(Game game){ } private void setTrial(Game game){ - game.setTrial(Parser.parseTrialNumber(getTrialNumberUserInput())); + game.setTrial(parseTrialNumber(getTrialNumberUserInput())); } private String getCarNamesUserInput() { diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index af2a3095..9f54cf10 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -30,9 +30,14 @@ public void setTrial(int trial){ Game.trial = trial; } - public void play(){ - moveForward(); - increaseTrialNumber(); + public void moveForward(){ + for (Car car : raceCars){ + car.move(RandomNumberGenerator.generate()); + } + } + + public void increaseTrialNumber(){ + this.trialNumber += 1; } public Boolean isGameEnd(){ @@ -45,16 +50,6 @@ public List getWinners() { .collect(Collectors.toList()); } - private void increaseTrialNumber(){ - this.trialNumber += 1; - } - - public void moveForward(){ - for (Car car : raceCars){ - car.move(RandomNumberGenerator.generate()); - } - } - public int getMaxPosition(List cars){ return cars.stream() .mapToInt(Car::getPosition) From a1032b97915f6c630b1bac2bd5a681f0ae95e764 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:11:33 +0900 Subject: [PATCH 34/42] =?UTF-8?q?feat:=20add=20=EC=8B=9C=EB=8F=84=20?= =?UTF-8?q?=ED=9A=9F=EC=88=98,=20=EC=88=98=ED=96=89=20=ED=9A=9F=EC=88=98?= =?UTF-8?q?=20getter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Game.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 9f54cf10..11e65c2d 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -20,6 +20,14 @@ public List getRaceCars(){ return raceCars; } + public int getTrial(){ + return trial; + } + + public int getTrialNumber(){ + return trialNumber; + } + public void setRaceCars(String[] carsName){ for (String s : carsName) { raceCars.add(new Car(s)); From 71315f65da2975cda10b2a58f1fc7732b61c8758 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:16:02 +0900 Subject: [PATCH 35/42] =?UTF-8?q?test:=20add=20=EC=8B=9C=EB=8F=84=20?= =?UTF-8?q?=ED=9A=9F=EC=88=98=20=EC=84=A4=EC=A0=95=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/GameTest.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/test/java/racingcar/model/GameTest.java b/src/test/java/racingcar/model/GameTest.java index a5e37c1f..fd93b3b9 100644 --- a/src/test/java/racingcar/model/GameTest.java +++ b/src/test/java/racingcar/model/GameTest.java @@ -8,8 +8,8 @@ public class GameTest { private Game game = new Game(); @Test - @DisplayName("경주 참여 자동차 등록 Test") - void 경주_참여_자동차_등록_TEST(){ + @DisplayName("경주 자동차 등록 Test") + void 경주_자동차_등록_TEST(){ //given String[] carsName = {"자동차1", "자동차2"}; @@ -20,6 +20,19 @@ public class GameTest { assertThat(game.getRaceCars().size()).isEqualTo(2); } + @Test + @DisplayName("시도 횟수 설정 Test") + void 시도_횟수_설정_TEST(){ + //given + int trial = 4; + + //when + game.setTrial(trial); + + //then + assertThat(game.getTrial()).isEqualTo(4); + } + @Test @DisplayName("경주 우승자 위치 GET Test") void 경주_우승자_위치_GET_TEST(){ From f94746a09e28ea1cea62783fc997316328bfd247 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:22:12 +0900 Subject: [PATCH 36/42] =?UTF-8?q?test:=20add=20=EC=88=98=ED=96=89=20?= =?UTF-8?q?=ED=9A=9F=EC=88=98=20=EC=A6=9D=EA=B0=80=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/GameTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/java/racingcar/model/GameTest.java b/src/test/java/racingcar/model/GameTest.java index fd93b3b9..895a430c 100644 --- a/src/test/java/racingcar/model/GameTest.java +++ b/src/test/java/racingcar/model/GameTest.java @@ -33,6 +33,20 @@ public class GameTest { assertThat(game.getTrial()).isEqualTo(4); } + @Test + @DisplayName("수행 횟수 증가 Test") + void 수행_횟수_증가_TEST(){ + //given + + //when + for(int i=0; i<5; i++){ + game.increaseTrialNumber(); + } + + //then + assertThat(game.getTrialNumber()).isEqualTo(5); + } + @Test @DisplayName("경주 우승자 위치 GET Test") void 경주_우승자_위치_GET_TEST(){ From 82e8864d2544468715766cf1094e844a58fe6198 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:31:17 +0900 Subject: [PATCH 37/42] =?UTF-8?q?fix:=20=EA=B2=8C=EC=9E=84=20=EC=A2=85?= =?UTF-8?q?=EB=A3=8C=20=ED=8C=90=EB=8B=A8=20method=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Game.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/model/Game.java b/src/main/java/racingcar/model/Game.java index 11e65c2d..d20a0667 100644 --- a/src/main/java/racingcar/model/Game.java +++ b/src/main/java/racingcar/model/Game.java @@ -49,7 +49,7 @@ public void increaseTrialNumber(){ } public Boolean isGameEnd(){ - return trial == this.trialNumber; + return trial <= this.trialNumber; } public List getWinners() { From ce7fc081ecc4c8d15189d6e734a13de28b8d9f5e Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:40:27 +0900 Subject: [PATCH 38/42] =?UTF-8?q?test:=20add=20=EA=B2=BD=EC=A3=BC=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=EC=A2=85=EB=A3=8C=20=EC=97=AC=EB=B6=80=20?= =?UTF-8?q?test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/GameTest.java | 37 +++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/test/java/racingcar/model/GameTest.java b/src/test/java/racingcar/model/GameTest.java index 895a430c..295f725b 100644 --- a/src/test/java/racingcar/model/GameTest.java +++ b/src/test/java/racingcar/model/GameTest.java @@ -48,8 +48,41 @@ public class GameTest { } @Test - @DisplayName("경주 우승자 위치 GET Test") - void 경주_우승자_위치_GET_TEST(){ + @DisplayName("경주 게임 종료 여부 True Test") + void 경주_게임_종료_여부_TRUE_TEST(){ + // given + game.setTrial(4); + for(int i=0; i<4; i++){ + game.increaseTrialNumber(); + } + + // when + Boolean result = game.isGameEnd(); + + // then + assertThat(result).isTrue(); + } + + @Test + @DisplayName("경주 게임 종료 여부 False Test") + void 경주_게임_종료_여부_FALSE_TEST(){ + // given + game.setTrial(4); + for(int i=0; i<2; i++){ + game.increaseTrialNumber(); + } + + // when + Boolean result = game.isGameEnd(); + + // then + assertThat(result).isFalse(); + } + + + @Test + @DisplayName("자동차 최대 위치 GET Test") + void 자동차_최대_위치_GET_TEST(){ //given String[] carsName = {"자동차1", "자동차2"}; game.setRaceCars(carsName); From 88295000f833bffd31f7a14ce9687ca2793f3d8e Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:41:37 +0900 Subject: [PATCH 39/42] =?UTF-8?q?test:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9C=A0=ED=9A=A8=20test=EB=A1=9C=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9D=B4=EB=A6=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/model/ValidatorTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/racingcar/model/ValidatorTest.java b/src/test/java/racingcar/model/ValidatorTest.java index f09546c5..83a2bc99 100644 --- a/src/test/java/racingcar/model/ValidatorTest.java +++ b/src/test/java/racingcar/model/ValidatorTest.java @@ -10,8 +10,8 @@ public class ValidatorTest { private Validator validator = new Validator(); @Test - @DisplayName("자동차 이름 파싱 Test") - void 자동차_이름_파싱_TEST(){ + @DisplayName("자동차 이름 유효 Test") + void 자동차_이름_유효_TEST(){ //given String testInput1 = "a,b,c,"; String testInput2 = "aaaaaa,b,c"; From e31b6820368e4915d4753d4c12e590aa3019b68f Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 16:50:03 +0900 Subject: [PATCH 40/42] =?UTF-8?q?chore:=20UTF-8=20=EC=84=A4=EC=A0=95=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 --- build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build.gradle b/build.gradle index 20a92c9e..bb9dd494 100644 --- a/build.gradle +++ b/build.gradle @@ -23,3 +23,8 @@ dependencies { test { useJUnitPlatform() } + +/* 제 PC에서는 추가하지 않으면 실행되지 않아서 추가했습니다. */ +tasks.withType(JavaCompile){ + options.encoding = "UTF-8" +} \ No newline at end of file From 8dbb3c7f15e012556de7f943ab88258914b21b73 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 17:06:19 +0900 Subject: [PATCH 41/42] =?UTF-8?q?refactor:=20Parser=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=83=9D=EB=9E=B5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/controller/Controller.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/controller/Controller.java b/src/main/java/racingcar/controller/Controller.java index d23da3af..bb5f0acf 100644 --- a/src/main/java/racingcar/controller/Controller.java +++ b/src/main/java/racingcar/controller/Controller.java @@ -41,7 +41,7 @@ private void registerRaceCar(Game game){ } private void setTrial(Game game){ - game.setTrial(parseTrialNumber(getTrialNumberUserInput())); + game.setTrial(Parser.parseTrialNumber(getTrialNumberUserInput())); } private String getCarNamesUserInput() { From d6e1adbe5b5f4e664b3f2d486ed0057ef8142145 Mon Sep 17 00:00:00 2001 From: wvssm Date: Mon, 10 Jun 2024 17:21:12 +0900 Subject: [PATCH 42/42] =?UTF-8?q?docs:=20README=20=EA=B2=8C=EC=9E=84=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=82=B4=EC=9A=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8eed3fd1..d6b229a3 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ - [X] 시도 횟수 설정 - [X] 경주 자동차 이동 - [X] 현재 실행 횟수 증가 -- [X] 현재 실행 횟수와 목표 실행 횟수 비교 +- [X] 현재 실행 횟수와 시도 횟수 비교 - [X] 최대 위치 얻기 - [X] 우승자 정보 얻기