-
Notifications
You must be signed in to change notification settings - Fork 51
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
[스캇] 3, 4단계 오목 제출합니다. #42
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안드로이드 미션 고생 많으셨습니다.
도메인을 비롯해 몇가지 고민해볼만한 내용을 남겼으니 충분히 고민 후 도전해보세요.
자연스러운 방법입니다. 물론 마스터 오목 게임 객체를 만들 수 있지만 동기와 비동기 동작 등 많이 어려운 개념이 필요하기 때문에 고민 하신 점으로 충분합니다. |
앞선 의견처럼 도메인을 어떤 객체로 해석하는가에 따라 패턴과 적합한가 아닌가를 생각 해 볼 수 있습니다. |
논리적으로 이해가 되는 결과라면 null을 반환하는데 문제가 없습니다. 그렇지만 실패를 비롯해 왜 null을 반환하는것인지 예측할 수 없다면 좋은 방법이 아닙니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
피드백 반영 고생하셨습니다.
마지막 미션인 만큼, 개선 해보면 좋을만한 내용을 몇가지 남겨드렸습니다.
private fun clickBoard(index: Int, view: ImageView) { | ||
view.setOnClickListener { | ||
if (omokGame.isRunning()) gameRunning(index, view) | ||
if (!omokGame.isRunning()) gameFinished() | ||
} | ||
} | ||
|
||
private fun gameRunning(index: Int, view: ImageView) { | ||
val stone = omokGame.getStone(Converter.indexToPosition(index)) | ||
val isSuccess = omokGame.placeTo(stone) | ||
if (isSuccess) { | ||
printStone(view, stone) | ||
omokDbManager.updateOmokDatabase(stone) | ||
omokGame.checkFinished() | ||
} | ||
showTurn(omokGame.currentColor) | ||
} | ||
|
||
private fun gameFinished() { | ||
omokGame.getWinnerColor()?.let { printWinner(it) } | ||
reset(boardCoordinateViews, omokGame) | ||
showTurn(omokGame.currentColor) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
지금 로직에서는 다음 바둑돌을 내려놔야만 게임이 종료된 것을 아는 것일까요?
게임 진행과 종료까지는 하나의 흐름으로 봐야 하지 않을까요?
돌을 클릭한다 -> 돌을 내려둔다 -> 게임이 종료되었는지 확인한다 -> 종료한다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리뷰어님의 의도를 정확히 알 수 있을까요?? 게임 진행과 종료까지는 하나의 흐름으로 봐야한다는게 이해가 잘 되지 않습니다. ClickBoard 함수 안에서 하나의 흐름을 실행시키고 있다고 볼 수 있지 않을까요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
보드를 클릭했을때 다음 클릭을 하지 않더라도 자동으로 게임이 종료되는 것을 생각했습니다.
돌을 내려둔 뒤, checkFinished()는 호출하지만 이어서 게임이 실제로 종료되는 것으로 전환 하는 것은 "다음 클릭" 이벤트가 발생한 시점으로 보여서요.
이 내용은 컨트롤러의 구현 방법에 따라 다를 수 있겠네요.
하나의 UI 이벤트가 결과적으로 상태를 변경하는 흐름이 되는 것을 기대하고는 했습니다.
아래 내용은 참고만 해주세요~
fun onClickBoard(...) [
val placeResult = omokGame.placeTo(...)
when (placeResult) {
"게임 끝" -> printEnd()
"게임 중" -> printRunning()
"게임 ..." -> ...
}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
피드백 확인했습니다.
안드로이드 환경에서 구현하더라도 지금까지 해온 미션을 잘 살릴 수 있도록 잘 활용 해보시면 좋겠습니다.
오목 미션은 종료하겠습니다.
그동안 고생 많으셨습니다. 🎉
안녕하세요, 스캇입니다!
최대한 도메인을 수정하지 않고 코드를 작성해보려고 했습니다.
이번 리뷰 하면서 수정했던점, 그리고 궁금했던점 몇가지 남겨봅니다!
이로 인한 문제점은 따로 없을까요?
항상 좋은 리뷰해주셔서 감사합니다!