diff --git a/README.md b/README.md index 8ae5f84918..88d3482aa5 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,19 @@ * 숫자 야구 게임 요구사항을 파악한다. * 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 과제를 제출한다. +## 기능 목록 + +### 경주 게임 +시작한다 +입력 된 회차가 끝나면 종료한다 +### 자동차 +0~9사이 무작위 수에서 4이상인 경우에 전진한다. +0~9사이 무작위 수에서 4미만인 경우에 정지한다. +입력한 숫자에 해당하는 자동차 이름이 부여된다. + +## 사용자 +숫자를 입력한다 +이름을 입력한다 + ## 과제 제출 과정 -* [과제 제출 방법](https://github.com/next-step/nextstep-docs/tree/master/precourse) +* [과제 제출 방법](https://github.com/next-step/nextstep-docs/tree/master/precourse) \ No newline at end of file diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 0000000000..88d44699b2 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,25 @@ +import java.util.Random; + +public class Car { + private String name; + private int position; + + public Car(String name) { + this.name = name; + this.position = 0; + } + + public String getName() { + return name; + } + + public int getPosition() { + return position; + } + + public void moveOrStop(){ + Random random = new Random(); + int randomNumber = random.nextInt(10); + if(randomNumber >= 4) position++; + } +} \ No newline at end of file diff --git a/src/main/java/Game.java b/src/main/java/Game.java new file mode 100644 index 0000000000..d6fee01c27 --- /dev/null +++ b/src/main/java/Game.java @@ -0,0 +1,49 @@ +import java.util.ArrayList; +import java.util.List; + +public class Game { + private List cars; + + public Game(List cars) { + this.cars = cars; + } + + public List getCars() { + return cars; + } + + private void printCarPosition(Car car) { + System.out.print(car.getName() + " : "); + int carPosition = car.getPosition(); + for (int i = 0; i < carPosition; i++) { + System.out.print("-"); + } + System.out.println(); + } + + public void startGame(int rounds){ + for (int i = 0; i < rounds; i++) { + for (Car car : cars) { + car.moveOrStop(); + printCarPosition(car); + } + System.out.println(); + } + decideGameWinner(); + } + + private void decideGameWinner() { + int maxPosition = 0; + for (Car car : cars) { + maxPosition = Math.max(maxPosition, car.getPosition()); + } + + List winnerNames = new ArrayList<>(); + for (Car car : cars) { + if (car.getPosition() == maxPosition) { + winnerNames.add(car.getName()); + } + } + System.out.println("최종 우승자 : " + String.join(", ", winnerNames)); + } +} \ No newline at end of file diff --git a/src/main/java/User.java b/src/main/java/User.java new file mode 100644 index 0000000000..b28bb7dfcb --- /dev/null +++ b/src/main/java/User.java @@ -0,0 +1,28 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class User { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + System.out.println("경주할 자동차 이름을 입력 하세요. (이름은 쉼표(,)로 구분)"); + String input = scanner.nextLine(); + + String[] splitCarNames = input.split(","); + List cars = new ArrayList<>(); + + for (String carName : splitCarNames) { + cars.add(new Car(carName)); + } + + System.out.println("시도할 회수는 몇회인가요?"); + int rounds = scanner.nextInt(); + System.out.println("실행 결과"); + + Game game = new Game(cars); + game.startGame(rounds); + + scanner.close(); + } +} diff --git a/src/main/java/empty.txt b/src/main/java/empty.txt deleted file mode 100644 index e69de29bb2..0000000000