int GetHandType(int C1, int C2, int C3, int C4, int C5) { int Hand = 0; int R1 = Rank[C1], R2 = Rank[C2], R3 = Rank[C3], R4 = Rank[C4], R5 = Rank[C5]; int S1 = Suit[C1], S2 = Suit[C2], S3 = Suit[C3], S4 = Suit[C4], S5 = Suit[C5]; if (R1 > R2) { R1 ^= R2; R2 ^= R1; R1 ^= R2; S1 ^= S2; S2 ^= S1; S1 ^= S2; } if (R1 > R3) { R1 ^= R3; R3 ^= R1; R1 ^= R3; S1 ^= S3; S3 ^= S1; S1 ^= S3; } if (R1 > R4) { R1 ^= R4; R4 ^= R1; R1 ^= R4; S1 ^= S4; S4 ^= S1; S1 ^= S4; } if (R1 > R5) { R1 ^= R5; R5 ^= R1; R1 ^= R5; S1 ^= S5; S5 ^= S1; S1 ^= S5; } if (R2 > R3) { R2 ^= R3; R3 ^= R2; R2 ^= R3; S2 ^= S3; S3 ^= S2; S2 ^= S3; } if (R2 > R4) { R2 ^= R4; R4 ^= R2; R2 ^= R4; S2 ^= S4; S4 ^= S2; S2 ^= S4; } if (R2 > R5) { R2 ^= R5; R5 ^= R2; R2 ^= R5; S2 ^= S5; S5 ^= S2; S2 ^= S5; } if (R3 > R4) { R3 ^= R4; R4 ^= R3; R3 ^= R4; S3 ^= S4; S4 ^= S3; S3 ^= S4; } if (R3 > R5) { R3 ^= R5; R5 ^= R3; R3 ^= R5; S3 ^= S5; S5 ^= S3; S3 ^= S5; } if (R4 > R5) { R4 ^= R5; R5 ^= R4; R4 ^= R5; S4 ^= S5; S5 ^= S4; S4 ^= S5; } bool Flush = (S1 == S2) && (S2 == S3) && (S3 == S4) && (S4 == S5); bool Mixed = false; int NS = 1; if (S1 != S2) { NS++; } if ((S1 != S3) && (S2 != S3)) { NS++; } if ((S1 != S4) && (S2 != S4) && (S3 != S4)) { NS++; } if ((S1 != S5) && (S2 != S5) && (S3 != S5) && (S4 != S5)) { NS++; } Mixed = (NS == 2) && ((S1 == 4) || (S2 == 4) || (S3 == 4) || (S4 == 4) || (S5 == 4)); if (Flush) { if (S1 == 4) { if (R1 == 8) { Hand = 14; // Lucky Suit Royal Flush } else if ((R1 == (R2 - 1)) && (R2 == (R3 - 1)) && (R3 == (R4 - 1)) && ((R4 == (R5 - 1)) || ((R1 == 0) && (R5 == 12)))) { Hand = 11; // Lucky Suit Straight Flush } else { Hand = 6; // Lucky Suit Flush } } else { if (R1 == 8) { Hand = 13; // Natural Royal Flush } else if ((R1 == (R2 - 1)) && (R2 == (R3 - 1)) && (R3 == (R4 - 1)) && ((R4 == (R5 - 1)) || ((R1 == 0) && (R5 == 12)))) { Hand = 10; // Straight Flush } else { Hand = 5; // Flush } } } else { if (Mixed && (R1 == 8) && (R2 == 9) && (R3 == 10) && (R4 == 11) && (R5 == 12)) { Hand = 12; // Wild Royal Flush } else if ((R1 == R2) && (R2 == R3) && (R3 == R4) && (R4 == R5)) { Hand = 9; // Five of a Kind } else if ((R2 == R3) && (R3 == R4) && ((R1 == R2) || (R4 == R5))) { Hand = 8; // Four of a Kind } else if ((R1 == R2) && (R4 == R5) && ((R2 == R3) || (R3 == R4))) { Hand = 7; // Full House } else if ((R1 == (R2 - 1)) && (R2 == (R3 - 1)) && (R3 == (R4 - 1)) && ((R4 == (R5 - 1)) || ((R1 == 0) && (R5 == 12)))) { Hand = 4; // Straight } else if (((R1 == R2) && (R2 == R3)) || ((R2 == R3) && (R3 == R4)) || ((R3 == R4) && (R4 == R5))) { Hand = 3; // Three of a Kind } else if (((R1 == R2) && (R3 == R4)) || ((R1 == R2) && (R4 == R5)) || ((R2 == R3) && (R4 == R5))) { Hand = 2; // Two Pair } else if (((R1 == R2) && (R1 >= 9)) || ((R2 == R3) && (R2 >= 9)) || ((R3 == R4) && (R3 >= 9)) || ((R4 == R5) && (R4 >= 9))) { Hand = 1; // Jacks or Better } } return Hand; }