diff --git a/README.md b/README.md index d0286c8..ad3c0ef 100644 --- a/README.md +++ b/README.md @@ -1 +1,35 @@ # java-racingcar-precourse + +## 과제 +### πŸš€ κΈ°λŠ₯ μš”κ΅¬ 사항 + +μ΄ˆκ°„λ‹¨ μžλ™μ°¨ κ²½μ£Ό κ²Œμž„μ„ κ΅¬ν˜„ν•œλ‹€. + +- μ£Όμ–΄μ§„ 횟수 λ™μ•ˆ nλŒ€μ˜ μžλ™μ°¨λŠ” μ „μ§„ λ˜λŠ” 멈좜 수 μžˆλ‹€. +- 각 μžλ™μ°¨μ— 이름을 λΆ€μ—¬ν•  수 μžˆλ‹€. μ „μ§„ν•˜λŠ” μžλ™μ°¨λ₯Ό 좜λ ₯ν•  λ•Œ μžλ™μ°¨ 이름을 같이 좜λ ₯ν•œλ‹€. +- μžλ™μ°¨ 이름은 μ‰Όν‘œ(,)λ₯Ό κΈ°μ€€μœΌλ‘œ κ΅¬λΆ„ν•˜λ©° 이름은 5자 μ΄ν•˜λ§Œ κ°€λŠ₯ν•˜λ‹€. +- μ‚¬μš©μžλŠ” λͺ‡ 번의 이동을 ν•  것인지λ₯Ό μž…λ ₯ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. +- μ „μ§„ν•˜λŠ” 쑰건은 0μ—μ„œ 9 μ‚¬μ΄μ—μ„œ λ¬΄μž‘μœ„ 값을 κ΅¬ν•œ ν›„ λ¬΄μž‘μœ„ 값이 4 이상일 κ²½μš°μ΄λ‹€. +- μžλ™μ°¨ κ²½μ£Ό κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ λˆ„κ°€ μš°μŠΉν–ˆλŠ”μ§€λ₯Ό μ•Œλ €μ€€λ‹€. μš°μŠΉμžλŠ” ν•œ λͺ… 이상일 수 μžˆλ‹€. +- μš°μŠΉμžκ°€ μ—¬λŸ¬ λͺ…일 경우 μ‰Όν‘œ(,)λ₯Ό μ΄μš©ν•˜μ—¬ κ΅¬λΆ„ν•œλ‹€. +- μ‚¬μš©μžκ°€ 잘λͺ»λœ 값을 μž…λ ₯ν•  경우 `IllegalArgumentException`을 λ°œμƒμ‹œν‚¨ ν›„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ’…λ£Œλ˜μ–΄μ•Ό ν•œλ‹€. + +## μž…μΆœλ ₯ +### μž…λ ₯ +- μžλ™μ°¨ 이름 μ‰Όν‘œ κΈ°μ€€μœΌλ‘œ μž…λ ₯λ°›κΈ° +- μ‹œλ„ν•  횟수 + +### 좜λ ₯ +- μ°¨μˆ˜λ³„ μ‹€ν–‰κ²°κ³Ό +- 단독, 곡동 우승자 μ•ˆλ‚΄ 문ꡬ + +## Business Logic +- μžλ™μ°¨ 이름과 μ‹œλ„ν•  횟수 μž…λ ₯λ°›κΈ° +- μ „μ§„ν•˜λŠ” 둜직짜기 +- 우승자 λ„μΆœ + +## κ΅¬ν˜„ν•  κΈ°λŠ₯ +- μž…μΆœλ ₯ +- μ „μ§„ 쑰건 κ΅¬ν˜„ +- 우승자 계산 κΈ°λŠ₯ κ΅¬ν˜„ +- μ˜ˆμ™ΈμΌ€μ΄μŠ€ κ΅¬ν˜„ \ No newline at end of file diff --git a/gradlew b/gradlew index 1aa94a4..fbda984 100755 --- a/gradlew +++ b/gradlew @@ -230,7 +230,7 @@ fi # set -- "${ARGS[@]}" "$@" # # but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any +# post-process each arg (as a line of input.java to sed) to backslash-escape any # character that might be a shell metacharacter, then use eval to reverse # that process (while maintaining the separation between arguments), and wrap # the whole thing up as a single "set" statement. diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..eb52f00 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,18 @@ package racingcar; + +import racingcar.controller.*; + + public class Application { public static void main(String[] args) { // TODO: ν”„λ‘œκ·Έλž¨ κ΅¬ν˜„ + + + RacingCarController start = new RacingCarController(); + start.RacingGame(); + + WhoIsWinner w = new WhoIsWinner(); + w.JudgeWinner(start); } } diff --git a/src/main/java/racingcar/controller/RacingCarController.java b/src/main/java/racingcar/controller/RacingCarController.java new file mode 100644 index 0000000..1d604bf --- /dev/null +++ b/src/main/java/racingcar/controller/RacingCarController.java @@ -0,0 +1,52 @@ +package racingcar.controller; + +import camp.nextstep.edu.missionutils.Randoms; + +import racingcar.view.*; +import racingcar.model.Car; +import java.util.ArrayList; + +public class RacingCarController{ + public int numbersOfCar = 1; + public Car[] car = new Car[numbersOfCar]; + + public void setCar(ArrayList carName){ + numbersOfCar = carName.size(); + for (int i = 0; i < numbersOfCar; i++){ + car[i].setName(carName.get(i)); + car[i].Distance = 0; + } + } + + public int getNumbersOfCar(){ + return numbersOfCar; + } + + public void RacingGame() { + output.CarNameRequestMessage(); + input userInput = new input(); + userInput.setCarName(); + + output.trialRequestMessage(); + userInput.setTrial(); + + setCar(userInput.getCarName()); + + for (int k = 0; k < userInput.getTrial(); k++){ + for (int i = 0; i < numbersOfCar; i++) { + int randomDistance = Randoms.pickNumberInRange(0, 9); + car[i].Distance += randomDistance; + } + + System.out.print(car[k].getName() + " : "); + for (int i = 0; i < car[i].Distance; i++){ + if (i != car[i].Distance){ + System.out.print("-"); + } + else { + System.out.println("-"); + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/racingcar/controller/WhoIsWinner.java b/src/main/java/racingcar/controller/WhoIsWinner.java new file mode 100644 index 0000000..f59fe6f --- /dev/null +++ b/src/main/java/racingcar/controller/WhoIsWinner.java @@ -0,0 +1,36 @@ +package racingcar.controller; + +import java.util.List; +import java.util.ArrayList; + +public class WhoIsWinner{ + public List winner= new ArrayList<>(); + + public void JudgeWinner(RacingCarController cars){ + int maxDistance = 0; + + for (int i = 0; i < cars.getNumbersOfCar(); i++){ + if (cars.car[i].Distance > maxDistance){ + maxDistance = cars.car[i].Distance; + } + } + + for (int i = 0; i < cars.getNumbersOfCar(); i++){ + if (cars.car[i].Distance == maxDistance){ + winner.add(cars.car[i].getName()); + } + } + + System.out.print("μ΅œμ’… 우승자 : "); + for (int i = 0; i < winner.size(); i++){ + if (i != winner.size()-1) { + System.out.print(winner.getFirst() + ","); + winner.removeFirst(); + } + else { + System.out.print(winner.getFirst()); + winner.removeFirst(); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java new file mode 100644 index 0000000..f45e3d0 --- /dev/null +++ b/src/main/java/racingcar/model/Car.java @@ -0,0 +1,20 @@ +package racingcar.model; + +import camp.nextstep.edu.missionutils.Randoms; + +public class Car{ + public int Distance; + private String Name; + + public Car(String carName){ + Name = carName; + Distance = 0; + } + + + + public String getName(){ + return Name; + } + public void setName(String name){Name = name;} +} \ No newline at end of file diff --git a/src/main/java/racingcar/view/input.java b/src/main/java/racingcar/view/input.java new file mode 100644 index 0000000..9d18d23 --- /dev/null +++ b/src/main/java/racingcar/view/input.java @@ -0,0 +1,40 @@ +package racingcar.view; + +import java.util.StringTokenizer; +import camp.nextstep.edu.missionutils.Console; +import java.util.ArrayList; + +public class input{ + private int trial; + public ArrayList Cars = new ArrayList<>(); + + public input(){ + trial = 0; + } + public ArrayList getCarName(){ + return Cars; + } + + public void setCarName() { + String CarNames = Console.readLine(); + StringTokenizer separatedCarNames = new StringTokenizer(CarNames, ","); + + while(separatedCarNames.hasMoreTokens()){ + if (separatedCarNames.nextToken().trim().length() < 5) { + String oneOfCarName = separatedCarNames.nextToken().trim(); + Cars.add(oneOfCarName); + } + else { + throw new IllegalArgumentException("λ‹€μ„― κΈ€μžκ°€ λ„˜μ–΄μš”"); + } + } + } + + public void setTrial(){ + trial = Integer.parseInt(Console.readLine()); + } + + public int getTrial(){ + return trial; + } +} diff --git a/src/main/java/racingcar/view/output.java b/src/main/java/racingcar/view/output.java new file mode 100644 index 0000000..b430ecf --- /dev/null +++ b/src/main/java/racingcar/view/output.java @@ -0,0 +1,13 @@ +package racingcar.view; + +public class output{ + + public static void CarNameRequestMessage(){ + System.out.println("κ²½μ£Όν•  μžλ™μ°¨ 이름을 μž…λ ₯ν•˜μ„Έμš”.(이름은 μ‰Όν‘œ(,) κΈ°μ€€μœΌλ‘œ ꡬ뢄)"); + } + + public static void trialRequestMessage(){ + System.out.println("μ‹œλ„ν•  νšŒμˆ˜λŠ” λͺ‡νšŒμΈκ°€μš”?"); + } + +} \ No newline at end of file