🚀 상속, interface - 연료 주입

  • 자동차 인터페이스를 만든다.

  • 주입해야 할 연료량 구하는 기능 추가

  • 자동차 정보 반환 기능 추가

    • 연비 반환
    • 여행 거리 반환
    • 차종의 이름 반환
  • 렌트 회사 기능

    • 자동차 추가 기능
    • 리포트 반환 기능
  • 중복 제거를 위해 추상 클래스 추가


🃏 블랙잭

  • 유저 이름 입력 받기

    • 이름 입력의 앞뒤 공백을 제거한다.
    • 공백 이름은 생성할 수 없다.
  • 배팅금액 입력 받기

    • 각 유저마다 배팅금액 입력받는다
    • 0이하의 숫자는 입력 불가능
  • 카드 분배 기능

    • 1장 랜덤 분배
    • 시작시 2장을 가지고 시작한다.
  • 모든 카드 생성기능 (52장)

    • 모든 플레이어가 공유하는 카드 뭉치 생성
    • 카드 셔플
    • 테스트에서 카드를 다시 사용하기 위해 캐싱적용
  • 카드 스코어 반환 기능

    • 상황에 유리하게 ACE가 1 또는 11로 선택된다.
      • ACE를 11로 봤을 때, 카드 숫자의 총 합이 21보다 크면 ACE를 1로 설정한다.
  • 카드 뽑기 기능

    • 플레이어는 갖고있는 카드들의 숫자 총 합이 21 이하일 때만 뽑을 수 있다.
    • 플레이어는 갖고있는 카드들의 숫자 총 합이 21 초과일 경우 뽑을 수 없다.
    • 딜러는 갖고있는 카드들의 숫자 총 합이 16 이하일 때 반드시 1장을 뽑는다.
  • 유저 입력에 따라서 카드를 뽑거나, 뽑지 않음을 판단한다.

    • n을 입력한 경우, 더 이상 카드를 뽑을지 질문하지 않는다.
    • y 또는 n을 제외한 문자를 입력한 경우, 예외를 발생시킨다.
  • 게임 최종 결과 반환 기능

    • 상태패턴을 이용하여 결과를 계산
    • 유저가 블랙잭(2장이고 스코어가 21) 딜러가 블랙잭이 아니라면 1.5배
    • 유저와 딜러가 블랙잭이라면 무승부 처리
    • 유저가 stay이고 딜러보다 스코어가 크다면 배팅금만큼 이득
    • 유저와 딜러가 stay이고 무승부라면 배팅금 회수
    • 유저와 딜러가 stay이고 유저가 딜러보다 스코어가 적다면 배팅금만큼 손해
    • 딜러가 버스트이고 유저가 버스트가 아니라면 유저 승리
  • 딜러의 카드 출력.

    • 처음 카드들 출력 시, 한 장만 보여준다.
    • 최종 카드들 출력 시, 모든 카드들을 보여준다.
    • 전략패턴 적용. --> 상태패턴 적용
  • 상태패턴 적용

    • 처음 카드 2장을 뽑은후 21이라면 blackjack으로 변경
    • 21이 안된다면 hit으로 상태 변경
    • 딜러의 경우 16초과라면 stay로 변경
    • 이후 카드를 뽑은 뒤 21이 초과한다면 bust로 변경
    • 유저가 추가받기를 하지않는다면 stay로 변경