From 5fb5b651c6b280dde762545ac44df16dd88e5c9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Sun, 26 Feb 2023 17:35:12 +0900 Subject: [PATCH 1/9] =?UTF-8?q?feat(young2)=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=845=EC=9E=90=20=EC=9D=B4=ED=95=98=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/game/Car.java | 10 ++++++++++ src/main/java/game/CarName.java | 14 ++++++++++++++ src/test/java/game/CarTest.java | 16 ++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 src/main/java/game/Car.java create mode 100644 src/main/java/game/CarName.java create mode 100644 src/test/java/game/CarTest.java diff --git a/src/main/java/game/Car.java b/src/main/java/game/Car.java new file mode 100644 index 000000000..9ccf5a38f --- /dev/null +++ b/src/main/java/game/Car.java @@ -0,0 +1,10 @@ +package game; + +public class Car { + // private String carName; + public CarName carName; + + public Car(String carName) { + this.carName = new CarName(carName); + } +} diff --git a/src/main/java/game/CarName.java b/src/main/java/game/CarName.java new file mode 100644 index 000000000..277697935 --- /dev/null +++ b/src/main/java/game/CarName.java @@ -0,0 +1,14 @@ +package game; + +public class CarName { + + private final int MAX_LEN = 5; + private String carName; + public CarName(String carName) { + if (carName.length() > MAX_LEN) { + throw new IllegalArgumentException("자동차 이름의 길이는 5보다 작아야 합니다."); + } + this.carName = carName; + } + +} diff --git a/src/test/java/game/CarTest.java b/src/test/java/game/CarTest.java new file mode 100644 index 000000000..c10dff905 --- /dev/null +++ b/src/test/java/game/CarTest.java @@ -0,0 +1,16 @@ +package game; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.*; + +public class CarTest { + + @Test + void carname_5자이하() { + Car car = new Car("pobi"); + assertThat(car).isNotNull(); + } + +} From 39dbcde2d40460208afc94efe81ffda748ea9470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Mon, 27 Feb 2023 00:26:28 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat(young)=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 --- src/main/java/game/Car.java | 10 ------ src/main/java/game/domain/Car.java | 29 +++++++++++++++ src/main/java/game/domain/CarPosition.java | 17 +++++++++ src/main/java/game/domain/CarRacingGame.java | 2 ++ src/main/java/game/domain/Cars.java | 2 ++ src/main/java/game/{ => utils}/CarName.java | 5 ++- src/test/java/game/CarTest.java | 16 --------- src/test/java/game/domain/CarTest.java | 37 ++++++++++++++++++++ 8 files changed, 89 insertions(+), 29 deletions(-) delete mode 100644 src/main/java/game/Car.java create mode 100644 src/main/java/game/domain/Car.java create mode 100644 src/main/java/game/domain/CarPosition.java create mode 100644 src/main/java/game/domain/CarRacingGame.java create mode 100644 src/main/java/game/domain/Cars.java rename src/main/java/game/{ => utils}/CarName.java (82%) delete mode 100644 src/test/java/game/CarTest.java create mode 100644 src/test/java/game/domain/CarTest.java diff --git a/src/main/java/game/Car.java b/src/main/java/game/Car.java deleted file mode 100644 index 9ccf5a38f..000000000 --- a/src/main/java/game/Car.java +++ /dev/null @@ -1,10 +0,0 @@ -package game; - -public class Car { - // private String carName; - public CarName carName; - - public Car(String carName) { - this.carName = new CarName(carName); - } -} diff --git a/src/main/java/game/domain/Car.java b/src/main/java/game/domain/Car.java new file mode 100644 index 000000000..569254d31 --- /dev/null +++ b/src/main/java/game/domain/Car.java @@ -0,0 +1,29 @@ +package game.domain; + +import game.utils.CarName; + +public class Car { + private final int MAX_MOVE = 9; + private final int MIN_MOVE = 4; + private CarName carName; + private int position; + + public Car(String carName) { + this.carName = new CarName(carName); + } + + public Car(int position) { + this.position = position; + } + + public int move(int distance) { + validPosition(distance); + return this.position += 1; + } + + private void validPosition(int position) { + if (position > MAX_MOVE || position < MIN_MOVE) { + throw new IllegalArgumentException("자동차는 최대 4이상 9이하 만큼만 움직일 수 있습니다."); + } + } +} diff --git a/src/main/java/game/domain/CarPosition.java b/src/main/java/game/domain/CarPosition.java new file mode 100644 index 000000000..8e16bc9b4 --- /dev/null +++ b/src/main/java/game/domain/CarPosition.java @@ -0,0 +1,17 @@ +package game; + +public class CarPosition { + +// private final int MAX_MOVE = 9; +// private final int MIN_MOVE = 0; +// +// private int moveNum; +// +// protected CarPosition(int moveNum) { +// if (moveNum > MAX_MOVE || moveNum < MIN_MOVE) { +// throw new IllegalArgumentException("자동차는 최대 0이상 9이하 만큼만 움직일 수 있습니다."); +// } +// this.moveNum = moveNum; +// } + +} diff --git a/src/main/java/game/domain/CarRacingGame.java b/src/main/java/game/domain/CarRacingGame.java new file mode 100644 index 000000000..b14ae5299 --- /dev/null +++ b/src/main/java/game/domain/CarRacingGame.java @@ -0,0 +1,2 @@ +package game.domain;public class CarRacingGame { +} diff --git a/src/main/java/game/domain/Cars.java b/src/main/java/game/domain/Cars.java new file mode 100644 index 000000000..f0dde7b68 --- /dev/null +++ b/src/main/java/game/domain/Cars.java @@ -0,0 +1,2 @@ +package game.domain;public class Cars { +} diff --git a/src/main/java/game/CarName.java b/src/main/java/game/utils/CarName.java similarity index 82% rename from src/main/java/game/CarName.java rename to src/main/java/game/utils/CarName.java index 277697935..eed6c8f20 100644 --- a/src/main/java/game/CarName.java +++ b/src/main/java/game/utils/CarName.java @@ -1,14 +1,13 @@ -package game; +package game.utils; public class CarName { private final int MAX_LEN = 5; private String carName; - public CarName(String carName) { + protected CarName(String carName) { if (carName.length() > MAX_LEN) { throw new IllegalArgumentException("자동차 이름의 길이는 5보다 작아야 합니다."); } this.carName = carName; } - } diff --git a/src/test/java/game/CarTest.java b/src/test/java/game/CarTest.java deleted file mode 100644 index c10dff905..000000000 --- a/src/test/java/game/CarTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package game; - -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.*; - -public class CarTest { - - @Test - void carname_5자이하() { - Car car = new Car("pobi"); - assertThat(car).isNotNull(); - } - -} diff --git a/src/test/java/game/domain/CarTest.java b/src/test/java/game/domain/CarTest.java new file mode 100644 index 000000000..3245641c3 --- /dev/null +++ b/src/test/java/game/domain/CarTest.java @@ -0,0 +1,37 @@ +package game.domain; + +import game.domain.Car; +import org.assertj.core.api.Assertions; +import org.assertj.core.api.ThrowableAssert; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.*; + +public class CarTest { + + private ThrowableAssert.ThrowingCallable IllegalArgumentException; + + @Test + void carname_5자이하() { + Car car = new Car("pobi"); + assertThat(car).isNotNull(); + } + + @Test + void car_move_4이상9이하() { + Car car = new Car(5); + int position = car.move(4); + assertThat(position).isEqualTo(6); + } + + @Test + void car_move_4미만() { + Car car = new Car(5); + assertThatThrownBy(() -> car.move(3)) + .isInstanceOf(java.lang.IllegalArgumentException.class) + .hasMessageContaining("자동차는 최대 4이상 9이하 만큼만 움직일 수 있습니다."); + } + + +} + From 9fc171c19cccfcd57e90a01b1e91df8d6acb290b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 01:44:17 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat(young2)=20=ED=8C=8C=EC=9D=BC=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/game/CarRacingGameMain.java | 30 +++++++++++++++++++++++ src/main/java/game/utils/InputValid.java | 2 ++ src/main/java/game/utils/RandomNum.java | 2 ++ src/main/java/game/views/InputView.java | 2 ++ src/main/java/game/views/OutputView.java | 2 ++ 5 files changed, 38 insertions(+) create mode 100644 src/main/java/game/CarRacingGameMain.java create mode 100644 src/main/java/game/utils/InputValid.java create mode 100644 src/main/java/game/utils/RandomNum.java create mode 100644 src/main/java/game/views/InputView.java create mode 100644 src/main/java/game/views/OutputView.java diff --git a/src/main/java/game/CarRacingGameMain.java b/src/main/java/game/CarRacingGameMain.java new file mode 100644 index 000000000..778dfd880 --- /dev/null +++ b/src/main/java/game/CarRacingGameMain.java @@ -0,0 +1,30 @@ +package game; + +import game.domain.Car; +import game.domain.CarRacingGame; +import game.views.InputView; +import game.views.OutputView; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; +import java.util.Scanner; + +public class RacingMain { + public static void main(String[] args) { + final Scanner scanner = new Scanner(System.in); + // TODO 구현 진행 + + OutputView.printInitCars(); + String carNames = scanner.nextLine(); + if (StringUtils.isBlank(carNames)) { //TODO valid로 넣기 + throw new IllegalArgumentException("자동차 이름을 입력해 주세요."); + } + List carList = InputView.inputCars(carNames); + OutputView.printInitRepete(); + InputView.inputRepete(); + + + OutputView.printRacingCars(carList); + + } +} \ No newline at end of file diff --git a/src/main/java/game/utils/InputValid.java b/src/main/java/game/utils/InputValid.java new file mode 100644 index 000000000..b427152c0 --- /dev/null +++ b/src/main/java/game/utils/InputValid.java @@ -0,0 +1,2 @@ +package game.utils;public class InputValid { +} diff --git a/src/main/java/game/utils/RandomNum.java b/src/main/java/game/utils/RandomNum.java new file mode 100644 index 000000000..6abfa5a79 --- /dev/null +++ b/src/main/java/game/utils/RandomNum.java @@ -0,0 +1,2 @@ +package game.utils;public class RandomPosition { +} diff --git a/src/main/java/game/views/InputView.java b/src/main/java/game/views/InputView.java new file mode 100644 index 000000000..f9779b76e --- /dev/null +++ b/src/main/java/game/views/InputView.java @@ -0,0 +1,2 @@ +package game.views;public class InputView { +} diff --git a/src/main/java/game/views/OutputView.java b/src/main/java/game/views/OutputView.java new file mode 100644 index 000000000..9be100cb2 --- /dev/null +++ b/src/main/java/game/views/OutputView.java @@ -0,0 +1,2 @@ +package game.views;public class OutputView { +} From 305f0599f6614ed9f4adff28d7ed9101bb733ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 02:00:10 +0900 Subject: [PATCH 4/9] =?UTF-8?q?feat(young2)=20:=20Car=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EA=B4=80=EB=A0=A8=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 5 ++- src/main/java/game/domain/Car.java | 28 +++++++++++----- src/main/java/game/domain/CarPosition.java | 33 ++++++++++++------- src/main/java/game/domain/Cars.java | 38 +++++++++++++++++++++- 4 files changed, 82 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index 8172fb73f..db3cac738 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'eclipse' group = 'camp.nextstep' version = '1.0.0' -sourceCompatibility = '1.8' +sourceCompatibility = "11" repositories { mavenCentral() @@ -12,8 +12,11 @@ repositories { dependencies { testImplementation "org.junit.jupiter:junit-jupiter:5.7.2" testImplementation "org.assertj:assertj-core:3.19.0" + implementation 'org.apache.commons:commons-lang3:3.6' + } test { useJUnitPlatform() } +targetCompatibility = JavaVersion.VERSION_11 diff --git a/src/main/java/game/domain/Car.java b/src/main/java/game/domain/Car.java index 569254d31..67eccf549 100644 --- a/src/main/java/game/domain/Car.java +++ b/src/main/java/game/domain/Car.java @@ -1,13 +1,16 @@ package game.domain; + import game.utils.CarName; +import game.utils.InputValid; +import game.utils.RandomNum; public class Car { - private final int MAX_MOVE = 9; - private final int MIN_MOVE = 4; + private CarName carName; private int position; + public Car(String carName) { this.carName = new CarName(carName); } @@ -17,13 +20,22 @@ public Car(int position) { } public int move(int distance) { - validPosition(distance); - return this.position += 1; + if (InputValid.validMove(distance)) { + return plusCarDistance(); + } + return getCarPosition(); } - private void validPosition(int position) { - if (position > MAX_MOVE || position < MIN_MOVE) { - throw new IllegalArgumentException("자동차는 최대 4이상 9이하 만큼만 움직일 수 있습니다."); - } + public String getCarName() { + return carName.getCarName(); } + + public int getCarPosition() { + return this.position; + } + + private int plusCarDistance() { + return this.position += 1; + } + } diff --git a/src/main/java/game/domain/CarPosition.java b/src/main/java/game/domain/CarPosition.java index 8e16bc9b4..6fcce6510 100644 --- a/src/main/java/game/domain/CarPosition.java +++ b/src/main/java/game/domain/CarPosition.java @@ -1,17 +1,26 @@ -package game; +package game.domain; public class CarPosition { -// private final int MAX_MOVE = 9; -// private final int MIN_MOVE = 0; -// -// private int moveNum; -// -// protected CarPosition(int moveNum) { -// if (moveNum > MAX_MOVE || moveNum < MIN_MOVE) { -// throw new IllegalArgumentException("자동차는 최대 0이상 9이하 만큼만 움직일 수 있습니다."); -// } -// this.moveNum = moveNum; -// } + private static final int MAX_RANDOM_NUM = 9; + private static final int MIN_RANDOM_NUM = 0; + private static final int MAX_MOVE_NUM = 9; + private static final int MIN_MOVE = 4; + private int carDistance = 0; + public CarPosition(int moveNum) { + if (MAX_RANDOM_NUM < moveNum || moveNum < MIN_RANDOM_NUM) { + throw new IllegalArgumentException("0이상 9이하에 해당하는 랜덤값이 주어져야 합니다."); + }else if (MIN_MOVE <= moveNum && moveNum <= MAX_MOVE_NUM) { + this.carDistance = this.carDistance + 1; + } + } + + public int getDistance() { + return this.carDistance; + } + + public int plusCarDistance() { + return this.carDistance + 1; + } } diff --git a/src/main/java/game/domain/Cars.java b/src/main/java/game/domain/Cars.java index f0dde7b68..c9562358e 100644 --- a/src/main/java/game/domain/Cars.java +++ b/src/main/java/game/domain/Cars.java @@ -1,2 +1,38 @@ -package game.domain;public class Cars { +package game.domain; + +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.stream.Collectors; + +public class Cars { + + private static List carList; + + public static List carsInit(String[] carNames) { + ArrayList cars = new ArrayList<>(); + for (String carName : carNames) { + cars.add(new Car(carName)); + } + return carList = cars; + } + + public static List findWinners() { + int maxDistance = getMaxDistance(carList); + return carList.stream() + .filter(car -> equalCarsWithMaxDistance(maxDistance, car)) + .collect(Collectors.toList()); + } + + private static boolean equalCarsWithMaxDistance(int maxDistance, Car car) { + return car.getCarPosition() == maxDistance; + } + + private static int getMaxDistance(List carList) { + return carList.stream() + .mapToInt(Car::getCarPosition) + .max() + .orElseThrow(NoSuchElementException::new); + } + } From 3eeee04d154ffcaf5d93c0aaa983d99c326c7497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 02:01:01 +0900 Subject: [PATCH 5/9] =?UTF-8?q?feat(young2)=20car=20position=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/game/domain/CarPosition.java | 26 ---------------------- 1 file changed, 26 deletions(-) delete mode 100644 src/main/java/game/domain/CarPosition.java diff --git a/src/main/java/game/domain/CarPosition.java b/src/main/java/game/domain/CarPosition.java deleted file mode 100644 index 6fcce6510..000000000 --- a/src/main/java/game/domain/CarPosition.java +++ /dev/null @@ -1,26 +0,0 @@ -package game.domain; - -public class CarPosition { - - private static final int MAX_RANDOM_NUM = 9; - private static final int MIN_RANDOM_NUM = 0; - private static final int MAX_MOVE_NUM = 9; - private static final int MIN_MOVE = 4; - private int carDistance = 0; - - public CarPosition(int moveNum) { - if (MAX_RANDOM_NUM < moveNum || moveNum < MIN_RANDOM_NUM) { - throw new IllegalArgumentException("0이상 9이하에 해당하는 랜덤값이 주어져야 합니다."); - }else if (MIN_MOVE <= moveNum && moveNum <= MAX_MOVE_NUM) { - this.carDistance = this.carDistance + 1; - } - } - - public int getDistance() { - return this.carDistance; - } - - public int plusCarDistance() { - return this.carDistance + 1; - } -} From 5b8928d3aecee0ac3d325bda38f27f8b7b144baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 02:03:03 +0900 Subject: [PATCH 6/9] =?UTF-8?q?feat(young2)=20:=20input,=20output=20view?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=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/game/views/InputView.java | 22 ++++++++++- src/main/java/game/views/OutputView.java | 48 +++++++++++++++++++++++- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/main/java/game/views/InputView.java b/src/main/java/game/views/InputView.java index f9779b76e..d65391705 100644 --- a/src/main/java/game/views/InputView.java +++ b/src/main/java/game/views/InputView.java @@ -1,2 +1,22 @@ -package game.views;public class InputView { +package game.views; + +import game.domain.Car; +import game.domain.Cars; + +import java.util.List; +import java.util.Scanner; + +public class InputView { + + private static Scanner scanner = new Scanner(System.in); + + + public static List inputCars(String names) { + String[] carNames = names.split(","); + return Cars.carsInit(carNames); + } + + public static int inputRepetition() { + return scanner.nextInt(); + } } diff --git a/src/main/java/game/views/OutputView.java b/src/main/java/game/views/OutputView.java index 9be100cb2..838bc0336 100644 --- a/src/main/java/game/views/OutputView.java +++ b/src/main/java/game/views/OutputView.java @@ -1,2 +1,48 @@ -package game.views;public class OutputView { +package game.views; + +import game.domain.Car; +import game.utils.RandomNum; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class OutputView { + + public static void printInitCars() { + System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."); + } + + public static void printInitRepete() { + System.out.println("시도할 회수는 몇회인가요?"); + } + + public static void printBeforeGame() { + System.out.println("실행 결과"); + } + + public static void printRacingCars(List carList) { + for (Car car : carList) { + int randomNum = RandomNum.RandomMove(); + int position = car.move(randomNum); + System.out.format("%s : %s", car.getCarName(), "-".repeat(position)+"\n"); + } + System.out.println(); + } + + public static void printWinners(List Cars) { + StringBuilder winnerBuilder = new StringBuilder(); + for (Car car : Cars) { + winnerBuilder.append(String.format("%s, ", car.getCarName())); + } + String winners = winnerToStr(winnerBuilder); + System.out.println(winners + "가 최종 우승했습니다."); + } + + private static String winnerToStr(StringBuilder winners) { + int length = winners.length(); + String result = winners.substring(0, length-2); + return result; + } } From d9304c7d7cf6b2ddd04a6a5399e69638dfbf391b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 02:03:50 +0900 Subject: [PATCH 7/9] =?UTF-8?q?feat(young2)=20:=20utils=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=ED=8C=8C=EC=9D=BC=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/game/utils/CarName.java | 7 ++++++- src/main/java/game/utils/InputValid.java | 23 ++++++++++++++++++++++- src/main/java/game/utils/RandomNum.java | 8 +++++++- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/main/java/game/utils/CarName.java b/src/main/java/game/utils/CarName.java index eed6c8f20..8ad89f28b 100644 --- a/src/main/java/game/utils/CarName.java +++ b/src/main/java/game/utils/CarName.java @@ -4,10 +4,15 @@ public class CarName { private final int MAX_LEN = 5; private String carName; - protected CarName(String carName) { + + + public CarName(String carName) { if (carName.length() > MAX_LEN) { throw new IllegalArgumentException("자동차 이름의 길이는 5보다 작아야 합니다."); } this.carName = carName; } + public String getCarName() { + return carName; + } } diff --git a/src/main/java/game/utils/InputValid.java b/src/main/java/game/utils/InputValid.java index b427152c0..d2e0ddda2 100644 --- a/src/main/java/game/utils/InputValid.java +++ b/src/main/java/game/utils/InputValid.java @@ -1,2 +1,23 @@ -package game.utils;public class InputValid { +package game.utils; + +import org.apache.commons.lang3.StringUtils; + +public class InputValid { + private static final int MAX_MOVE = 9; + private static final int MIN_MOVE = 4; + + public static void isNullCarNames(String carNames) { + if (StringUtils.isBlank(carNames)) { + throw new IllegalArgumentException("자동차 이름을 입력해 주세요."); + } + } + + public static boolean validMove(int moveNum) { + if (moveNum > MAX_MOVE || moveNum < 0) { + throw new IllegalArgumentException("0이상 9이하에 해당하는 랜덤값이 주어져야 합니다."); + } else if (moveNum < MIN_MOVE) { + return false; + } + return true; + } } diff --git a/src/main/java/game/utils/RandomNum.java b/src/main/java/game/utils/RandomNum.java index 6abfa5a79..aa30b8e08 100644 --- a/src/main/java/game/utils/RandomNum.java +++ b/src/main/java/game/utils/RandomNum.java @@ -1,2 +1,8 @@ -package game.utils;public class RandomPosition { +package game.utils; + +public class RandomNum { + + public static int RandomMove() { + return (int)(Math.random() * 10000 % 9); + } } From 8ba1cb097948ba2065c708d2057acb4352c9de72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 02:04:07 +0900 Subject: [PATCH 8/9] feat(young2) test code --- src/test/java/game/domain/CarTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/game/domain/CarTest.java b/src/test/java/game/domain/CarTest.java index 3245641c3..bfb6e1d7b 100644 --- a/src/test/java/game/domain/CarTest.java +++ b/src/test/java/game/domain/CarTest.java @@ -25,13 +25,11 @@ public class CarTest { } @Test - void car_move_4미만() { + void car_move_0미만() { Car car = new Car(5); - assertThatThrownBy(() -> car.move(3)) + assertThatThrownBy(() -> car.move(-1)) .isInstanceOf(java.lang.IllegalArgumentException.class) - .hasMessageContaining("자동차는 최대 4이상 9이하 만큼만 움직일 수 있습니다."); + .hasMessageContaining("0이상 9이하에 해당하는 랜덤값이 주어져야 합니다"); } - - } From f5c02a7f1677b34988e0784291fa1ea4ad4c2600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=82=E1=85=A1=E1=86=B7=E1=84=8B=E1=85=B4=E1=84=8B?= =?UTF-8?q?=E1=85=A7=E1=86=BC?= Date: Thu, 2 Mar 2023 02:05:20 +0900 Subject: [PATCH 9/9] =?UTF-8?q?feat(young2)=20:=20main=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4,=20=EC=8B=A4=ED=96=89=ED=81=B4=EB=9E=98=EC=8A=A4=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/game/CarRacingGameMain.java | 23 ++++-------- src/main/java/game/domain/CarRacingGame.java | 38 +++++++++++++++++++- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/src/main/java/game/CarRacingGameMain.java b/src/main/java/game/CarRacingGameMain.java index 778dfd880..7da9f3939 100644 --- a/src/main/java/game/CarRacingGameMain.java +++ b/src/main/java/game/CarRacingGameMain.java @@ -2,6 +2,7 @@ import game.domain.Car; import game.domain.CarRacingGame; +import game.domain.Cars; import game.views.InputView; import game.views.OutputView; import org.apache.commons.lang3.StringUtils; @@ -9,22 +10,12 @@ import java.util.List; import java.util.Scanner; -public class RacingMain { - public static void main(String[] args) { - final Scanner scanner = new Scanner(System.in); - // TODO 구현 진행 - - OutputView.printInitCars(); - String carNames = scanner.nextLine(); - if (StringUtils.isBlank(carNames)) { //TODO valid로 넣기 - throw new IllegalArgumentException("자동차 이름을 입력해 주세요."); - } - List carList = InputView.inputCars(carNames); - OutputView.printInitRepete(); - InputView.inputRepete(); - - - OutputView.printRacingCars(carList); +public class CarRacingGameMain { + public static void main(String[] args) { + CarRacingGame carRacingGame = new CarRacingGame(); + carRacingGame.inputData(); + carRacingGame.gameResult(); + carRacingGame.findWinners(); } } \ No newline at end of file diff --git a/src/main/java/game/domain/CarRacingGame.java b/src/main/java/game/domain/CarRacingGame.java index b14ae5299..a564594d3 100644 --- a/src/main/java/game/domain/CarRacingGame.java +++ b/src/main/java/game/domain/CarRacingGame.java @@ -1,2 +1,38 @@ -package game.domain;public class CarRacingGame { +package game.domain; + +import game.utils.InputValid; +import game.views.InputView; +import game.views.OutputView; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; +import java.util.Scanner; + +public class CarRacingGame { + private int repetition; + public List carList; + Scanner scanner = new Scanner(System.in); + + public void inputData() { + OutputView.printInitCars(); + String carNames = scanner.nextLine(); + InputValid.isNullCarNames(carNames); + this.carList = InputView.inputCars(carNames); + OutputView.printInitRepete(); + this.repetition = InputView.inputRepetition(); + } + + public void gameResult() { + OutputView.printBeforeGame(); + for (int i = 0; i < repetition; i++) { + OutputView.printRacingCars(carList); + } + } + + public void findWinners() { + List winners = Cars.findWinners(); + OutputView.printWinners(winners); + } + + }