카드 게임 블랙잭을 구현해보았다.
이전에 학습 했던 MVC패턴을 응용하고, 테스트 코드 또한 작성해보는 실습을 했다.
학습 과정에서 어려웠던 점은 객체를 분류하고, 그에 따른 객체의 역할과 동작을 설계하여, MVC 패턴을 지키면서 작성하는 것이었다.
이 과정에서 getter, setter를 사용하지 않고, DTO를 사용하면서 객체의 존재를 유지하면서 구현을 해보았다.
먼저, 객체로 정의할 것에 대해서 생각 해보았다.
블랙잭은 21의 숫자에 가깝게 카드를 가지면 이기고, 21은 넘어가면 지는 게임이다. 그래서 이에 따라 역할을 생각 해보았을 때
크게 card, player, dealer로 3가지가 떠올랐다.
그래서 이에 대한 구현을 시작으로 해보았다. 첫 번째로 카드에 대한 특징과 가지고 있는 것에 대해서 알아보았다.
카드는 스페이드, 다이아몬드, 클로버, 하트의 4가지 모양이 있을 수 있고, 1~10까지의 숫자를 가진다. J,Q,K가 있지만 모두 10으로 계산한다는 요구사항이 있어서 따로 이들을 분류하지는 않았다.
그래서 카드의 문양을 나타내는 cardsymbol과, 카드의 숫자를 나타내는 cardValue를 클래스로 정의하고, 이를 통해 카드를 만들었다.
그 다음은 dealer와 player다.
둘의 역할은 비슷하지만, dealer의 역할이 추가적으로 있다고 생각을해서 dealer가 player를 상속하도록 만들었다.
이렇게 한 후
Controller에서 게임을 다룰 수 있도록, playGameService를 구현하였다.
그리고 이런 과정을 통해서 나오는 입출력의 결과를 InputView와 OutputView로 관리하였다.
구현 코드는 아래 깃허브에서 확인할 수 있다.
https://github.com/juntae6942/java-blackjack
GitHub - juntae6942/java-blackjack
Contribute to juntae6942/java-blackjack development by creating an account on GitHub.
github.com
이 실습 과정을 진행하면서 아직 Java 코드 컨벤션에 대한 습관이 덜 되었다는 것과 코드 작성에 있어서 중복 사용되는 로직이나, 변수명, 메서드명 관리가 부족하다는 것을 깨달았고, 좀 더 학습이 필요함을 깨달았다.
'모각코 > 어쩌다보니 박준태가 조장이조' 카테고리의 다른 글
5회차 어쩌다보니 박준태가 조장이조 - 1.30.(화) (0) | 2024.02.03 |
---|---|
1.22.(월) 모각코 (0) | 2024.01.30 |
4회차 어쩌다보니 박준태가 조장이조 - 1.22.(월) (0) | 2024.01.22 |
3회차 어쩌다보니 박준태가 조장이조 - 1.17.(수) (1) | 2024.01.17 |
1.10.(수) 모각코 (0) | 2024.01.15 |