diff --git a/src/main/java/RacingMain.java b/src/main/java/RacingMain.java index 4394287..2bfe123 100644 --- a/src/main/java/RacingMain.java +++ b/src/main/java/RacingMain.java @@ -1,7 +1,19 @@ +import controller.RacingGame; +import view.InputView; +import view.OutputView; + public class RacingMain { public static void main(String[] args) { // TODO: MVC 패턴을 기반으로 자동차 경주 미션 구현해보기 - System.out.println("Hello, World!"); + + final var carNames = InputView.getCarNames(); + final var tryCount = InputView.getTryCount(); + + final var racingGame = new RacingGame(carNames, tryCount); + racingGame.race(); + + OutputView.printWinners(racingGame.getWinners()); + } } diff --git a/src/main/java/controller/RacingGame.java b/src/main/java/controller/RacingGame.java new file mode 100644 index 0000000..38e4fb5 --- /dev/null +++ b/src/main/java/controller/RacingGame.java @@ -0,0 +1,68 @@ +package controller; + +import java.util.ArrayList; +import java.util.Random; + +import model.Car; +import model.RacingCars; + +public class RacingGame { + final private static String runMessage = "실행 결과"; + final private static int RANDOM_NUMBER_RANGE = 10; + final private static int MOVE_MINIMUM = 4; + private static RacingCars cars; + private static int tryCount; + + // 생성자 + public RacingGame(ArrayList carNames, int tryCount) { + cars = new RacingCars(carNames); + this.tryCount = tryCount; + } + // 함수 + public static int getTryCount() { + return tryCount; + } + // 랜덤 숫자 리턴 + private int getRandomNumber() { + return new Random().nextInt(RANDOM_NUMBER_RANGE); + } + // 레이스 진행 + private void racing() { + for (Car c : cars.getList()) { + int randomNum = getRandomNumber(); + if(randomNum >= MOVE_MINIMUM) + c.move(); + c.printNow(); + } + System.out.println(); + } + // 우승자 업데이트 + private void updateResult() { + for(Car c : cars.getList()) { + if(c.getDist() == tryCount) { + c.win(); + } + } + } + // 레이스 시작 + public void race() { + System.out.println(runMessage); + for(int i=0;i getWinners() { + ArrayList results = new ArrayList<>(); + for(Car c : cars.getList()) { + if(c.getResult()) + results.add(c.getCarName()); + } + + return results; + + } + + +} diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java new file mode 100644 index 0000000..0651cdc --- /dev/null +++ b/src/main/java/model/Car.java @@ -0,0 +1,38 @@ +package model; + +public class Car { + + final private String carName; + private int dist = 0; + private boolean winCheck = false; + + // 생성자 + public Car(String carName) { + this.carName = carName; + } + + // 함수 + public String getCarName() { + return carName; + } + public void move() { + dist++; + } + public int getDist() { + return dist; + } + public void printNow() { + System.out.print(carName + " : "); + for(int i=0;i cars = new ArrayList<>(); + + public RacingCars(ArrayList carNames) { + for(String s : carNames) { + cars.add(new Car(s)); + } + } + + public ArrayList getList() { + return cars; + } +} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 0000000..aa2a1a3 --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,35 @@ +package view; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Scanner; + +public class InputView { + + final private static String startMessage = "경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."; + final private static String str1 = "시도할 횟수는 몇회인가요?"; + final private static Scanner in = new Scanner(System.in); + + // 자동차 이름 입력받기 + public static ArrayList getCarNames() { + System.out.println(startMessage); + String input = in.next(); + String[] carNames = input.split(","); + + ArrayList nameList = new ArrayList<>(); + nameList.addAll(Arrays.asList(carNames)); + + return nameList; + } + // 시도 횟수 입력받기 + public static int getTryCount() { + System.out.println(str1); + + int tryCount = in.nextInt(); + System.out.println(); + + return tryCount; + + } + +} diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java new file mode 100644 index 0000000..9e5676d --- /dev/null +++ b/src/main/java/view/OutputView.java @@ -0,0 +1,21 @@ +package view; + +import java.util.ArrayList; + +public class OutputView { + + public static void printWinners(ArrayList results) { + if(results.size()==0) { + System.out.println("우승자 없음."); + return; + } + for(int i=0;i