1 minute read

ㅡ Poker game in C++

toy-project c++

Table of Contents

Introduction

pocker 를 만듭니다. oop programming 의 기본을 익힙니다. 5장의 카드를 sort한 후 사전순으로 비교, 포커 순으로 비교할 수 있는 각 project의 compare을 생성합니다.

Prerequisite

Must run in the mingw environment.

  • c++-mingw: Debug with the mingw64 compiler.

Development

5개의 카드가 정렬되면 compare 함수에서 사전순으로 비교합니다. 5개의 카드가 정렬되면 getHands() 함수로 카드에 대한 족보를 확인하여 반환된 결과를 가지고 compare 함수 에서 비교 합니다.

Sort

Bubble_Sort

카드 배열을 높은것부터 낮은순으로 정렬합니다. bubble

Make a Poker genealogy

hand[i]에 저장된 수로 count 값을 정하여 pairs, triple, quad, straight_pos를 찾습니다. 족보 족보 족보

Compare

dictionary order

사전1 -FiveCards의 tostring에서 card 문자열로 표현하고 class string에서 compare 함수를 통 해 카드들을 사전순으로 정렬할 수 있습니다.

genealogical order

사전1 -Card type의 길이가 5인 배열 2개를 선언합니다. 각각 GetHands(Card [])에 대하여 return 값을 가지고 족보 가 같을 경우 와 같지 않을 경우 if문으로 분기되어 선택된 카드의 우선순위로 크기를 결정합니다.

Issue

RoyalFlush 5장의 카드가 스트레이트고 무늬도 같은걸 스트레이트 플러쉬, 그중에서도 숫자가 가장 높은 A 를 포함하는 10 J Q K A 인것을 특별히 로얄 스트레이트 플러쉬라고 합니다. 이것을 구현하는중에 A 를 포함 하면서 스트레이트가 되는 두종류에 대해 조건을 두고, 같은 로얄플러쉬끼리도 무늬에 따라서 승패가 가려지는데 이 경우를 고려하지 않아 같은 로얄플러쉬끼리 compare하기 어려웠습니다.

  • 10 J Q K A
  • A2345

다음과 같이 처리 하였습니다.

사전1

card[ ] 배열은 족보가 되었을때 족보에 해당하는 카드를 저장해 두고 같은 족보끼리 크기를 비교하기 위해 사용됩니다. 같은 로얄플러쉬끼리도 무늬에 따라서 승패가 가려지기 때문에 5장의카드 모두 무늬가 같으 면 아무카드나 하나만 넣어 나중에 무늬를 비교하는데는 지장이 없도록 했습니다.

Commit

We are following Angular’s commitizen rules for formatting git commit message. This allows you to read messages that are easy to understand when looking for project history. It also uses the git commit message to generate our CHANGELOG file.

$ npm install -g git-cz
$ git add .
$ git git-cz
$ git push

Result

사전1 사전1 Straight-Flush을 100 횟수에 1번 확인할 수 있었습니다.

Poker 족보 규칙을 이해할 수 있었습니다. Poker 족보 중에서 가장 높은 10 J Q K A 스트레이트플러쉬를 확 인해 보고 싶어서 계속 프로그램을 실행해보는데 결과를 확인하기 어려웠습니다. 그래서 google을 통해 각 족 보마다 확률을 찾아봤는데 64,974번중 한번으로 극악의 확률이었습니다. 다양한 Poker 족보들을 찾아보고 Code로 구현하는 과정은 힘들었지만, 지금까지 PL 수업시간에 배웠던 내용들을 참고해서 해결할 수 있었습니 다.

code

code

license

MIT License

About

Authored and maintained by ingyu

Categories:

Updated: