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 = (S1 == S2) && (S2 == S3) && (S3 == S4) && (S4 == S5); if (R1 > R2) { R1 ^= R2; R2 ^= R1; R1 ^= R2; } if (R1 > R3) { R1 ^= R3; R3 ^= R1; R1 ^= R3; } if (R1 > R4) { R1 ^= R4; R4 ^= R1; R1 ^= R4; } if (R1 > R5) { R1 ^= R5; R5 ^= R1; R1 ^= R5; } if (R2 > R3) { R2 ^= R3; R3 ^= R2; R2 ^= R3; } if (R2 > R4) { R2 ^= R4; R4 ^= R2; R2 ^= R4; } if (R2 > R5) { R2 ^= R5; R5 ^= R2; R2 ^= R5; } if (R3 > R4) { R3 ^= R4; R4 ^= R3; R3 ^= R4; } if (R3 > R5) { R3 ^= R5; R5 ^= R3; R3 ^= R5; } if (R4 > R5) { R4 ^= R5; R5 ^= R4; R4 ^= R5; } if (Flush) { if (R1 == 8) { Hand = 11; // 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 ((R2 == R3) && (R3 == R4) && ((R1 == R2) || (R4 == R5))) { if (R3 == 12) { Hand = 9; // Four Aces } else if (R3 <= 2) { Hand = 8; // Four 2,3,4 } else { Hand = 7; // Four of a Kind } } else if ((R1 == R2) && (R4 == R5) && ((R2 == R3) || (R3 == R4))) { Hand = 6; // 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; }