문제

C#에서 포커 게임을 개발하고 있습니다. 현재 나는 플레이어 핸드 스코어를 사용하려고 노력하고 있습니다. RegEx. 나는 문자열 (카드 소송과 번호로 구성)을 검색하고 RegEx. 내가 2 경기를 받으면 플레이어는 한 쌍의 쌍을 가지고 있으며, 3 경기는 3 개의 종류를 가지고 있습니다.

현재 3 개의 수업, 카드 수업 (번호와 정장), 데크 클래스 (52 장의 카드가 포함 된) 및 셔플 데크에서 5 개의 카드를받는 핸드 클래스가 있습니다.

데크 클래스에는 a가 있습니다 shuffleDeck(); 핸드 클래스에는 점수를 계산하는 기능이 있습니다 (Regex를 사용하는 기능에 있습니다).

내가 사용하는 문자열을 생성합니다 RegEx 손이 가진 5 개의 정장과 숫자를 추가함으로써.

이것은 좋은 생각입니까, 아니면 다른 방법으로해야합니까? 그렇다면 어떻게해야합니까?

도와 주셔서 감사합니다

추신. 나는 모든 것을 위해 새로 배운 도구를 사용하려는 경험이없는 프로그래머 중 하나입니다.

도움이 되었습니까?

해결책

나는 정규식이 이것을 다루는 적절한 방법이라고 생각하지 않습니다. 당신은 아마도 문자열보다 손의 더 정교한 표현을 사용해야 할 것입니다.

다른 팁

당신은 많은 세부 사항을 제공하지 않았지만, 내가 읽은 내용에서, 나는 당신이 OOP를 그리 멀지 않을 것이라고 생각합니다 ...

등급과 정장 등급 인스턴스가있는 카드 클래스가 있습니다. 그런 다음 셔플 링 / 거래를 처리하는 데크 클래스가 있습니다 ...

그런 다음 N 카드 개체의 포커 손을 포함하는 핸드 클래스가 있습니다 ...

이런 식으로 각 손 객체를 평가하기위한 규칙을 구축 할 수 있으므로 앞으로 더 유연하고 확장 가능합니다 ... 다른 카드 게임을 만들고 싶다면 / 다른 파커 변형에 대한 지원을 추가하고 싶다면 ...

정규 표현을 사용 하여이 모든 것을 수행하는 것은 꽤 잘못된 선택 인 것 같습니다.

나는 다른 사람들과 동의 할 것입니다. Regex는 나쁜 선택처럼 보입니다. 그것은 쌍, 3의 종류, 4의 종류와 함께 작동 할 수 있습니다. 그러나 플러시, 스트레이트 및 2 쌍과 같은 손을보기 시작하면 까다로울 수 있습니다.

최상의 솔루션은 최고의 손에서 최악의 손까지 카드를 평가하는 것입니다. 여기에 표시된대로, 그리고 당신의 일치를 찾 자마자, 그것은 당신의 손입니다. 이것은 당신이 2 쌍의 종류의 4를 착각하지 않도록합니다. 또는 직선 또는 직선을위한 직선 플러시 또는 플러시. 나는 mmattax와 함께 가서 카드의 객체와 손의 물체를 만들고, 각 손의 카드를 평가하여 각 손에 필요한 기준을 충족하는지 확인할 수 있습니다.

소수가 좋은 해결책이라고 생각합니다. 고려하다 :

//            D H S C    
colors =    [7,5,3,2]

//           A  Q  K  J  T  9  8  7  6  5  4  3  2    
ranks =     [61,59,53,43,41,37,31,29,23,19,17,13,11,61]

고유 한 카드는 색상 소수 * 순위 소수로 식별됩니다. (예를 들어, 다이아몬드로 : Prime = 7 * 61)

따라서 Entiere 독특한 데크 또는 Combinaison은 Prime * Prime * Prime * Prime * Prime에 의해 식별됩니다.

다이아몬드의 플러시가있는 경우, 5 카드 데크의 Primes ID는 다이아몬드 ID (Diamonds Color Prime이 7이기 때문에 7 ^ 5)에 의해 Divisble (mod = 0)에 의해옵니다 (Mod = 0).

손을 표현하기 위해 문자열을 사용하는 것은 잘못된 결정처럼 보입니다. 저의 추천은 열거를 사용하여 소송을 나타내고 다른 하나는 카드의 숫자 값을 나타냅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top