/** * Copyright (C) 2017 Jan Schäfer (jansch@users.sourceforge.net) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jskat.ai.newalgorithm; import java.util.ArrayList; import org.jskat.player.ImmutablePlayerKnowledge; import org.jskat.util.CardList; import org.jskat.util.GameType; import org.jskat.util.Suit; /** * Situation * * @author Daniel Loreck * */ public class Situation { private Suit oTrumpSuit; private GameType oGameType; private ArrayList<Suit> oFreeSuitsLeftPlayer; private ArrayList<Suit> oFreeSuitsRightPlayer; private boolean oHasTrumpLeftPlayer; private boolean oHasTrumpRightPlayer; private Suit oLongestSuit; private ArrayList<Suit> oBlankSuits; private int oRandomInt; public Situation(ImmutablePlayerKnowledge pKnowledge, GameType pGameType) { oTrumpSuit = pGameType.getTrumpSuit(); oGameType = pGameType; oFreeSuitsLeftPlayer = new ArrayList<Suit>(); oFreeSuitsRightPlayer = new ArrayList<Suit>(); oHasTrumpLeftPlayer = true; oHasTrumpRightPlayer = true; setCardsAfterDiscarding(pKnowledge.getOwnCards()); oRandomInt = (int)(Math.random()*3); } public Situation(Suit pTrumpSuit, GameType pGameType, Suit pLongestSuit, ArrayList<Suit> pBlankSuit, int pRandomInt, boolean hasTrumpLeftPlayer, boolean hasTrumpRightPlayer , ArrayList<Suit> pFreeSuitsLeftPlayer, ArrayList<Suit> pFreeSuitsRightPlayer) { oTrumpSuit = pTrumpSuit; oGameType = pGameType; oLongestSuit = pLongestSuit; oBlankSuits = pBlankSuit; oRandomInt = pRandomInt; oHasTrumpLeftPlayer = hasTrumpLeftPlayer; oHasTrumpRightPlayer = hasTrumpRightPlayer; oFreeSuitsLeftPlayer = pFreeSuitsLeftPlayer; oFreeSuitsRightPlayer = pFreeSuitsRightPlayer; } // ------------------------- // Methods public void setCardsAfterDiscarding(CardList pOwnCards) { oLongestSuit = pOwnCards.getMostFrequentSuit(); oBlankSuits = new ArrayList<Suit>(); for(Suit s : Suit.values()) { if(pOwnCards.getSuitCount(s, false) == 0) oBlankSuits.add(s); } } // ------------------------- // GETTER public Suit getTrumpSuit() { return oTrumpSuit; } public GameType getGameType() { return oGameType; } public Suit getLongestSuit() { return oLongestSuit; } public ArrayList<Suit> getBlankSuits() { return oBlankSuits; } public int getRandomInt() { return oRandomInt; } // ------------------------- // LEFT PLAYER public void setLeftPlayerBlankColor(Suit pSuit) { oFreeSuitsLeftPlayer.add(pSuit); } public void setLeftPlayerBlankOnTrump() { oHasTrumpLeftPlayer = true; } public ArrayList<Suit> getLeftPlayerBlankSuits() { return oFreeSuitsLeftPlayer; } public boolean isLeftPlayerBlankOnColor(Suit pSuit) { return oFreeSuitsLeftPlayer.contains(pSuit); } public boolean leftPlayerHasTrump() { return oHasTrumpLeftPlayer; } // ------------------------- // RIGHT PLAYER public void setRightPlayerBlankColor(Suit pSuit) { oFreeSuitsRightPlayer.add(pSuit); } public void setRightPlayerBlankOnTrump() { oHasTrumpRightPlayer = true; } public ArrayList<Suit> getRightPlayerBlankSuits() { return oFreeSuitsRightPlayer; } public boolean isRightPlayerBlankOnColor(Suit pSuit) { return oFreeSuitsRightPlayer.contains(pSuit); } public boolean rightPlayerHasTrump() { return oHasTrumpRightPlayer; } }