void IsStraightOrFlush(std::vector<Card> & cHand,bool & straight,bool & flush)
{
straight=flush=false;
std::vector<int> UniqueOfcHand; // Straight를 위해 중복되는 숫자를 없애서 저장하기 위한 벡터
std::vector<int> SuitOfcHand; // flush 확인을 위한 것
CheckMade(cHand,UniqueOfcHand); //UniqueOfcHand에서 정렬시킨뒤 중복되는 숫자 없애기 위한 함수 ex) 패에 (3,4,4,2,7,6,4) 일 경우 ->(2,3,4,4,4,6,7) -> (2,3,4,6,7)로 변환
CheckMadeSuit(cHand,SuitOfcHand); //숫자가 아닌 모양을 기준으로 정렬하는 함수 (클로버=1,다이아=2,스페이드=3,하트=4 임) ex) (D,D,C,S,C,H,C) 일경우 -> (C,C,C,D,D,S,H)로 변환
for(int i=0;i<3;i++) //straight확인
{
if(UniqueOfcHand[i]==(UniqueOfcHand[i+1]-1)==
(UniqueOfcHand[i+2]-2)==(UniqueOfcHand[i+3]-3)==
(UniqueOfcHand[i+4]-4))
{
straight=true;
}
}
for(int i=0;i<3;i++) //flush확인
{
if(SuitOfcHand[i]==(SuitOfcHand[i+1]-1)==
(SuitOfcHand[i+2]-2)==(SuitOfcHand[i+3]-3)==
(SuitOfcHand[i+4]-4))
{
flush=true;
}
}
if((UniqueOfcHand[0]==Num::Two)&& //Ace,2,3,4,5 확인
(UniqueOfcHand[1]==Num::Three)&&
(UniqueOfcHand[2]==Num::Four)&&
(UniqueOfcHand[3]==Num::Five)&&
((UniqueOfcHand[4]==Num::Ace)||(UniqueOfcHand[5]==Num::Ace)||(UniqueOfcHand[6]==Num::Ace)))
{
straight=true;
}
}
로직파트 다짯는데 제일 엉성한 부분이라 질문..
위에 있는 내 코드는 Card클래스 안에 suit랑 Num으로 구성된 숫자멤버들이 있는데 솔까 for문 너무 많이 돌리는 것같아서 코드가 토나오는데 좀더 효율적으로 점검하는법 없을까?
git에 있는 코드들은 다 Draw카드만 비교하고 나중에 머지시키드라 그리고 Card가 클래스가 아니고 구조체라서 참고만 하고 다시 짜는데...
좀 병신 같은거 알지만 조언좀 재귀쓰려고 했는데 코드보는데 짱구 굴려야 되서 if로 조짐..
straight 랑 플래시에 왠 벡터
⭐+각종 성겜 최신 정보⭐+
https://www.manzace77.com/
⭐+온라인
게임 사이트 주소⭐+
정수 하나면 되는데
14 비트와 16비트 총 30비트면 되지 않음?
되서->돼서 (되어 = 돼임) [리듬 맞춤법 봇♬]
mozzart//왠->웬 (왠지 빼고 웬임) [리듬 맞춤법 봇♬]
정수 하나? 그게 무슨 말이에여?
폰이라 느리니 이해해
나 폰 독수리
1 << 카드 숫자
그걸 변수 하나에 OR 누적한 후 비트 체크 하면 되잖
이때 만약 숫자가 1 이면 14 에도 누적
아 맞네!! 비트 플래그가 있었구나 생각지도 못했네요
그냥 훑고지나간거라 그러면 정렬도 필요없을듯한데..맞나여?
그니까 judge |= 1 << 14 | 1 << 1 이 되는 셈
ㅇㅇ
정렬 불필요
저러면 에이스로 끝나는 판정도 되지
ㄴ오오 감사감사 생각지도 못했네요 ㅎㅎ
플래시도 걍 종류별로 카운트만 세면 되잖
그럼 리턴값은 정수 하나면 족할테쥬
플래시다 스트레이트다 판정비트 넣어봐야 32안넘음
지금 다시 짜보는 중이에요 비트연산자 기본적인건데 ..너무 대책없이 봤네요 제일 중요한거였는데..
애기들 다 그래 ㅋㅋ
머리 잘 쓰면 머리 꼬리 꼬리 양방향 비교로 스트레잇 고속 검사도 되는데
코드가 길어서 귀찮
ㄴ그런것까지?ㅋ ㅋ 감사해여 ㅋ ㅋ
switch 써도 돼 14개 짜리
모두 break 없게 하나에 몰아서 스트레이트로 판정
case 는 14개 안되겠군
와퍼 먹는중 헤헤
근데 저렇게 하지 말고 차라리 모든 승리 케이스들을 미리 저장해뒀다가 핸드의 카드들을 대입해봐서 매칭되는게 있는지 찾는게 훨씬 빠를듯.. - return 0;
안그래 : )
테이블로 적당히 따내야됨
해시테이블 쓰면 저것보다 빠를듯 - return 0;
테이블이 너무 커지면 안됑 짜보면 깨달을듯
그리고 내가 말한 방식으로 하면 단순히 스트레이트 플러쉬가 아니라 모든 족보를 한번에 체크 가능함 - return 0;
해시나 저거나
그런가여 STL 해시테이블이 워낙 빨라서 - return 0;
짜보면 깨닳음 ㅡㅡㅋ
unordered map 은 최악의 경우 선형이잖 케이스가 많다구
승리만 넣어서 unordered set을 쓰면 크기가 막 제곱
int 키로도 충돌이 발생하는건가여 - return 0;
52C5 * 47C5 텍사스홀덤 룰은 모르지만 5장 포커면 대충 이런데
260만 * 150만 쯤 아님?
무슨 해시 테이블 크기가 무한이냐 ㅋㅋ
깨달음 <-
ㄷㄷ 너무 크긴 하네염 - return 0;
아 근데 패밀리 별로 따로 만들 필요 없이 패밀리 판독은 따로 하고 숫자 판독만 그걸로 돌리면 훨씬 현실적인 숫자가 나오지 않을까 싶습네다 - return 0;
⭐+각종 성겜 최신 정보⭐+
https://www.manzace77.com/
⭐+온라인
게임 사이트 주소⭐+