int WildRank = 0; 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]; bool Flush = false; 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; } if ((S1 == S2) && (S2 == S3) && (S3 == S4) && (S4 == S5) && (R1 == 08) && (R2 == 09) && (R3 == 10) && (R4 == 11) && (R5 == 12)) { Hand = 11; // Natural Royal Flush } else { int Wilds = (R1 == WildRank ? 1 : 0) + (R2 == WildRank ? 1 : 0) + (R3 == WildRank ? 1 : 0) + (R4 == WildRank ? 1 : 0) + (R5 == WildRank ? 1 : 0); switch (Wilds) { case 1: if (R1 == WildRank) { } else if (R2 == WildRank) { R1 ^= R2; R2 ^= R1; R1 ^= R2; S1 ^= S2; S2 ^= S1; S1 ^= S2; } else if (R3 == WildRank) { R1 ^= R3; R3 ^= R1; R1 ^= R3; S1 ^= S3; S3 ^= S1; S1 ^= S3; R2 ^= R3; R3 ^= R2; R2 ^= R3; S2 ^= S3; S3 ^= S2; S2 ^= S3; } else if (R4 == WildRank) { R1 ^= R4; R4 ^= R1; R1 ^= R4; S1 ^= S4; S4 ^= S1; S1 ^= S4; R2 ^= R4; R4 ^= R2; R2 ^= R4; S2 ^= S4; S4 ^= S2; S2 ^= S4; R3 ^= R4; R4 ^= R3; R3 ^= R4; S3 ^= S4; S4 ^= S3; S3 ^= S4; } else if (R5 == WildRank) { R1 ^= R5; R5 ^= R1; R1 ^= R5; S1 ^= S5; S5 ^= S1; S1 ^= S5; R2 ^= R5; R5 ^= R2; R2 ^= R5; S2 ^= S5; S5 ^= S2; S2 ^= S5; R3 ^= R5; R5 ^= R3; R3 ^= R5; S3 ^= S5; S5 ^= S3; S3 ^= S5; R4 ^= R5; R5 ^= R4; R4 ^= R5; S4 ^= S5; S5 ^= S4; S4 ^= S5; } break; case 2: if (R1 == WildRank) { } else if (R2 == WildRank) { R1 ^= R3; R3 ^= R1; R1 ^= R3; S1 ^= S3; S3 ^= S1; S1 ^= S3; } else if (R3 == WildRank) { R1 ^= R3; R3 ^= R1; R1 ^= R3; S1 ^= S3; S3 ^= S1; S1 ^= S3; R2 ^= R4; R4 ^= R2; R2 ^= R4; S2 ^= S4; S4 ^= S2; S2 ^= S4; } else if (R4 == WildRank) { R3 ^= R5; R5 ^= R3; R3 ^= R5; S3 ^= S5; S5 ^= S3; S3 ^= S5; R1 ^= R3; R3 ^= R1; R1 ^= R3; S1 ^= S3; S3 ^= S1; S1 ^= S3; R2 ^= R4; R4 ^= R2; R2 ^= R4; S2 ^= S4; S4 ^= S2; S2 ^= S4; } break; case 3: if (R1 == WildRank) { } else if (R2 == WildRank) { R1 ^= R4; R4 ^= R1; R1 ^= R4; S1 ^= S4; S4 ^= S1; S1 ^= S4; } else if (R3 == WildRank) { R1 ^= R4; R4 ^= R1; R1 ^= R4; S1 ^= S4; S4 ^= S1; S1 ^= S4; R2 ^= R5; R5 ^= R2; R2 ^= R5; S2 ^= S5; S5 ^= S2; S2 ^= S5; } break; case 4: if (R1 == WildRank) { } else if (R2 == WildRank) { R1 ^= R5; R5 ^= R1; R1 ^= R5; S1 ^= S5; S5 ^= S1; S1 ^= S5; } break; } switch (Wilds) { case 0: Flush = (S1 == S2) && (S2 == S3) && (S3 == S4) && (S4 == S5); if (Flush) { if (R1 == 8) { Hand = 11; // Natural Royal Flush } else if ((R1 == (R2 - 1)) && (R2 == (R3 - 1)) && (R3 == (R4 - 1)) && ((R4 == (R5 - 1)) || ((R1 == 0) && (R5 == 12)))) { Hand = 7; // Straight Flush } else { Hand = 4; // Flush } } else { if ((R2 == R3) && (R3 == R4) && ((R1 == R2) || (R4 == R5))) { Hand = 6; // Four of a Kind } else if ((R1 == R2) && (R4 == R5) && ((R2 == R3) || (R3 == R4))) { Hand = 5; // Full House } else if ((R1 == (R2 - 1)) && (R2 == (R3 - 1)) && (R3 == (R4 - 1)) && ((R4 == (R5 - 1)) || ((R1 == 0) && (R5 == 12)))) { Hand = 3; // Straight } else if (((R1 == R2) && (R2 == R3)) || ((R2 == R3) && (R3 == R4)) || ((R3 == R4) && (R4 == R5))) { Hand = 2; // Three of a Kind } else if (((R1 == R2) && (R3 == R4)) || ((R1 == R2) && (R4 == R5)) || ((R2 == R3) && (R4 == R5))) { Hand = 1; // Two Pair } } break; case 1: Flush = (S2 == S3) && (S3 == S4) && (S4 == S5); if (Flush) { if (R2 >= 8) { Hand = 9; // Wild Royal Flush } else if (((R5 - R2) <= 4) || ((R5 == 12) && (R4 <= 3))) { Hand = 7; // Straight Flush } else { Hand = 4; // Flush } } else { if ((R2 == R3) && (R3 == R4) && (R4 == R5)) { Hand = 8; // Five of a Kind } else if (((R2 == R3) && (R3 == R4)) || ((R3 == R4) && (R4 == R5))) { Hand = 6; // Four of a Kind } else if ((R2 == R3) && (R4 == R5)) { Hand = 5; // Full House } else if ((((R5 - R2) <= 4) || ((R5 == 12) && (R4 <= 3))) && (R2 != R3) && (R3 != R4) && (R4 != R5)) { Hand = 3; // Straight } else if ((R2 == R3) || (R3 == R4) || (R4 == R5)) { Hand = 2; // Three of a Kind } } break; case 2: Flush = (S3 == S4) && (S4 == S5); if (Flush) { if (R3 >= 8) { Hand = 9; // Wild Royal Flush } else if (((R5 - R3) <= 4) || ((R5 == 12) && (R4 <= 3))) { Hand = 7; // Straight Flush } else { Hand = 4; // Flush } } else { if ((R3 == R4) && (R4 == R5)) { Hand = 8; // Five of a Kind } else if ((R3 == R4) || (R4 == R5)) { Hand = 6; // Four of a Kind } else if ((((R5 - R3) <= 4) || ((R5 == 12) && (R4 <= 3))) && (R3 != R4) && (R4 != R5)) { Hand = 3; // Straight } else { Hand = 2; // Three of a Kind } } break; case 3: Flush = (S4 == S5); if (Flush) { if (R4 >= 8) { Hand = 9; // Wild Royal Flush } else if (((R5 - R4) <= 4) || ((R5 == 12) && (R4 <= 3))) { Hand = 7; // Straight Flush } else { Hand = 6; // Four of a Kind } } else { if (R4 == R5) { Hand = 8; // Five of a Kind } else { Hand = 6; // Four of a Kind } } break; case 4: Flush = true; Hand = 10; // Four Wilds break; } } return Hand; }