diff --git a/src/main/java/controls/BotIntelligence.java b/src/main/java/controls/BotIntelligence.java new file mode 100644 index 0000000..e01c2ca --- /dev/null +++ b/src/main/java/controls/BotIntelligence.java @@ -0,0 +1,106 @@ +package controls; + +import interfaces.IAttack; +import interfaces.IBotBehavior; + +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static views.Constants.DECK_COUNT; + +public class BotIntelligence implements IBotBehavior { + + BotIntelligence(){ + + } + /** + 未確定の数字を列挙する + */ + List calculateCandidate(IAttack iAttack){ + //候補の初期化 + var candidates = new ArrayList(); + for(int i=0;i x.getKey()).toList()); + candidates.removeAll(iAttack.getOpponentHands().stream().filter(x -> x.getValue()).map(x -> x.getKey()).toList()); + + return candidates; + } + + /** + * 相手の手札に対して、候補となる数字を割り当てる + */ + void assignCandidateNumberEachHand(IAttack iAttack){ + var opponentsHands=iAttack.getOpponentHands(); + var targetList=new ArrayList<>(); + + for(var card:opponentsHands){//ユーザーの手札を左から見ていく + var index=opponentsHands.indexOf(card);//左からindex番目に + var candidateList = calculateCandidate(iAttack);//確認するカード + + + if(card.getValue()) { + candidateList.clear(); + }else{ //裏の場合 + + + //そのカードから右隣のカードを確認していく + for(int i=0;i x > currentCard.getKey());//その確認したカードの数字より大きい数字を除外する。 + for(int j=1;j x(); + for(int i=0;i