Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions src/main/java/RacingMain.java

This file was deleted.

32 changes: 32 additions & 0 deletions src/main/java/controller/RacingError.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
70 changes: 70 additions & 0 deletions src/main/java/controller/RacingGame.java
Original file line number Diff line number Diff line change
@@ -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<String> 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<String> 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;
}

}
28 changes: 28 additions & 0 deletions src/main/java/controller/RacingMain.java
Original file line number Diff line number Diff line change
@@ -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<String> gamewinner = RacingGame.gameWinner(saveNumbers, carNames);

Output.racingWinner(gamewinner);
}
//입력, 클래스랑 메소드 호출
}
15 changes: 15 additions & 0 deletions src/main/java/model/Car.java
Original file line number Diff line number Diff line change
@@ -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() {

}
}
24 changes: 24 additions & 0 deletions src/main/java/model/CarFactory.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
38 changes: 38 additions & 0 deletions src/main/java/view/Input.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
50 changes: 50 additions & 0 deletions src/main/java/view/Output.java
Original file line number Diff line number Diff line change
@@ -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<String> 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("가 최종 우승했습니다.");
}


}
16 changes: 16 additions & 0 deletions src/test/java/RacingGameTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import org.junit.jupiter.api.Test;

public class RacingGameTest {

@Test
//전진 조건 테스트
void racingCarGoOrStop() {

}

@Test
//승자 찾기
void racingWinnerFound() {

}
}
18 changes: 18 additions & 0 deletions src/test/java/RacingMainTest.java
Original file line number Diff line number Diff line change
@@ -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 예외_테스트() {

}
}