From 046291a1e31374b13acdf83bec0e8993ed7d378d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:32:52 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=EC=88=98=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/model/Car.java | 15 +++++++++++++++ src/main/java/model/CarFactory.java | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/main/java/model/Car.java create mode 100644 src/main/java/model/CarFactory.java diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java new file mode 100644 index 0000000..8b62352 --- /dev/null +++ b/src/main/java/model/Car.java @@ -0,0 +1,15 @@ +package model; + +public class Car { + private String _name; + private int _move; + + public Car(String name) { + _name = name; + _move = 0; + } + + public void move() { + + } +} diff --git a/src/main/java/model/CarFactory.java b/src/main/java/model/CarFactory.java new file mode 100644 index 0000000..e09cb9a --- /dev/null +++ b/src/main/java/model/CarFactory.java @@ -0,0 +1,24 @@ +package model; + +import model.Car; +import view.Output; + +import java.util.Scanner; + +public class CarFactory { + public Car[] create() { + Output.carNameO(); + + Scanner sc = new Scanner(System.in); + String str = sc.next(); + String[] names = str.split(","); + Car[] cars = new Car[names.length]; + + for (int i = 0; i < names.length; ++i) { + cars[i] = new Car(names[i]); + } + + return cars; + } + +} From c91fbe2f9b5e8a21f0e9da12f586edcc1a9ef4f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:33:22 +0900 Subject: [PATCH 2/8] =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C,=20Input=EC=9D=84=20=EC=A3=BC=EB=A1=9C=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C,=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=97=AD?= =?UTF-8?q?=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/RacingMainTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/test/java/RacingMainTest.java diff --git a/src/test/java/RacingMainTest.java b/src/test/java/RacingMainTest.java new file mode 100644 index 0000000..357fa64 --- /dev/null +++ b/src/test/java/RacingMainTest.java @@ -0,0 +1,18 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class RacingMainTest { + //@DisplayName("") + + @Test + //기능 >>> 자동차 이름입력시 저장, 시도 횟수만큼 전진가능성 부여, 입출력 테스트 + void 기능_테스트() { + + } + + @Test + //예외 >>> try가 0일경우, 이름이 5자 초과일 경우 + void 예외_테스트() { + + } +} From 0bef6cfaf3ca8f67f8346a698291051f1322be7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:33:41 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C,=20Input=EC=9D=84=20=EC=A3=BC=EB=A1=9C=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C,=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=97=AD?= =?UTF-8?q?=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RacingMain.java | 7 ------ src/main/java/controller/RacingMain.java | 28 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) delete mode 100644 src/main/java/RacingMain.java create mode 100644 src/main/java/controller/RacingMain.java diff --git a/src/main/java/RacingMain.java b/src/main/java/RacingMain.java deleted file mode 100644 index 4394287..0000000 --- a/src/main/java/RacingMain.java +++ /dev/null @@ -1,7 +0,0 @@ -public class RacingMain { - - public static void main(String[] args) { - // TODO: MVC 패턴을 기반으로 자동차 경주 미션 구현해보기 - System.out.println("Hello, World!"); - } -} diff --git a/src/main/java/controller/RacingMain.java b/src/main/java/controller/RacingMain.java new file mode 100644 index 0000000..31f5631 --- /dev/null +++ b/src/main/java/controller/RacingMain.java @@ -0,0 +1,28 @@ +package controller; + +import model.Car; +import model.CarFactory; +import view.Input; +import view.Output; + +import java.util.List; + +public class RacingMain { + + public static void main(String[] args) { + /*var carFactory = new CarFactory(); + var cars = carFactory.create();*/ + + String[] carNames = Input.carNameI(); + int tryNumbers = Input.tryNumbersI(); + + int[] saveNumbers = RacingGame.racingStart(carNames, tryNumbers); + + Output.racingResultO(carNames, saveNumbers); + + List gamewinner = RacingGame.gameWinner(saveNumbers, carNames); + + Output.racingWinner(gamewinner); + } + //입력, 클래스랑 메소드 호출 +} From 4085b7208d51cd6a334182cb0ec5515159ef0211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:33:55 +0900 Subject: [PATCH 4/8] =?UTF-8?q?=EC=9E=85=EB=A0=A5=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EB=B0=9B=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/Input.java | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/view/Input.java diff --git a/src/main/java/view/Input.java b/src/main/java/view/Input.java new file mode 100644 index 0000000..c00feb0 --- /dev/null +++ b/src/main/java/view/Input.java @@ -0,0 +1,38 @@ +package view; + +import controller.RacingError; + +import java.util.Scanner; + +public class Input { + public static String[] carNameI() { + Output.carNameO(); + + Scanner sc = new Scanner(System.in); + String str = sc.next(); + String[] carNames = str.split(","); + + boolean b = RacingError.nameError(carNames); + if(b) { + Output.carNameError(); + Input.carNameI(); + } + + return carNames; + } + + public static int tryNumbersI() { + Output.tryNumbersO(); + + Scanner sc = new Scanner(System.in); + int tryNumbers = sc.nextInt(); + + if(RacingError.tryNumberError(tryNumbers)) { + Output.tryNumbersError(); + Input.tryNumbersI(); + } + + return tryNumbers; + } + +} From 70b8925d628009bc74aaf612485dfa4458dcdcaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:34:16 +0900 Subject: [PATCH 5/8] =?UTF-8?q?Input=EC=97=90=EC=84=9C=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=EB=B0=9B=EC=95=84=EC=84=9C=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/Output.java | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/main/java/view/Output.java diff --git a/src/main/java/view/Output.java b/src/main/java/view/Output.java new file mode 100644 index 0000000..ff8e3b1 --- /dev/null +++ b/src/main/java/view/Output.java @@ -0,0 +1,50 @@ +package view; + +import java.util.List; + +public class Output { + + public static void carNameO() { + System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."); + } + + public static void carNameError() { + System.out.println("경주할 자동차 이름은 5글자 이하만 가능합니다."); + } + + public static void tryNumbersO() { + System.out.println("시도할 횟수는 몇회인가요?"); + } + + public static void tryNumbersError() { + System.out.println("시도할 횟수는 0번 이상만 가능합니다."); + } + + public static void saveResultO(int go) { + for(int i = 0; i < go; ++i) { + System.out.print("-"); + } + System.out.println(); + } + + public static void racingResultO(String[] carNames, int[] saveNumbers) { + int i = 0; + for(String str : carNames) { + System.out.print(str + " : "); + saveResultO(saveNumbers[i++]); + } + System.out.println(); + } + + public static void racingWinner(List gamewinner) { + for(int i = 1; i < gamewinner.size(); i += 2) { + gamewinner.add(i, ", "); + } + for(int i = 0; i < gamewinner.size(); ++i) { + System.out.print(gamewinner.get(i)); + } + System.out.println("가 최종 우승했습니다."); + } + + +} From 273956ef6b0f68ca7344755913730bc43be7d102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:34:40 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=EC=98=88=EC=99=B8=EC=83=81=ED=99=A9=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=20=EC=8B=9C=20=EC=9E=AC=EC=8B=9C=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/RacingError.java | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/controller/RacingError.java diff --git a/src/main/java/controller/RacingError.java b/src/main/java/controller/RacingError.java new file mode 100644 index 0000000..1b9edb6 --- /dev/null +++ b/src/main/java/controller/RacingError.java @@ -0,0 +1,32 @@ +package controller; + +import java.util.Arrays; + + +public class RacingError { + public static boolean nameError(String[] carnames) { + String[] b = new String[carnames.length]; + String target = "-1"; + + for(int i = 0; i < carnames.length; ++i) { + b[i] = RacingError.namelenth(carnames[i]); + } + + boolean found = Arrays.asList(b).contains(target); + + return found; + } + + public static String namelenth(String carname) { + if(carname.length() > 5) return "-1"; + return "1"; + } + + public static boolean tryNumberError(int tryNumbers) { + boolean number = false; + + if(tryNumbers == 0) number = true; + + return number; + } +} From 27a08d4bd1f4b6c6e2d9229958c45886301af436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:34:58 +0900 Subject: [PATCH 7/8] =?UTF-8?q?Racing=EC=9D=98=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=EC=9D=84=20=EB=8B=B4=EB=8B=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/RacingGame.java | 70 ++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/main/java/controller/RacingGame.java diff --git a/src/main/java/controller/RacingGame.java b/src/main/java/controller/RacingGame.java new file mode 100644 index 0000000..37cc5fe --- /dev/null +++ b/src/main/java/controller/RacingGame.java @@ -0,0 +1,70 @@ +package controller; + +import view.Output; + +import java.util.*; + +public class RacingGame { + + public static int[] racingStart(String[] carNames, int tryNumbers) { + int[] saveNumbers = new int[tryNumbers]; + + for(int i = 0; i < tryNumbers; ++i) { + saveNumbers = randomGo(saveNumbers, carNames.length); + Output.racingResultO(carNames, saveNumbers); + } + + return saveNumbers; + } + public static int[] randomGo(int[] saveNumbers, int len) { + + for(int i = 0; i < len; ++i) { + saveNumbers[i] = RacingGame.saveResult(saveNumbers[i]); + } + + return saveNumbers; + } + + public static int random() { + Random random = new Random(); + int number = random.nextInt(9); + + if (number >= 4) return 1; + return -1; + } + + public static int saveResult(int saveNumber) { + int b = RacingGame.random(); + + if(b == 1) { + return ++saveNumber; + } + + return saveNumber; + } + + public static List gameWinner(int[] saveNumbers, String[] carNames) { + int max = 0, c = 0; + String[] winner = new String[carNames.length]; + + for (int saveNumber : saveNumbers) { + max = Math.max(max, saveNumber); + } + for (int i = 0; i < carNames.length; i++) { + winner[i] = RacingGame.gameWinnerName(max, saveNumbers[i], carNames[i]); + } + + List gamewinner = new ArrayList<>(Arrays.asList(winner)); + gamewinner.removeIf(Objects::isNull); + + return gamewinner; + } + + public static String gameWinnerName(int max, int saveNumber, String carName) { + if(max == saveNumber){ + return carName; + } + return null; + } + +} From 2442f49d343e02fa7e22ce9f436c76605ba431b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=EC=9C=A4?= <23011595@sju.ac.kr> Date: Sun, 24 Mar 2024 23:35:07 +0900 Subject: [PATCH 8/8] test --- src/test/java/RacingGameTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/test/java/RacingGameTest.java diff --git a/src/test/java/RacingGameTest.java b/src/test/java/RacingGameTest.java new file mode 100644 index 0000000..4b90923 --- /dev/null +++ b/src/test/java/RacingGameTest.java @@ -0,0 +1,16 @@ +import org.junit.jupiter.api.Test; + +public class RacingGameTest { + + @Test + //전진 조건 테스트 + void racingCarGoOrStop() { + + } + + @Test + //승자 찾기 + void racingWinnerFound() { + + } +}