Skip to content
Open
Show file tree
Hide file tree
Changes from 49 commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
493087b
docs: 기능 구현 목록 정리
holyPigeon Oct 20, 2023
807e9f0
docs: 기능 구현 목록 수정
holyPigeon Oct 21, 2023
37d9851
feat: Player 클래스 생성
holyPigeon Oct 21, 2023
4028c94
feat: Player 클래스 필드 변수 구현
holyPigeon Oct 21, 2023
648b947
feat: NumberService 클래스 생성
holyPigeon Oct 21, 2023
e1e0285
feat: 컴퓨터의 숫자를 랜덤하게 정하는 메소드 구현
holyPigeon Oct 21, 2023
8dcbb93
feat: ViewService 클래스 생성
holyPigeon Oct 21, 2023
8fb5fc5
feat: 사용자 숫자 입력 메시지 출력 메소드 구현
holyPigeon Oct 21, 2023
7ecdc24
docs: 기능 구현 목록 수정
holyPigeon Oct 21, 2023
4557577
feat: 사용자 숫자 입력 메소드 구현
holyPigeon Oct 21, 2023
7875953
feat: NumberUtil 클래스 생성
holyPigeon Oct 21, 2023
74b7530
feat: 입력된 문자열이 비어있지 않은지 검증하는 메소드 구현
holyPigeon Oct 21, 2023
f854531
feat: 입력된 문자열의 길이가 3인지 검증하는 메소드 구현
holyPigeon Oct 21, 2023
3f842a4
feat: 입력된 문자열이 정수인지 검증하는 메소드 구현
holyPigeon Oct 21, 2023
a1d9bb8
feat: 입력된 문자열이 양의 정수인지 검증하는 메소드 구현
holyPigeon Oct 21, 2023
3fa283b
docs: 기능 구현 목록 수정
holyPigeon Oct 21, 2023
9a41677
feat: 문자열 타입의 숫자를 리스트로 변환하는 메소드 구현
holyPigeon Oct 21, 2023
b8ae0d1
feat: 문자열 타입의 숫자를 리스트로 변환하는 메소드 구현
holyPigeon Oct 21, 2023
e883167
feat: 입력된 정수들의 범위가 1부터 9인지 검증하는 메소드 구현
holyPigeon Oct 21, 2023
aa87a43
feat: 입력된 정수들의 범위가 1부터 9인지 검증하는 메소드 구현
holyPigeon Oct 21, 2023
0ccd0a5
feat: 입력값을 전체적으로 검증하는 메소드 구현
holyPigeon Oct 21, 2023
7beebcb
feat: NumberUtil 클래스 protected 생성자 적용
holyPigeon Oct 21, 2023
18a85ad
feat: 숫자 비교에 따라 힌트를 결정하는 메소드 구현
holyPigeon Oct 21, 2023
c2942b9
feat: 숫자 비교에 따라 힌트를 결정하는 메소드 구현
holyPigeon Oct 21, 2023
853499c
feat: 플레이어가 입력한 숫자의 위치를 비교하는 메소드 구현
holyPigeon Oct 21, 2023
21c2c51
feat: 플레이어가 입력한 각 숫자가 컴퓨터의 숫자에 있는지 확인하는 메소드 구현
holyPigeon Oct 21, 2023
61ee655
feat: Hint 클래스 생성
holyPigeon Oct 21, 2023
9f206ba
feat: Hint 클래스 필드 변수 구현
holyPigeon Oct 21, 2023
c36a2af
feat: Hint 클래스 생성자 구현
holyPigeon Oct 21, 2023
f3b74ef
feat: strike과 ball의 개수를 증가시키는 메소드 구현
holyPigeon Oct 21, 2023
b1b5922
feat: strike과 ball이 각각 존재하는지 확인하는 메소드 구현
holyPigeon Oct 21, 2023
b85b382
feat: strike이 3개인지 확인하는 메소드 구현
holyPigeon Oct 21, 2023
0a018f2
feat: strike와 ball의 각 개수에 따라 문자열을 반환하는 메소드 구현
holyPigeon Oct 21, 2023
75c32f1
feat: 조건에 따라 문자열을 이어붙여 힌트 문자열을 반환하는 메소드 구현
holyPigeon Oct 21, 2023
dece719
feat: 게임 재시작 메시지를 출력하는 메소드 구현
holyPigeon Oct 21, 2023
9c2f5d4
feat: 게임 종료 메시지를 출력하는 메소드 구현
holyPigeon Oct 21, 2023
cdf391e
feat: 힌트 메시지를 출력하는 메소드 구현
holyPigeon Oct 21, 2023
58f4c0b
feat: GameController 클래스 생성
holyPigeon Oct 21, 2023
a5b561d
feat: GameController 클래스 의존성 주입 로직 구현
holyPigeon Oct 21, 2023
321d147
feat: Player 클래스 getter, setter 메소드 구현
holyPigeon Oct 21, 2023
96ebaa2
feat: 컴퓨터의 숫자를 세팅하는 메소드 구현
holyPigeon Oct 21, 2023
21d8873
feat: 플레이어의 숫자를 세팅하는 메소드 구현
holyPigeon Oct 21, 2023
1cbb840
feat: 야구 게임 진행 메소드 구현
holyPigeon Oct 21, 2023
ff10a88
feat: 야구 게임 시작 메소드 구현
holyPigeon Oct 21, 2023
95a5942
feat: 야구 게임 어플리케이션 실행 로직 구현
holyPigeon Oct 21, 2023
975ac74
docs: 리팩토링 목록 작성
holyPigeon Oct 22, 2023
204baf0
docs: 기존 과제 설명 및 요구 사항 제거
holyPigeon Oct 22, 2023
5407aee
refector: 숫자 비교에 따른 힌트 설정 로직 최적화
holyPigeon Oct 22, 2023
2c5dae8
refector: 일부 for문을 stream 메소드를 사용하여 간소화
holyPigeon Oct 22, 2023
fb9aea7
fix: 정수 범위 검증 로직에서 발생하는 에러 수정
holyPigeon Oct 22, 2023
aecfe0d
docs: README.md와 docs/README.md의 혼용 수정
holyPigeon Oct 23, 2023
3f10741
refector: Hint 클래스 관련 힌트 메시지 목록을 Enum으로 분리
holyPigeon Oct 23, 2023
2aa4de1
refector: 입력값 검증 시 발생하는 예외의 목록을 Enum으로 분리
holyPigeon Oct 23, 2023
922610b
refector: strike 및 ball 개수에 따른 상태 반환 메소드 최적화
holyPigeon Oct 23, 2023
5d5e377
refector: 입력값 검증 시의 검증 조건들을 Enum으로 분리
holyPigeon Oct 23, 2023
f77d26f
refector: View 계층에서 출력하는 시스템 메시지의 목록을 Enum으로 분리
holyPigeon Oct 23, 2023
c4916ee
refector: ViewService의 기능을 InputView와 OutputView로 각각 분리
holyPigeon Oct 23, 2023
3d8960f
fix: 정수 범위 검증 로직에서 발생하는 에러 수정
holyPigeon Oct 23, 2023
80ff667
feat: 문자열을 정수 타입의 리스트로 변환하는 유틸 메소드 구현
holyPigeon Oct 23, 2023
fc2dcab
feat: Player 클래스의 setter를 제거하고 생성 시에만 필드 변수값을 정할 수 있도록 수정
holyPigeon Oct 23, 2023
f4218a0
fix: 리스트를 문자열로 변환하는 유틸 메소드가 제대로 동작하지 않는 오류 수정
holyPigeon Oct 23, 2023
4b785df
refector: 싱글톤 패턴 적용
holyPigeon Oct 23, 2023
56702e5
refector: ViewService 클래스 삭제
holyPigeon Oct 23, 2023
7c7cfda
refector: GameController의 메소드명을 명시적으로 변경
holyPigeon Oct 23, 2023
e205988
refector: 힌트 생성 시의 숫자 비교 로직 메소드 분리
holyPigeon Oct 24, 2023
2fd7397
refector: 힌트 생성 메소드명을 명시적으로 변경
holyPigeon Oct 24, 2023
df1279b
refector: Player 객체를 불변 객체로 만들기 위한 로직 구현
holyPigeon Oct 24, 2023
67b34c9
refector: 게임 종료 및 재시작 enum 추가 구현
holyPigeon Oct 24, 2023
7adc68e
refector: 게임 실행 조건을 가독성 향상을 위해 메소드로 분리
holyPigeon Oct 24, 2023
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
158 changes: 35 additions & 123 deletions README.md
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docs/README.md가 아니라 원본 README.md를 변경한 이유가 궁금합니당

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ㅋㅋㅋㅋ아니 이거는 docs 폴더에도 리드미가 있는 줄 몰랐습니다... 바로 옮겨야겠네요

