Codecademy CS101 최종 프로젝트: 블랙잭

소개



저는 지난 한 달 동안 Codecademy CS101 과정을 수강했습니다. 그 전에는 Python에 대한 배경 지식이 없었습니다.

Codecademy에서는 CS101 과정을 완료하기 위해 Python을 사용하여 기본 터미널 프로그램을 만들어야 합니다. 프로젝트의 목표는 다음과 같습니다.

* Build a terminal program using Python
* Add at least one interactive feature using input()
* Use Git version control
* Use the command line and file navigation
* Write a technical blog post on the project

Blackjack은 Codecademy가 프로젝트 작성에서 처음으로 제안한 것입니다. 나는 독창적인 아이디어에 기대고 있었지만, 블랙잭 프로그램을 위해 어떤 종류의 로직을 작성해야 할까 하는 생각이 들기 시작했습니다. 나는 약 하루 만에 코드를 작성했습니다.

코드는 here at Github 에서 찾을 수 있습니다.

설계



생성자에 대해 다음 매개변수를 사용하는 Card 클래스를 만들었습니다. self, id, name, suit, value, visibility = True . for 루프를 사용하여 4가지 슈트(다이아몬드, 클럽, 스페이드, 하트) 각각에 대해 13장의 카드 덱을 생성했습니다.

카드 더미는 random.sample()를 사용하여 무작위로 섞입니다.

게임이 시작되면 터미널에 "Hit me"를 입력하여 게임을 플레이하라는 메시지가 사용자에게 표시됩니다. 사용자의 입력 프롬프트deal_card 데크의 첫 번째 카드를 사용자의 손에 넣는 기능입니다.

그 이후로 사용자는 두 가지 옵션이 있습니다. 카드를 계속 받는 것("Hit me") 또는 서 있는 것("stand")입니다.

딜러 추가



1인용 게임의 기본 로직을 작성한 후 컴퓨터에서 플레이하는 딜러를 추가했습니다. 딜러는 플레이어의 초기 히트 선택 후 단일 카드를 받습니다. 딜러가 받는 다음 카드는 구멍입니다. 플레이어에게는 숨겨져 있습니다. 딜러는 게임이 끝날 때만 구멍을 공개합니다.

딜러가 스스로를 처리할지 스탠드할지 결정하는 논리는 매우 간단합니다. 카드 계산이 필요하지 않습니다! 딜러는 단순히 자신의 핸드가 18 이상인지 계산합니다. 그렇다면 딜러는 서 있습니다.

게임의 규칙



저는 개인적으로 카지노에서 플레이하는 "공식적인"블랙잭을 플레이한 적이 없습니다. 이 게임의 목적을 위해 저는 다음과 같은 매우 간단한 규칙을 고수했습니다.
  • 사용자/딜러는 카드를 받고 계속 플레이하고 카드를 받거나 현재 핸드를 유지하는 스탠드를 선택할 수 있습니다.
  • 카드의 값은 카드의 숫자를 따릅니다(즉, 하트 8개의 값은 9=8이고 스페이드 5개의 값은 5입니다). 얼굴 카드(Jack, Queen, King)의 값은 모두 10입니다. Ace의 값은 1 또는 11입니다.
  • 사용자 또는 딜러의 핸드 값이 최대 21이면 사용자 또는 딜러가 승리합니다.
  • 두 플레이어가 모두 서 있으면 더 큰 핸드 값을 가진 플레이어가 승리합니다.

  • 향후 개선 사항



    현재 12개 정도if 문장으로 다소 서투르게 표현되는 다양한 결과가 있습니다. 이것은 리팩토링되어야 합니다.

    딜러에게 더 지능적인 AI가 있으면 좋을 것입니다. 그러나 이것은 현재와 가까운 미래에 대한 내 연구 계획의 범위를 벗어납니다.

    좋은 웹페이지 즐겨찾기