🚀 상속, interface - 연료 주입
-
자동차 인터페이스를 만든다.
-
주입해야 할 연료량 구하는 기능 추가
-
자동차 정보 반환 기능 추가
- 연비 반환
- 여행 거리 반환
- 차종의 이름 반환
-
렌트 회사 기능
- 자동차 추가 기능
- 리포트 반환 기능
-
중복 제거를 위해 추상 클래스 추가
🃏 블랙잭
-
유저 이름 입력 받기
- 이름 입력의 앞뒤 공백을 제거한다.
- 공백 이름은 생성할 수 없다.
-
배팅금액 입력 받기
- 각 유저마다 배팅금액 입력받는다
- 0이하의 숫자는 입력 불가능
-
카드 분배 기능
- 1장 랜덤 분배
- 시작시 2장을 가지고 시작한다.
-
모든 카드 생성기능 (52장)
- 모든 플레이어가 공유하는 카드 뭉치 생성
- 카드 셔플
- 테스트에서 카드를 다시 사용하기 위해 캐싱적용
-
카드 스코어 반환 기능
- 상황에 유리하게 ACE가 1 또는 11로 선택된다.
- ACE를 11로 봤을 때, 카드 숫자의 총 합이 21보다 크면 ACE를 1로 설정한다.
- 상황에 유리하게 ACE가 1 또는 11로 선택된다.
-
카드 뽑기 기능
- 플레이어는 갖고있는 카드들의 숫자 총 합이 21 이하일 때만 뽑을 수 있다.
- 플레이어는 갖고있는 카드들의 숫자 총 합이 21 초과일 경우 뽑을 수 없다.
- 딜러는 갖고있는 카드들의 숫자 총 합이 16 이하일 때 반드시 1장을 뽑는다.
-
유저 입력에 따라서 카드를 뽑거나, 뽑지 않음을 판단한다.
- n을 입력한 경우, 더 이상 카드를 뽑을지 질문하지 않는다.
- y 또는 n을 제외한 문자를 입력한 경우, 예외를 발생시킨다.
-
게임 최종 결과 반환 기능
- 상태패턴을 이용하여 결과를 계산
- 유저가 블랙잭(2장이고 스코어가 21) 딜러가 블랙잭이 아니라면 1.5배
- 유저와 딜러가 블랙잭이라면 무승부 처리
- 유저가 stay이고 딜러보다 스코어가 크다면 배팅금만큼 이득
- 유저와 딜러가 stay이고 무승부라면 배팅금 회수
- 유저와 딜러가 stay이고 유저가 딜러보다 스코어가 적다면 배팅금만큼 손해
- 딜러가 버스트이고 유저가 버스트가 아니라면 유저 승리
-
딜러의 카드 출력.
- 처음 카드들 출력 시, 한 장만 보여준다.
- 최종 카드들 출력 시, 모든 카드들을 보여준다.
-
전략패턴 적용.--> 상태패턴 적용
-
상태패턴 적용
- 처음 카드 2장을 뽑은후 21이라면 blackjack으로 변경
- 21이 안된다면 hit으로 상태 변경
- 딜러의 경우 16초과라면 stay로 변경
- 이후 카드를 뽑은 뒤 21이 초과한다면 bust로 변경
- 유저가 추가받기를 하지않는다면 stay로 변경