블랙잭 만들어보기 2

한포도·2024년 3월 8일
0

Python

목록 보기
2/4
post-thumbnail

오늘은 블랙잭의 게임부를 만들어 보자!

저번엔 게임에 필요한 함수들을 작성했으니 이제 함수를 이용해서 게임을 진행 해보도록 하겠다.

먼저 게임의 대략적 로직을 만들어 보자.

  • 덱을 생성한다.
  • 딜러와 플레이어의 카드 리스트를 만든다.
  • 덱에서 카드를 pop하여 리스트에 추가한다.
  • 카드 벨류를 체크해서 승,패를 가린다.
  • 개임진행을 선택한다.

로 나눠 볼수 있겠다.

덱생성부터 카드 드로우까지 만들어 보자.

항상 느끼지만 변수명을 만들기가 제일 어렵다... 영어 공부를 더 열심히 하자
먼저 부정 방지를 위해 카드를 번갈아 가면서 받도록 했다.
그리고 딜러의 카드중 하나는 공개되지 않는다.
서로 어떤 카드를 받았는지 고지 해준다. 그리고 출력해본결과 가시성이 좋지 않았다. 너무 빠르게 지나가기 때문에 좋지 않아서 print()를 지연시키는 함수를 만들어 적용했다.

간단하지만 이것만으로 생각하는 시간을 사용자에게 충분히 주게 되어, 게임 진행이 잘 느껴졌다.

이제 카드의 벨류를 체크해보는 시간이다.

기본적으로 블랙잭은 카드의 조합이 21일 경우 무조건 승리한다.
그러나 21을 초과할 경우 무조건 패배다.

때문에 21를 향해서 카드를 추가할지 거부할지, 21초과를 검사하는 코드를 작성해보자.

카드를 받는 조건은 "플레이어가 21의 벨류 미만이면서 받길 원한다면"이기 때문에 ask_continue()를 사용했다.

그리고 조건이 맞지 않다면 반복을 탈출해 딜러의 시크릿을 알게된다.

이제 남은 단계는 아래와 같다

  • 플레이어의 벨류가 21미만이고 딜러의 벨류가 17미만일 경우 딜러는 17이상이 될때까지 카드를 뽑느다.
  • 그 뒤에 서로의 벨류가 같거자 작거나 큼에 따라서 승패를 나눈다.

위의 코드는 벨류 체크에 따른 딜러의 추가 드로우와 결과를 출력한다.
딜러가 드로우 하는 조건을 추가해서 조건이 맞지 않다면 바로 결과를 출력하도록 작성했다.
작성하고 보니 else-if 가 너무 많은것 같다. 지금은 단순한 게임이기 때문에 문제는 없겠지만, 최적화의 가능성이 분명 있을 것이다. 추후에 리펙토링을 해야겠다.

이렇게 BlackJack()을 정의하고 loop를 해보자!

다음시간에는 실행하면서 불편한 부분을 개선 해보도록 하겠다.

profile
응애 개발맨

0개의 댓글