Original file line number Diff line number Diff line change
@@ -1,144 +1,56 @@
# 미션 - 숫자 야구

## 🔍 진행 방식
## ✅ 기능 구현 목록

- 미션은 **기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항** 세 가지로 구성되어 있다.
- 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만든다.
- 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다.
### 게임 준비

## 📮 미션 제출 방법
- [x] 컴퓨터의 숫자를 랜덤하게 정한다.

- 미션 구현을 완료한 후 GitHub을 통해 제출해야 한다.
- GitHub을 활용한 제출 방법은 [프리코스 과제 제출](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) 문서를 참고해
제출한다.
- GitHub에 미션을 제출한 후 [우아한테크코스 지원](https://apply.techcourse.co.kr) 사이트에 접속하여 프리코스 과제를 제출한다.
- 자세한 방법은 [제출 가이드](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse#제출-가이드) 참고
- **Pull Request만 보내고 지원 플랫폼에서 과제를 제출하지 않으면 최종 제출하지 않은 것으로 처리되니 주의한다.**
### 게임 진행

## 🚨 과제 제출 전 체크 리스트 - 0점 방지
- [x] 플레이어의 숫자를 입력받는다.
- [x] 숫자를 입력받는다.
- [x] 문자열 타입의 숫자를 리스트로 변환한다.
- [x] 입력값을 검증한다.
- [x] 입력된 문자열이 비어있지 않은지 검증한다.
- [x] 입력된 문자열의 길이가 3인지 검증한다.
- [x] 입력된 문자열이 정수인지 검증한다.
- [x] 입력된 문자열이 양의 정수인지 검증한다.
- [x] 입력된 정수들의 범위가 1부터 9인지 검증한다.
- [x] 입력된 정수들이 서로 다른 수인지 검증한다.
- [x] 입력값이 부적절한 경우, 예외를 반환한다.

- 기능 구현을 모두 정상적으로 했더라도 **요구 사항에 명시된 출력값 형식을 지키지 않을 경우 0점으로 처리**한다.
- 기능 구현을 완료한 뒤 아래 가이드에 따라 테스트를 실행했을 때 모든 테스트가 성공하는지 확인한다.
- **테스트가 실패할 경우 0점으로 처리**되므로, 반드시 확인 후 제출한다.

### 테스트 실행 가이드
- [x] 플레이어가 입력한 숫자와 컴퓨터의 숫자를 비교한다.
- [x] 플레이어가 입력한 각 숫자가 컴퓨터의 숫자에 있는지 확인한다.
- [x] 플레이어가 입력한 숫자와 위치를 비교한다.
- [x] 숫자 비교에 따라 힌트를 결정한다.

- 터미널에서 `java -version`을 실행하여 Java 버전이 17인지 확인한다.
Eclipse 또는 IntelliJ IDEA와 같은 IDE에서 Java 17로 실행되는지 확인한다.
- 터미널에서 Mac 또는 Linux 사용자의 경우 `./gradlew clean test` 명령을 실행하고,
Windows 사용자의 경우 `gradlew.bat clean test` 또는 `./gradlew.bat clean test` 명령을 실행할 때 모든 테스트가 아래와 같이 통과하는지 확인한다.

```
BUILD SUCCESSFUL in 0s
```
- [x] 결정된 힌트를 출력한다.
- [x] 플레이어가 숫자를 맞추지 못한 경우, 다시 `게임 준비`로 돌아가 숫자를 입력받는다.
- [x] 플레이어가 3개의 숫자를 모두 맞췄다면 게임을 다시 시작할 지, 종료할 지 결정한다.
- [x] "1"을 누르면 게임을 다시 시작, "2"를 누르면 게임을 종료한다.

---

## 🚀 기능 요구 사항
## 🛠️ 리팩토링 목록

기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다.
### 실행 로직 간소화 및 성능 향상

- 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다.
- 예) 상대방(컴퓨터)의 수가 425일 때
- 123을 제시한 경우 : 1스트라이크
- 456을 제시한 경우 : 1볼 1스트라이크
- 789를 제시한 경우 : 낫싱
- 위 숫자 야구 게임에서 상대방의 역할을 컴퓨터가 한다. 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다. 게임 플레이어는 컴퓨터가 생각하고 있는 서로 다른 3개의 숫자를 입력하고, 컴퓨터는 입력한 숫자에 대한
결과를 출력한다.
- 이 같은 과정을 반복해 컴퓨터가 선택한 3개의 숫자를 모두 맞히면 게임이 종료된다.
- 게임을 종료한 후 게임을 다시 시작하거나 완전히 종료할 수 있다.
- 사용자가 잘못된 값을 입력할 경우 `IllegalArgumentException`을 발생시킨 후 애플리케이션은 종료되어야 한다.
- [x] 숫자 비교에 따른 힌트 설정 로직을 간소화하고 성능을 향상시킨다.
- [x] for문을 stream 메소드를 사용하여 간소화한다.

### 입출력 요구 사항
### 일부 변수들의 상수 변환

#### 입력
- [ ] Hint 클래스 관련 힌트 목록을 Enum으로 분리한다.
- [ ] 입력값 검증 시 발생하는 예외의 목록을 Enum으로 분리한다.
- [ ] View 계층에서 출력하는 메시지의 목록을 Enum으로 분리한다.

- 서로 다른 3자리의 수
- 게임이 끝난 경우 재시작/종료를 구분하는 1과 2 중 하나의 수
### getter 및 setter 제거

#### 출력
- [ ] Player 클래스의 getter 및 setter를 제거하고 비즈니스 로직을 도메인 내에 구현한다.

- 입력한 수에 대한 결과를 볼, 스트라이크 개수로 표시
### 기타

```
1볼 1스트라이크
```

- 하나도 없는 경우

```
낫싱
```

- 3개의 숫자를 모두 맞힐 경우

```
3스트라이크
3개의 숫자를 모두 맞히셨습니다! 게임 종료
```

- 게임 시작 문구 출력

```
숫자 야구 게임을 시작합니다.
```

#### 실행 결과 예시

```
숫자 야구 게임을 시작합니다.
숫자를 입력해주세요 : 123
1볼 1스트라이크
숫자를 입력해주세요 : 145
1볼
숫자를 입력해주세요 : 671
2볼
숫자를 입력해주세요 : 216
1스트라이크
숫자를 입력해주세요 : 713
3스트라이크
3개의 숫자를 모두 맞히셨습니다! 게임 종료
게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.
1
숫자를 입력해주세요 : 123
1볼
...
```

---

## 🎯 프로그래밍 요구 사항

- JDK 17 버전에서 실행 가능해야 한다. **JDK 17에서 정상적으로 동작하지 않을 경우 0점 처리한다.**
- 프로그램 실행의 시작점은 `Application`의 `main()`이다.
- `build.gradle` 파일을 변경할 수 없고, 외부 라이브러리를 사용하지 않는다.
- [Java 코드 컨벤션](https://github.com/woowacourse/woowacourse-docs/tree/master/styleguide/java) 가이드를 준수하며 프로그래밍한다.
- 프로그램 종료 시 `System.exit()`를 호출하지 않는다.
- 프로그램 구현이 완료되면 `ApplicationTest`의 모든 테스트가 성공해야 한다. **테스트가 실패할 경우 0점 처리한다.**
- 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다.

### 라이브러리

- `camp.nextstep.edu.missionutils`에서 제공하는 `Randoms` 및 `Console` API를 사용하여 구현해야 한다.
- Random 값 추출은 `camp.nextstep.edu.missionutils.Randoms`의 `pickNumberInRange()`를 활용한다.
- 사용자가 입력하는 값은 `camp.nextstep.edu.missionutils.Console`의 `readLine()`을 활용한다.

#### 사용 예시

```java
List<Integer> computer = new ArrayList<>();
while (computer.size() < 3) {
int randomNumber = Randoms.pickNumberInRange(1, 9);
if (!computer.contains(randomNumber)) {
computer.add(randomNumber);
}
}
```

---

## ✏️ 과제 진행 요구 사항

- 미션은 [java-baseball-6](https://github.com/woowacourse-precourse/java-baseball-6) 저장소를 Fork & Clone해 시작한다.
- **기능을 구현하기 전 `docs/README.md`에 구현할 기능 목록을 정리**해 추가한다.
- 과제 진행 및 제출 방법은 [프리코스 과제 제출](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) 문서를 참고한다.
- [ ] ViewService의 기능을 InputView와 OutputView로 각각 분리한다.
7 changes: 6 additions & 1 deletion src/main/java/baseball/Application.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package baseball;

import baseball.application.NumberService;
import baseball.controller.GameController;
import baseball.view.ViewService;

public class Application {
public static void main(String[] args) {
// TODO: 프로그램 구현
GameController controller = new GameController(new NumberService(), new ViewService());
controller.startGame();
}
}
43 changes: 43 additions & 0 deletions src/main/java/baseball/application/NumberService.java
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NumberService, ViewService는 멤버변수가 없는 객체인 것 같아요.
멤버변수가 없는 객체를 new로 생성해야만 하는 이유가 있는지 궁금합니다!
만약 뾰족한 이유가 없다면, static으로 처리해서 생성자로 생성하는 부분을 해치워도 좋을 것 같구요!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

별 생각 없이 의존성 주입을 생각하고 저렇게 코드를 짰었는데 다시보니 딱히 저럴 필요가 없었던 것 같네요. 말씀하신 것처럼 static 처리하는 게 나을 것 같습니다...! 찾아보니까 이런 식으로 인스턴스를 한 개만 생성하는 게 싱글톤 패턴이라고 하네요. 이름만 많이 들어봤는데 이번에 배우고 갑니다!

Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package baseball.application;

import baseball.domain.Hint;
import baseball.domain.Player;
import camp.nextstep.edu.missionutils.Randoms;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;

public class NumberService {

public List<Integer> getRandomNumber() {
Set<Integer> numberSet = new HashSet<>();
while (numberSet.size() < 3) {
numberSet.add(Randoms.pickNumberInRange(1, 9));
}

return new ArrayList<>(numberSet);
}

public Hint getHint(Player computer, Player player) {
List<Integer> computerNumber = computer.getNumbers();
List<Integer> playerNumber = player.getNumbers();
Hint hint = new Hint();

compareNumber(computerNumber, playerNumber, hint);

return hint;
}
Comment on lines +14 to +37
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 get*** 메소드를 들었을 때, getter의 인식이 강하게 들었어요.
RandomNumber를 만드는 메소드니까 generate, create등 메소드 명을 고려해봐도 좋을 것 같아요.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확실히 get 말고 다른 이름을 쓰는 게 좀 더 명시적인 것 같습니다...!


private static void compareNumber(List<Integer> computerNumber, List<Integer> playerNumber, Hint hint) {
for (int i = 0; i < playerNumber.size(); i++) {
Integer myNumber = playerNumber.get(i);
if (Objects.equals(myNumber, computerNumber.get(i))) {
hint.increaseStrike();
} else if (computerNumber.contains(myNumber)) {
hint.increaseBall();
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스트라이크 비교로직이랑 볼 비교로직도 분리하면 더 직관적일 것 같아요!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확실히 처음 보면 많이 복잡한 느낌이 있기는 하네요...! 수정해보겠습니당

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

import baseball.application.NumberService;
import baseball.domain.Hint;
import baseball.domain.Player;
import baseball.util.NumberUtil;
import baseball.view.ViewService;
import java.util.Objects;

public class GameController {

private final NumberService numberService;
private final ViewService viewService;

public GameController(NumberService numberService, ViewService viewService) {
this.numberService = numberService;
this.viewService = viewService;
}

public void startGame() {
do {
Player computer = prepareComputer();

play(computer);

} while (!Objects.equals(viewService.readNumber(), "2")); // 종료(2)를 누르지 않으면 게임을 다시 시작한다.
}

private void play(Player computer) {
while (true) {
Player player = preparePlayer();
Comment on lines +22 to +30
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Player computer
Player player

플레이어 객체의 변수명이 조금 헷갈리는 이슈!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

인정합니다... 만들다보니까 computer랑 player가 각각 역할이 좀 다르긴 해서 다른 객체로 만들어봐도 좋았을 것 같습니다


Hint hint = numberService.getHint(computer, player); // 컴퓨터와 플레이어의 숫자를 비교하여 힌트를 얻는다.
viewService.printHintMessage(hint); // 힌트를 출력, 만약 숫자가 맞는다면 게임 종료 메시지도 출력한다.
if (hint.isThreeStrike()) { // 숫자를 맞췄다면 끝낸다.
break;
}
}
}

private Player prepareComputer() {
Player computer = new Player();
computer.setPlayer(numberService.getRandomNumber());
return computer;
}

private Player preparePlayer() {
Player player = new Player();

viewService.printReadMessage();
String number = viewService.readNumber();
NumberUtil.validate(number);
player.setPlayer(NumberUtil.converStringToList(number));

return player;
}
}
76 changes: 76 additions & 0 deletions src/main/java/baseball/domain/Hint.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package baseball.domain;

import java.util.ArrayList;

public class Hint {

private int strike;

private int ball;

public Hint() {
strike = 0;
ball = 0;
}

public void increaseStrike() {
strike++;
}

public void increaseBall() {
ball++;
}

public boolean isHintNothing() {
return isStrikeExist() && isBallExist();
}

public boolean isStrikeExist() {
if (strike > 0) {
return true;
}
return false;
}
Comment on lines +28 to +36
Copy link
Copy Markdown
Member

@h-beeen h-beeen Oct 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public boolean isStrikeExist() {
if (strike > 0) {
return true;
}
return false;
}
public boolean isStrikeExist() {
return strike > 0;
}
```

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 왜 이렇게 짰을까요 ㅋㅋㅋ 수정해보겠습니당


public boolean isBallExist() {
if (ball > 0) {
return true;
}
return false;
}

public boolean isThreeStrike() {
if (strike == 3) {
return true;
}
return false;
}
Comment on lines +35 to +44
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분도 위 제안드린 내용처럼 축약할 수 있겠어요!


public String toString() {
ArrayList<String> resultString = new ArrayList<>();

if (isBallExist()) {
resultString.add(getBallString());
}
if (isStrikeExist()) {
resultString.add(getStrikeString());
}
if (isHintNothing()) {
resultString.add(getNothingString());
}

return String.join(" ", resultString);
}

public String getStrikeString() {
return strike + "스트라이크";
}

public String getBallString() {
return ball + "볼";
}

public String getNothingString() {
return "낫싱";
}
}
17 changes: 17 additions & 0 deletions src/main/java/baseball/domain/Player.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package baseball.domain;

import java.util.ArrayList;
import java.util.List;

public class Player {

private List<Integer> numbers = new ArrayList<>();

public List<Integer> getNumbers() {
return numbers;
}

public void setPlayer(List<Integer> number) {
numbers = number; // 컴퓨터의 숫자를 정한다.
}
}
Loading