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
20 changes: 20 additions & 0 deletions src/main/java/Baseball.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
public class Baseball {
private String comNumber;
private String userNumber;

public String getComNumber() {
return comNumber;
}

public void setComNumber(String comNumber) {
this.comNumber = comNumber;
}

public String getUserNumber() {
return userNumber;
}

public void setUserNumber(String userNumber) {
this.userNumber = userNumber;
}
}
92 changes: 92 additions & 0 deletions src/main/java/BaseballServiceImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
public class BaseballServiceImpl implements SportsGameService {

@Override
public String playGame(String userNumber) {
Baseball b = new Baseball();
b.setComNumber(getRandomInteger(9, 1, 3));
b.setUserNumber(userNumber);
System.out.println("상대방 숫자는 " + b.getComNumber() + "입니다.");
return checkNumber(b.getUserNumber(), b.getComNumber());
}

private static final Integer NUM_DIGIT = 3;
private static final String OVER_DIGIT_MESSAGE = "세자리 수를 입력해주세요.";
@Override
public Boolean checkLength(String userNumber) {
if (userNumber.length() != NUM_DIGIT) {
System.out.println(OVER_DIGIT_MESSAGE);
return false;
}
return true;
}
private static final Integer GAME_QUIT = 000;
@Override
public Boolean gameQuit(String userNumber) {
if (userNumber.equals(GAME_QUIT)) {
return false;
}
return true;
}

private static final String NOT_INT_MESSAGE = "문자는 안됩니다. 숫자를 입력하세요.";
@Override
public Boolean isInt(String userNumber) {
try {
Integer.parseInt(userNumber);
return true;
} catch (NumberFormatException e) {
System.out.println(NOT_INT_MESSAGE);
return false;
}

}

private String checkNumber(String userNumber, String comNumber) {
int ballCount = 0;
int strikeCount = 0;
int cn = Integer.parseInt(comNumber);
for (int i = 0; i < comNumber.length(); i++) {
String kcn = cn % 10 + "";
int chk = reverseStr(userNumber).lastIndexOf(kcn);
if (chk > -1 && chk != i) {
ballCount++;
}
if (chk == i) {
strikeCount++;
}
cn = cn / 10;
}
return result(ballCount, strikeCount);
}

private String result(int ballCount, int strikeCount) {
String res = "";
if (ballCount > 0) {
res += ballCount + " ball ";
}
if (strikeCount > 0) {
res += strikeCount + " strike";
}
if (ballCount == 0 && strikeCount == 0) {
res = "nothing";
}
return res;
}

private String getRandomInteger(int maximum, int minimum, int length) {
String res = "";
while(!(res.length() == length)) {
int num = ((int) (Math.random() * (maximum - minimum))) + minimum;
if (res.indexOf(num + "") == -1) {
res +=num;
}
}
return res;
}


private String reverseStr(String s) {
return (new StringBuffer(s)).reverse().toString();
}
}

21 changes: 21 additions & 0 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
SportsGameService baseballGame = new BaseballServiceImpl();
System.out.println("1부터 9까지로 이루어진 숫자 3개를 눌러주세요.\n더 이상 게임을 원하지 않을경우 000 을 입력하세요.");
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하세요.");
String userNumber = sc.next();
if (!baseballGame.gameQuit(userNumber)) {
break;
}
if (!baseballGame.isInt(userNumber) || !baseballGame.checkLength(userNumber)) {
continue;
}
System.out.println(baseballGame.playGame(userNumber));
}
System.out.println("게임이 종료됐습니다. 감사합니다.");
}
}
7 changes: 7 additions & 0 deletions src/main/java/SportsGameService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
public interface SportsGameService {
// baseball game 뿐만 아니라 나중에 soccer 등의 확장성으 고려해 service 로 만듦
String playGame(String userInput);
Boolean gameQuit(String userNumber);
Boolean isInt(String userNumber);
Boolean checkLength(String userNumber);
}
Empty file added src/main/java/method1.md
Empty file.