Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

숫자 야구 [STEP1] Diana, Denny #204

Open
wants to merge 14 commits into
base: ic_11_diana
Choose a base branch
from

Conversation

Diana-yjh
Copy link

숫자야구 [STEP1], [STEP2] 완료

안녕하세요! @serena0720! 🥰
PR 요청 드립니다 🙏

코드 설명

파일 명: 설명

main: NumberBaseBall 인스턴스 생성 후 execute() 함수 실행
ExcuteGame(오타 ㅎㅎ): 메뉴를 입력받는 execute() 함수 구현
GameStart: 컴퓨터 랜덤함수 생성하는 generateNumber() 함수와 유저 인풋을 받는 userInputNumber() 함수 실행
GenerateNumber: 컴퓨터 랜덤함수 생성과 검증 구현
UserInputNumber: 유저 랜덤 숫자 입력과 검증 구현
CheckStrikeAndBall: 스트라이크와 볼 판정 및 게임 종료

고민한 점

  • Array 내부 중복되는 Element 검증 방법 (GenerateNumber, UserInputNumber)
  • 숫자 야구 로직 Flow (FlowChart)
  • 스트라이크와 볼 체크 방법
  • 게임 종료 후 메뉴를 다시 입력받는 로직

마주한 문제점 및 해결 방법

  • 문제점1: 게임이 9회 종료된 이후에 게임이 자동 재시작되는 문제

  • 해결 방법: 스트라이크, 볼 체크 함수인 compare 함수에 While문이 씌워져있어 While문 제거

  • 문제점2: 게임이 진행되지 않고 UserInput이 반복되는 오류 수정

  • 해결방법: 불필요한 반복조건을 삭제하고 User가 숫자가 아닌 잘못된 값을 입력했을 경우 유저입력을 받는 함수 재 호출


🙏 감사합니다! 🙏

Comment on lines +9 to +18
class NumberBaseBall {
var comNumList: Array<String>
var userNumList: Array<String>
var repeatTime: Int = 9

init(comNumList: Array<String>, userNumList: Array<String>) {
self.comNumList = comNumList
self.userNumList = userNumList
}
}

Choose a reason for hiding this comment

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

해당 객체도 별도의 파일로 구분하면 좋을 거 같습니다!😊


let numberBaseball = NumberBaseBall(comNumList: [], userNumList: [])

Choose a reason for hiding this comment

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

해당 객체를 빈배열로 넣어주는 이유가 있을까요?
10,11번째줄에서 NumberBaseBall의 초기값으로 주는 것과 차이가 있을까요?


import Foundation

extension NumberBaseBall {

Choose a reason for hiding this comment

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

extension으로 하신 이유가 있을까요?

Comment on lines +24 to +27
guard let input = readLine(), !input.isEmpty else {
print("입력이 잘못 되었습니다.")
continue
}

Choose a reason for hiding this comment

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

현재와 같이 에러처리를 하게되면 빈값 이외의 잘못된 입력에 대한 예외처리가 안될 거 같습니다! Step2의 조건인 메뉴의 잘못된 입력 처리의 예시를 참고하시어 수정해주세요😊

import Foundation

extension NumberBaseBall {
enum GameFunc: String {

Choose a reason for hiding this comment

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

swift에선 약어보단 풀네이밍이 선호됩니다😆

Comment on lines +10 to +16
extension NumberBaseBall {
func gameStart(){
generateNumber()
userInputNumber()
}
}

Choose a reason for hiding this comment

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

1️⃣ extension으로 하신 이유가 있을까요?

2️⃣ 별도의 파일로 분리한 이유가 있을까요?
파일을 분리하는 기준을 생각해보시면 좋을 거 같아요!

코드는 결국 협업을 위한 것이기 때문에 파일분리, 객체 extension은 근거가 필요합니다!

comNumList.append(randomNumStr)
}
}
print("comNumList - \(comNumList)")

Choose a reason for hiding this comment

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

해당 부분은 확인을 위한 print 구문인 거 같습니다😊
삭제부탁드려요!

Comment on lines +22 to +26
guard splitUserInput.count == 3 else {
print("숫자 3개를 띄어쓰기로 구분하여 입력해주세요.")
userInputNumber()
return
}

Choose a reason for hiding this comment

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

잘못된 입력 시 스텝에서 제시하는 조건에 맞추어 print구문 수정이 필요할 거 같습니다!

@serena0720
Copy link

안녕하세요 Diana, Danny!😊
연초랑 아카데미 시작이 맞물리면서 시간이 빠듯한 프로젝트가 되었을 거 같습니다ㅜ
앞으로 잘 부탁드립니다!
언제든 궁금한 거 있으면 질문 주시고 화이팅하세요💪
첫주차이다보니 프로젝트와 별개로 앞으로 캠프 생활하시면서 참고하시면 좋을부분들도 코멘트 남겨놓겠습니다! 참고해주세요~

✅ 프로젝트와 별개로 체크하실 부분

  • fork떠가실땐 본인거만 떠가셔야 해요! 현재 프로젝트는 main을 떠가신거 아닌가 싶습니다👀
  • 스텝을 진행하실 때, 브랜치를 분리하시는 것이 좋습니다! Ex. Step1브랜치에서 PR후 merge가 되면 이를 main에 병합 후 Step2 브랜치를 새롭게 생성하여 작업하는 식으로요!
  • README 작성은 미래의 저를 위한 것입니다! README 피드백 참고하셔서 수정도 해보시고 가독성좋은, 프로젝트를 보다 잘 어필할 수 있는 README 작성해보세요~!💪
  • PR은 Step별로 보내야 합니다! 개인사정이 있는 경우 꼭 리뷰어와 상의해주세요🙆‍♀️
  • 프로젝트 스텝 별 예시 및 조건은 항상 꼼꼼하게 체크해주시고, 테스트를 위한 print구문은 삭제해주세요~!

👍 전체적인 코드 작성 및 문법적인 부분에서 크게 수정요청드릴 부분은 없을 정도로 잘 짜신 거 같습니다!
다만 객체를 분리하지 않고 extension으로 파일 분리를 진행하셨는데, 객체 지향적인 관점에서 이부분 고민해보시면 좋을 거 같습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants