public int getNumResourceCards() { return wood.getQuantity() + brick.getQuantity() + sheep.getQuantity() + wheat.getQuantity() + ore.getQuantity(); }
/** * @param rh * @throws BankException */ public void setRC(ResourceHand rh) throws BankException { brick.setQuantity(rh.getBrick()); ore.setQuantity(rh.getOre()); wheat.setQuantity(rh.getWheat()); wood.setQuantity(rh.getWood()); sheep.setQuantity(rh.getSheep()); }
/** * @param quantity * @throws BankException */ public void setRC(int quantity) throws BankException { brick.setQuantity(quantity); ore.setQuantity(quantity); wheat.setQuantity(quantity); wood.setQuantity(quantity); sheep.setQuantity(quantity); }
/** * @param rh a ResourceHand object * @throws BankException * @pre all attributes of the rh are non negative and do not exceed limits * @post all resource attributes are increased by their corresponding rh attribute. */ public void modifyRC(ResourceHand rh) throws BankException { brick.modify(rh.getBrick()); wheat.modify(rh.getWheat()); ore.modify(rh.getOre()); wood.modify(rh.getWood()); sheep.modify(rh.getSheep()); }
/** * @param rh * @return */ public boolean hasRC(ResourceHand rh) { if (ore.getQuantity() < rh.getOre()) return false; if (wood.getQuantity() < rh.getWood()) return false; if (sheep.getQuantity() < rh.getSheep()) return false; if (wheat.getQuantity() < rh.getWheat()) return false; if (brick.getQuantity() < rh.getBrick()) return false; return true; }
/** * TODO Javadoc and Implement * * @param devCardType * @param resourceType * @return * @throws Exception */ public boolean useDevelopmentCard( int userID, DevCardType devCardType, ResourceType[] resourceType) throws Exception { if (currentPlayer.getPlayerId() == userID) { if (currentPlayer.canDoPlayDevelopmentCard(turnNumber, devCardType)) { switch (devCardType) { case MONOPOLY: if (resourceType == null || resourceType.length > 1) { throw new Exception("Trying to use monopoly on more than one resource!"); } // Declare a Resource the player wants, and then extract it from all players who have // it. for (int i = 0; i < players.length; i++) { if (players[i] != currentPlayer) { // If not the current player, ask the player for an Array list of it's resource card // of that type currentPlayer .conformToMonopoly(resourceType[0]) .addAll(players[i].conformToMonopoly(resourceType[0])); players[i].conformToMonopoly(resourceType[0]).clear(); } } currentPlayer.playDevelopmentCard(turnNumber, DevCardType.MONOPOLY); currentPlayer.setHasPlayedDevCardThisTurn(true); setVersionNumber(versionNumber++); return doWeHaveAWinner(); case YEAR_OF_PLENTY: if (canDoPlayerUseYearOfPlenty(resourceType, userID)) { // Add two resources of the types specified to the currentPlayers hand if (resourceType.length == 1) { ResourceCard resource = bank.playerTakeResource(resourceType[0]); // some sneaky idea that realizes conformToMonopoly returns the arraylist of that // players cards of a specified type. currentPlayer.conformToMonopoly(resourceType[0]).add(resource); ; // repeat resource = bank.playerTakeResource(resource.getResourceType()); currentPlayer.conformToMonopoly(resourceType[0]).add(resource); } else if (resourceType.length == 2) { for (int g = 0; g < resourceType.length; g++) { ResourceCard resource = bank.playerTakeResource(resourceType[g]); // some sneaky idea that realizes conformToMonopoly returns the arraylist of that // players cards of a specified type. currentPlayer.conformToMonopoly(resourceType[g]).add(resource); } } currentPlayer.playDevelopmentCard(turnNumber, DevCardType.YEAR_OF_PLENTY); currentPlayer.setHasPlayedDevCardThisTurn(true); setVersionNumber(versionNumber++); return doWeHaveAWinner(); } else { throw new Exception("The bank has not what you seek."); } default: throw new Exception("Wrong declaration for a development card of this type."); } } } else { throw new Exception("You cannot use a development Card"); } return doWeHaveAWinner(); }