Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

README.md

/기본 규칙/

카드값은 2~10까지는 그대로, JQK 는 10, Ace 는 11로 취급한다.
하지만 Ace 를 11로 취급했을 때 버스트가 난다면 이것은 1로 간주한다.

==========
/전체적인 흐름/

블랙잭 시작

플레이어, 딜러 각각 1명씩 생성

시작하자마자 서로 카드 2장씩 뽑음

플레이어 => 딜러 순을 반복하며 카드를 뽑음. 한 쪽이 더이상 뽑지 않는다면
상대 쪽은 한장씩 더 뽑을지, 그대로 멈출지 결정한다.

플레이어는 카드 값 합이 21을 넘기지 않는 한에서 계속 카드 뽑기 가능.

딜러는 카드 값 합이 17 이상이 될 때 까지 계속 카드를 뽑음.

카드를 추가로 뽑을 때, 한 쪽이 21을 넘겼다면 버스트. 상대편이 승리.

둘 다 카드를 더이상 받지 않는 상태가 되면 서로의 카드를 공개하고, 카드값의 합을 보여줌.

카드값의 합이 21에 가까운 쪽이 승리. 서로 같다면 무승부.

==========
/클래스/

핸드 부분에서 플레이어와 딜러 각자의 핸드 상태를 출력하기 위해 List 를 get으로 선언하고,
손패 전체를 가져오는 List GetCards() 를 만들었다.

손패 현황을 출력할 때, 가시성을 향상시키기 위해 ToString 부분을 수정하였다.

블랙잭 클래스의 코드에 각종 기능들과 변수들이 과하게 집중되는 것을 분산시키려고

Stay 여부를 확인하는 부분은 Player 클래스 쪽의 변수와 함수로 넘겨두었다.

  1. Card 클래스 - 문장과 랭크를 public 변수로 가지고, 카드값 반환(return int)과 카드 내용을 반환(return string)하는 기능이 있다.

  2. Deck 클래스 - 생성자 호출 시 중복 없는 52개의 카드를 가진 리스트를 자동으로 생성, 카드 섞기까지 완료함.
    카드들의 리스트를 private 변수로 가진다. 카드 섞기, 카드 뽑기 기능이 있다.

  3. Hand 클래스 - 처음에는 비어 있는 카드 리스트를 읽기 한정 private 변수로 가진다.
    카드 뽑기(return Card), 카드값 합 반환(return int), 카드 리스트 반환(return List) 기능이 있다.

  4. Player 클래스 - 생성자 호출 시 핸드 객체를 생성한다. 핸드 객체를 읽기 한정 public 변수로 가진다.
    덱에서 카드 뽑기(Deck 입력받고 return Card) 기능이 있다.

  5. Dealer(Player 상속) 클래스 - 딜러 역할의 객체 생성. 대부분은 플레이어의 것과 같은 기능을 가지나,
    카드값의 합이 17 이상이 될 때 까지 카드를 뽑는 기능만 추가한 형태.

  6. Blackjack - 실질적으로 본 게임을 담당할 클래스. 시작하자마자 2개의 패를 각자의 핸드에 집어넣는 기능,
    각 플레이어의 현재 상태를 출력하는 기능, 승부가 났는지 확인하는 기능 등 게임 진행에 필요한 기능들을 총괄한다.

  7. main - 단순히 Blackjack 객체를 생성해서 Blackjack.GameStart() 함수만 호출할 예정.

About

C# 콘솔로 구현한 블랙잭 게임

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages