diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index d77b67d..7650873 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -2,5 +2,41 @@ public class Application { public static void main(String[] args) { + Game game = new Game(); + game.run(); + } +} + +class Car { + private int position; + private String name; + Car(String name, int position) { + this.position = 0; + if (Validate(name)) { + this.name = name; + } + } + + private boolean Validate(String name) { + //밸리데이트 하는 코드 + if(name == null || name.length() == 0 || name.length() > 5){ + throw new IllegalArgumentException(); + } + return true; + } + + public String getName(){ + return name; + } + public int getPosition(){ + return position; + } + void tryMove(int act){ + if(act>=4){ + position += 1; + } + } + public String getState(){ + return name+": "+"-".repeat(position); } } diff --git a/src/main/java/racingcar/Cars.java b/src/main/java/racingcar/Cars.java new file mode 100644 index 0000000..db0efc1 --- /dev/null +++ b/src/main/java/racingcar/Cars.java @@ -0,0 +1,33 @@ +package racingcar; + +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + +public class Cars { + private static final Random random = new Random(); + private final List cars; + + Cars(Listnames){ + this.cars=names.stream().map(Car::new).toList(); + } + + public void moveAll(){ + cars.forEach(car->car.tryMove()); + + } + + public String findWinners(){ + int max = getMaxPosition(); + String winners = cars.stream() + .filter(car -> car.getPosition()==max) + .map(Car::getName) + .collect(Collectors.joining(",")); + return winners; + } + private int getMaxPosition(){ + return cars.stream().mapToInt(Car::getPosition).max().orElse(0); + } + + public ListgetCars(){return cars;} +} diff --git a/src/main/java/racingcar/Game.java b/src/main/java/racingcar/Game.java new file mode 100644 index 0000000..2d49d91 --- /dev/null +++ b/src/main/java/racingcar/Game.java @@ -0,0 +1,4 @@ +package racingcar; + +public class Game { +} diff --git a/src/main/java/racingcar/InputView.java b/src/main/java/racingcar/InputView.java new file mode 100644 index 0000000..487cc73 --- /dev/null +++ b/src/main/java/racingcar/InputView.java @@ -0,0 +1,35 @@ +package racingcar; + +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; + +public class InputView { + private static final Scanner scanner = new Scanner(System.in); + + + public static List readCarNames(){ + String input = scanner.nextLine(); + return Arrays.asList(input.split(",",-1)); + } + + public static int readAttemptCount(){ + String input = scanner.nextLine(); + try{ + int attempt = Integer.parseInt(input); + validatePostiveAttempt(attempt); + return attempt; + } + catch(Exception e){ + throw new IllegalArgumentException( + ); + } + + } + + private static void validatePostiveAttempt(int attempt){ + if(attempt<=0){ + throw new IllegalArgumentException(); + } + } +} diff --git a/src/main/java/racingcar/Output.java b/src/main/java/racingcar/Output.java new file mode 100644 index 0000000..3196844 --- /dev/null +++ b/src/main/java/racingcar/Output.java @@ -0,0 +1,25 @@ +package racingcar; + +public class Output { + public static void printRoundResult(){ + + } + + +} + +class Game { + public void run() { + Cars cars = new Cars(InputView.readCarNames()); + int round = InputView.readAttemptCount(); + for(int i=0;i System.out.println(car.getState())); + } +}