def ApplyAction(self, gameState): #logging.debug("APPLYING ACTION! \n TYPE = {0}".format(BankTradeOfferAction.type)) # ADD THE 'UNKNOWN' RESOURCE TYPE (not present in trade transaction) give = self.giveResources + [0] get = self.getResources + [0] gameState.players[self.playerNumber].resources -= listm(give) gameState.players[self.playerNumber].resources += listm(get)
def ApplyAction(self, gameState): gameState.currState = gameState.currTradeOffer.previousGameState gameState.currPlayer = gameState.currTradeOffer.fromPlayerNumber give = gameState.currTradeOffer.giveResources + [0] get = gameState.currTradeOffer.getResources + [0] gameState.players[self.offerPlayerNumber].resources -= listm(give) gameState.players[self.playerNumber].resources -= listm(get) gameState.players[self.offerPlayerNumber].resources += listm(give) gameState.players[self.playerNumber].resources += listm(get) gameState.currTradeOffer = None
class BuildRoadAction(BuildAction): type = 'BuildRoad' cost = listm([ 1, # brick 0, # ore 0, # wool 0, # grain 1, # lumber 0 ]) # unknown pieceId = 0 def __init__(self, playerNumber, position, index): super(BuildRoadAction, self).__init__(playerNumber, position, index, BuildRoadAction.pieceId, BuildRoadAction.cost) def ApplyAction(self, gameState): super(BuildRoadAction, self).ApplyAction(gameState) if gameState.checkLongestRoad: gameState.UpdateLongestRoad() if gameState.currState == "START1B": gameState.players[gameState.currPlayer].firstRoadBuild = True nextPlayer = (gameState.currPlayer + 1) % len(gameState.players) if nextPlayer == gameState.startingPlayer: gameState.currState = "START2A" else: gameState.currPlayer = nextPlayer gameState.currState = "START1A" elif gameState.currState == "START2B": gameState.players[gameState.currPlayer].secondRoadBuild = True if gameState.currPlayer == gameState.startingPlayer: gameState.FinishSetup() gameState.currState = "PLAY" else: nextPlayer = (gameState.currPlayer - 1) % len( gameState.players) gameState.currPlayer = nextPlayer gameState.currState = "START2A" elif gameState.currState == "PLACING_FREE_ROAD1": gameState.currState = "PLACING_FREE_ROAD2" elif gameState.currState == "PLACING_FREE_ROAD2": gameState.currState = "PLAY1"
class BuildSettlementAction(BuildAction): type = 'BuildSettlement' cost = listm([ 1, # brick 0, # ore 1, # wool 1, # grain 1, # lumber 0 ]) # unknown pieceId = 1 def __init__(self, playerNumber, position, index): super(BuildSettlementAction, self).__init__(playerNumber, position, index, BuildSettlementAction.pieceId, BuildSettlementAction.cost) def ApplyAction(self, gameState): super(BuildSettlementAction, self).ApplyAction(gameState) #if gameState.boardNodes[self.position].portType is not None: # gameState.players[self.playerNumber].UpdateTradeRates(gameState) if gameState.checkLongestRoad: for edge in gameState.boardNodes[self.position].adjacentEdges: checkLongestRoad = False if gameState.boardEdges[edge].construction is not None and \ gameState.boardEdges[edge].construction.owner != self.playerNumber: checkLongestRoad = True break if checkLongestRoad: gameState.UpdateLongestRoad() if gameState.currState == "START1A": gameState.players[gameState.currPlayer].firstSettlementBuild = True gameState.currState = "START1B" elif gameState.currState == "START2A": gameState.players[ gameState.currPlayer].secondSettlementBuild = True gameState.players[self.playerNumber].GetStartingResources( gameState) gameState.currState = "START2B"
class BuildCityAction(BuildAction): type = 'BuildCity' cost = listm([ 0, # brick 3, # ore 0, # wool 2, # grain 0, # lumber 0 ]) # unknown pieceId = 2 def __init__(self, playerNumber, position, index): super(BuildCityAction, self).__init__(playerNumber, position, index, BuildCityAction.pieceId, BuildCityAction.cost) '''
class BuyDevelopmentCardAction(Action): type = 'BuyDevelopmentCard' cost = listm([ 0, # brick 1, # ore 1, # wool 1, # grain 0, # lumber 0 ]) # unknown def __init__(self, playerNumber): super(BuyDevelopmentCardAction, self).__init__() self.playerNumber = playerNumber def GetMessage(self, gameName, currGameStateName=None): return BuyCardRequestMessage(gameName) def ApplyAction(self, gameState): #logging.debug("APPLYING ACTION! \n TYPE = {0}".format(BuyDevelopmentCardAction.type)) gameState.players[ self.playerNumber].resources -= BuyDevelopmentCardAction.cost if self.tradeOptimistic: discountCount = 0 for i in range( 0, len(gameState.players[self.playerNumber].resources)): if gameState.players[self.playerNumber].resources[i] < 0: discountCount += gameState.players[ self.playerNumber].resources[i] * -1 gameState.players[self.playerNumber].resources[i] = 0 self.players[self.playerNumber].DiscountAtRandom(discountCount) gameState.DrawDevCard(self.playerNumber)
def __init__(self, name, seatNumber): self.name = name self.seatNumber = seatNumber self.resources = listm([0, 0, 0, 0, 0, 0]) self.developmentCards = [0 for i in range(0, len(g_developmentCards))] self.mayPlayDevCards = [ False for i in range(0, len(g_developmentCards)) ] self.recentCard = [0 for i in range(0, len(g_developmentCards))] self.roads = [] self.settlements = [] self.cities = [] self.biggestRoad = False self.biggestArmy = False self.numberOfPieces = [15, 5, 4] self.knights = 0 self.playedDevCard = False self.discardCardCount = 0 self.diceProduction = \ { 2 : listm([0, 0, 0, 0, 0, 0]), 3 : listm([0, 0, 0, 0, 0, 0]), 4 : listm([0, 0, 0, 0, 0, 0]), 5 : listm([0, 0, 0, 0, 0, 0]), 6 : listm([0, 0, 0, 0, 0, 0]), 8 : listm([0, 0, 0, 0, 0, 0]), 9 : listm([0, 0, 0, 0, 0, 0]), 10 : listm([0, 0, 0, 0, 0, 0]), 11 : listm([0, 0, 0, 0, 0, 0]), 12 : listm([0, 0, 0, 0, 0, 0]) } self.tradeRates = [4, 4, 4, 4, 4, 4] self.possibleRoads = [] self.possibleSettlements = [] self.firstSettlementBuild = False self.secondSettlementBuild = False self.firstRoadBuild = False self.secondRoadBuild = False self.rolledTheDices = False self.placedRobber = False self.victoryPoints = 0 self.updateVictoryPoints = False self.roadCount = 0 self.agentName = "RANDOM" self.logStats = False self.logData = None