私はJavaカードゲームを作っていますが、今はコンピュータープレーヤーの「頭脳」を作ろうとしています。条件:
テーブルには 3 枚のカードがあります (値のみで、スーツではありません)。
コンピューター プレーヤー (CP) には 6 枚のカードがあります。
ラウンドに勝つには、CP がテーブルで少なくとも 2 枚のカード
を倒すか、1 枚のカードを倒して別の 2 枚のカードでドローする必要があります。もちろん、カードセットは最適でなければなりません。
例: テーブルには値 1、2、3 のカードがあります。CP には値 1、1、3、2、5、6 のカードがあります。値 3 のカードを選択するよりも、値 2 のカードを選択してカード 1 を倒す必要があります。 Card2 を打ち負かし、値 1 のカードを選択します。これは、すでに 2 枚のカードを打ち負かしているためです。今、次のコードを書きましたが、正しく動作しないか、まったく動作しません。
for (i = 0, j = i++, k = j++; i < oppHand.size() - 2 && j < oppHand.size() - 1 && k < oppHand.size(); i++) {
a = oppHand.get(i).getPower(); //value of card1 from CP hand
b = oppHand.get(j).getPower(); //value of card2 from CP hand
c = oppHand.get(k).getPower(); //value of card3 from CP hand
x = oppHand.indexOf(i); //position of card1 in a CP hand
y = oppHand.indexOf(j); //position of card2 in a CP hand
z = oppHand.indexOf(k); //position of card3 in a CP hand
if (a > Score1 && b > Score2 || a> Score1 && c > Score3) { //Score - value of the cards on the table
choice1 = x;
choice2 = y;
choice3 = z;}
else if (a > Score1 && b > Score3 || a > Score1 && c > Score2) {
choice1 = x;
choice2 = z;
choice3 = y;} ........
// moving cards from the CP hand to the table with assignment values to the piles
validPower5 = oppHand.get(choice1).getPower();
discardPile5.add(0, oppHand.get(choice1));
oppHand.remove(choice1);
validPower6 = oppHand.get(choice2).getPower();
discardPile6.add(0, oppHand.get(choice2));
oppHand.remove(choice2);
validPower7 = oppHand.get(choice3).getPower();
discardPile7.add(0, oppHand.get(choice3));
oppHand.remove(choice3);
}