コンソール テキサス ホールデム ポーカーを作成しています。私はすでにこのゲームの作成を完了しており、すべてが想定どおりに機能しています。コードを書くための最良の方法について未定になったフルハウスを期待してください。
これが私がカードを提示する方法です:「D5」、「S2」、「SA」...カードを表すのが悪い考えであることは知っていますが、現在OOPの方法で考えていません。実際に遊んでいますこれは優れたコード プラクティスです。
問題はペアやスリーカードをどう書くかではなく、私は実際にこのようなことをする素晴らしいアイデアを思いつきました...
if (isPair() && isThreeOfKind()) {
//
}
しかし、それは不可能です。なぜなら、私は (私がここにいる) 問題を扱っていて
、同じカードisPair()
をisThreeOfAKind()
見つける"DA", "CA", "SA"
からです。 ."DA"
"CA"
"DA", "CA", "SA"
コードの更新:
public boolean isPair(int playerIndex) {
boolean isPair = false;
if (hasSameRank(playerAndHand[playerIndex])) {
isPair = true;
} else {
for (int i = 0; i < TABLE_CARDS_LENGTH; i++) {
for (int j = 0; j < HAND_CARDS_LENGTH; j++) {
if (playerAndHand[playerIndex][j].charAt(1) == tableCards[i].charAt(1)) {
isPair = true;
break;
}
}
if (isPair) break;
}
}
return isPair;
}
public boolean isThreeOfKind(int playerIndex) {
boolean isThreeOfKind = false;
// 2 from player hand 1 from table
if (hasSameRank(playerAndHand[playerIndex])) {
for (int i = 0; i < TABLE_CARDS_LENGTH; i++) {
if (playerAndHand[playerIndex][0].charAt(1) == tableCards[i].charAt(1)) {
isThreeOfKind = true;
break;
}
}
} else {
for (int i = 0; i < TABLE_CARDS_LENGTH; i++) {
// first card in player hand and 2 more on table
if (playerAndHand[playerIndex][0].charAt(1) == tableCards[i].charAt(1)) {
for (int j = 0; j < TABLE_CARDS_LENGTH; j++) {
if (j != i) {
if (playerAndHand[playerIndex][0].charAt(1) == tableCards[j].charAt(1)) {
isThreeOfKind = true;
break;
}
} else {
continue;
}
}
if (isThreeOfKind) break;
// second card in player hand and 2 more on table
} else if (playerAndHand[playerIndex][1].charAt(1) == tableCards[i].charAt(1)) {
for (int j = 0; j < TABLE_CARDS_LENGTH; j++) {
if (j != i) {
if (playerAndHand[playerIndex][1].charAt(1) == tableCards[j].charAt(1)) {
isThreeOfKind = true;
break;
}
} else {
continue;
}
}
if (isThreeOfKind) break;
}
}
}
return isThreeOfKind;
}