Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a6345e8
init
mincheolkk May 16, 2024
aad83fc
feat : 스텝-1 시나리오 구현
mincheolkk May 25, 2024
ea6470d
feat : 입출력값 담당 클래스 추가
mincheolkk May 25, 2024
85ea404
feat : int 타입을 한 자리 숫자 리스트로 변환하는 메서드 구현
mincheolkk May 26, 2024
c4fa261
feat : baseballGame 실행하기
mincheolkk May 26, 2024
4c52e11
feat : 게임 결과를 담당하는 심판 클래스 구현
mincheolkk May 26, 2024
64cc8fa
refactor : 메서드 이름 수정
mincheolkk May 26, 2024
e7526c4
feat : 컴퓨터 숫자 생성 로직 및 테스트 코드 추가
mincheolkk May 26, 2024
0b10737
test : Referee 테스트 코드 추가
mincheolkk May 27, 2024
0256386
refactor : do-while문으로 변경
mincheolkk May 28, 2024
3ed2f72
refactor : Game상태 관련 enum으로 변경
mincheolkk May 28, 2024
189da59
refactor : 무한 루프 방지
mincheolkk May 29, 2024
e32f1f8
refactor : 에러 클래스 안에서 에러 메세지 담당하게 변경
mincheolkk May 29, 2024
066d729
refactor : 변수명 변경
mincheolkk May 29, 2024
9aa0f71
docs : 메서드 관련 주석 추가
mincheolkk May 29, 2024
5cfce43
move : 패키지 구조 변경
mincheolkk May 29, 2024
fb44709
move : 패키지 구조 변경
mincheolkk May 29, 2024
13c5f8c
test : GameStatus enum 클래스 테스트 코드 추가
mincheolkk May 29, 2024
0c273a8
test : util 메서드 테스트 코드 추가
mincheolkk May 29, 2024
8e581ff
refactor : Input 입력 테스트를 위한 리팩토링
mincheolkk May 29, 2024
a925baf
refactor : 지역변수로 변경
mincheolkk Jul 29, 2024
350d717
refactor : 컴퓨터 숫자 생성 책임 분리
mincheolkk Aug 18, 2024
e6bc155
test : 숫자 생성이 정상적으로 이루어지는지 비교
mincheolkk Aug 18, 2024
2bb3fa9
refactor : enum으로 변경
mincheolkk Aug 19, 2024
3460db3
refactor : 숫자 저장용 객체 생성
mincheolkk Aug 19, 2024
e3f942c
refactor : 판정 메서드 리팩토링
mincheolkk Aug 19, 2024
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
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
plugins {
id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
mavenCentral()
}

dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation "org.assertj:assertj-core:3.25.3"
}

test {
useJUnitPlatform()
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
185 changes: 185 additions & 0 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

89 changes: 89 additions & 0 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
rootProject.name = 'java-baseball'

8 changes: 8 additions & 0 deletions src/main/java/baseball/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package baseball;


public class Application {
public static void main(String[] args) throws IllegalAccessException {
BaseballGame.launch();
}
}
56 changes: 56 additions & 0 deletions src/main/java/baseball/BaseballGame.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package baseball;

import static java.util.UUID.randomUUID;

import baseball.domain.Computer;
import baseball.domain.ComputerDigit;
import baseball.domain.UserDigit;
import baseball.presentation.GameManager;
import baseball.domain.Referee;
import baseball.presentation.GameStatus;
import baseball.presentation.MessagePrinter;
import baseball.presentation.RandomNumberGenerator;
import baseball.presentation.input.Input;
import baseball.presentation.input.InputProvider;

import java.util.List;
import java.util.Scanner;

public class BaseballGame {

public static void launch() throws IllegalAccessException {
final Computer computer = new Computer(new RandomNumberGenerator());
final Referee referee = new Referee();
final InputProvider inputProvider = new Input(new Scanner(System.in));
final GameManager gameManager = new GameManager(new MessagePrinter(), inputProvider);

boolean isApplicationOver = false;
while (!isApplicationOver) {
GameStatus gameStatus = gameManager.init();
String gameId = randomUUID().toString();
ComputerDigit computerDigit = null;

if (gameStatus.equals(GameStatus.START)) {
List<Integer> computerDigits = gameManager.getComputerDigits(computer);
computerDigit = new ComputerDigit(gameId, computerDigits);

} else if (gameStatus.equals(GameStatus.QUIT)) {
gameManager.applicationOver();
}

boolean isOut = false;
int tryCount = 0;
while (!isOut) {
tryCount++;
List<Integer> userDigits = gameManager.getUserDigits();
UserDigit userDigit = new UserDigit(gameId, tryCount, userDigits);

isOut = referee.judge(computerDigit, userDigit);
String callMessage = referee.getCallMessage();
gameManager.call(callMessage);
}

gameManager.gameOver();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package baseball.common.exception;

public class InvalidGameStatusException extends Exception{

private static final String MESSAGE = "1(시작) 또는 9(종료)를 눌러주세요.";

public InvalidGameStatusException() {
super(MESSAGE);
}
}
Loading