-
Notifications
You must be signed in to change notification settings - Fork 8
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
[블랙잭 게임 미션] 김대욱 미션 제출합니다. #2
base: MarriedSenior
Are you sure you want to change the base?
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.
안녕하세요 대욱님!
타지에서 시간 없으실텐데도 열심히 잘 해주시고 계십니다!
코드 짜는 실력은 이제 확실히 점차 늘어가는게 보이는데, 아직 기능이 완성이 되진 않아서 그 부분은 아쉽네요!
리뷰는 최소한으로 남겨드렸고, 추후 구현하시면 다시 확인해보겠습니다!
- 플레이어가 카드를 더 받을지 받지 않을지 y 혹은 n으로 입력받는다. | ||
|
||
## 입력시 예외처리 | ||
- 플레이어의 이름을 입력받을 때 타입이 맞지 않으면 예외처리 |
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.
타입이 맞지 않는다
라는 것은 구현 세부적인 내용이네요! 다른 말로는 개발자가 아니라면 '타입이 뭐지?!' 라는 생각이 들 수 있습니다.
기능 목록은 정말로 광화문에 있는 사람 아무나 데려왔을 때에도 이해하는게 가능할 정도로 쉽게 작성하도록 연습하면 좋습니다!
'프로그램을 위한 기능 명세서'를 작성한다기보다, '서비스에 대한 기능 명세서'를 작성한다는 느낌으로 해보시면 좋을 것 같아요 😄
## 블랙잭 게임 구현 | ||
- 카드의 숫자 계산은 카드 숫자를 기본으로 ace는 1 또는 11로 계산한다. | ||
- king, queen, jack은 각각 10으로 계산한다. | ||
- 게임을 시작하면 플레이어는 두장의 카드를 지급 받으며, 두 장의 카드 숫자가 21을 초과하지 않을 경우에는 카드를 더 뽑을 수 있음. | ||
- 딜러는 처음에 받은 2장의 합계가 16이하면 반드시 1장의 카드를 추가로 뽑음. | ||
- 게임의 승패는 딜러보다 높으면서 카드 숫자의 총합이 21을 넘지 않음으로 구분. | ||
|
||
## 출력 | ||
- 게임에 참여할 사람의 입력하라는 문구 출력 | ||
- 플레이 시작시 2장을 나누었다는 문구 출력 | ||
- 플레이 시작시 딜러와 플레이어들이 받은 카드들을 출력 | ||
- 각 플레이어가 카드를 더 받을지를 입력하라는 문구 출력 | ||
- 딜러와 플레이어들이 카드를 받을 때 마다 각자의 카드 소유 현황을 출력. | ||
- 딜러가 16이하라 카드를 한장 더 받는 경우 그 문구를 출력. | ||
- 게임의 결과 딜러와 플레이어들의 카드 소유 현황과 점수의 합을 출력. | ||
- 최종 승패를 출력. |
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 List<Player> winners = new ArrayList<>(); | ||
public BlackJackGame(List<String> splitPlayerNames) { |
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.
수정했습니다.
private Dealer dealer = new Dealer(); | ||
private List<Player> players; | ||
private CardDeck cardDeck = new CardDeck(); |
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.
개인적인 생각인데, 필드에서 직접적으로 객체를 직접적으로 초기화하는 경우는 크게 없는 것 같아요.
우선 구현체를 고정시켜버린다는 점에서 유연성이 낮아지는게 큰 이유라고 생각합니다. (가령 Dealer를 상속받은 CustomDealer로 블랙잭 게임을 진행하고 싶다면 위 구조는 변경되어야 하겠죠)
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.
아 그럼 생성자에서 초기화를 하면 된다는 뜻인가요? 수정했습니다.
public List<Player> getWinner(){ | ||
gattherWinner(players); | ||
return winners; | ||
} |
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.
딜러의 승패도 출력되어야 하니, 추후 getDealerStatus
등과 같은 메소드가 필요하겠네요!
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class CardGenerator { |
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.
카드 생성 로직을 따로 클래스로 위임해주셨네요!
그런데, 현재 오로지 CardDeck
을 위한 카드를 생성하고 있어서, 해당 객체가 다른 객체로부터 재사용될 일이 없을 것 같아요!
어떻게 생각하시나요? 객체를 분리하신 이유에 대해 궁금합니다!
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.
수정 완료.
구현 도중에 미리 업로드합니다.
제 아내가 출산 전에 터키에 있는 마지막 시기라서 제가 이번에 집중을 할 수 없었습니다만 이번 미션은 객체지향적으로 짜보려고 노력해보고 있습니다. 최선을 다해 따라가보겠습니다만 1차 미션 리뷰를 혹시 하루만 더 늘려서 받으면 안될까요?
제가 시차 때문에 안그래도 바쁜데 미션 시작날과 끝나는 날 하루씩 해서 5일이면 이틀이 다른 분들보다 짧은 것 같네요....ㅜㅜ 3일만에 항상 구현해야돼서 빡빡합니다. 열심히 해서 다시 제출하겠습니다.