Ejemplo n.º 1
0
  def testComputeBuildValue(self):
    b = Board()
    gc = gamecontroller.GameController(b)
    gc.turnIndex = 2
    p0, p1, p2, p3 = gc.players
    ai0, ai1, ai2, ai3 = [gc.ais[i] for i in range(4)]
    column = BuildingColumn(Resources.Red, [
        BuildingCard(5, Resources.Red, Resources.Glass),
        BuildingCard(2, Resources.Red, Resources.Bank),
        BuildingCard(3, Resources.Red, Resources.Red),
        BuildingCard(3, Resources.Red, Resources.Red),
        ])
    b.buildingColumn[Resources.Red] = column
    column.setRoof(RoofCard(4, 4))
    b.buildingColumn[Resources.Green].setRoof(FinalRoofCard(10))

    p0.amount = 100
    p0.addCard(ShareCard(Resources.Red, 2))
    p0.addCard(WorkforceCard(0, 1))
    b.advanceShareScore(Resources.Red, 17)

    valueBefore = b.getShareValueForScore(maxShareScore[2][17])
    valueAfter = b.getShareValueForScore(maxShareScore[2][21])
    expected = 2 * (valueAfter - valueBefore) + 3 * valueAfter + 4 * 3 - 20
    self.assertEqual(expected, ai0.computeBuildValue(gc, Resources.Red))
    self.assertEqual(-1000, ai0.computeBuildValue(gc, Resources.Green))
    p0.amount = 10
    self.assertEqual(-1000, ai0.computeBuildValue(gc, Resources.Red))
Ejemplo n.º 2
0
 def testComputeSellShareValue(self):
   b = Board()
   gc = gamecontroller.GameController(b)
   ai0, ai1, ai2, ai3 = [gc.ais[i] for i in range(4)]
   b.advanceShareScore(Resources.Red, 17)
   currentValue = b.getShareValueForScore(17)
   finalValue = b.getShareValueForScore(finalShareScore[0][17])
   self.assertEqual((currentValue - finalValue) * 4,
       ai0.computeSellShareValue(gc, ShareCard(Resources.Red, 4)))
Ejemplo n.º 3
0
  def testComputeGetCardValue(self):
    b = Board()
    gc = gamecontroller.GameController(b)
    p0, p1, p2, p3 = gc.players
    p0.amount = 0
    ai0, ai1, ai2, ai3 = [gc.ais[i] for i in range(4)]
    b.cardStack = [
      FactoryCard(Resources.Glass, 0, 1),
      WorkforceCard(0, 1),
      PlusLevelCard(1, 1),
      GoodsCard(Resources.Iron, 5, 0),
      MoneyForLevelCard(3, 3, 0),
      WorkforceCard(0, 1),
      ActionCard(),
      UpgradeCard(2),
      LoanCard(10, 1),
      LoanCard(8, 1),
      GoodsCard(Resources.Brick, 4, 0)]
    b.prepareTurn()
    b.revenues[Resources.Red] = 2
    b.revenues[Resources.Green] = 4
    b.revenues[Resources.Blue] = 8
    column = BuildingColumn(Resources.Red, [
        BuildingCard(5, Resources.Red, Resources.Glass),
        BuildingCard(3, Resources.Red, Resources.Red),
        ])
    b.buildingColumn[Resources.Red] = column
    column.setRoof(RoofCard(2, 1))
    b.buildingColumn[Resources.Green].setRoof(FinalRoofCard(5))
    b.buildingColumn[Resources.Blue].setRoof(FinalRoofCard(5))

    # Estimated confidence marker:
    confidenceMarker = [predictedConfidenceMarker[0][i][b.confidenceMarker]
        for i in range(6)]
    interests = sum([b.getInterestsForMarker(marker)
        for marker in confidenceMarker])
    totalLevel = sum(range(6))
    # First card gets 1 to advance on red.
    self.assertEqual(1 + totalLevel * 0.7 - interests,
        ai0.computeGetCardValue(gc, 0))
    # Second card gets 2 to advance on green.
    self.assertEqual(2 + totalLevel - interests, ai0.computeGetCardValue(gc, 1))
    # Second card gets 4 to advance on blue.
    self.assertEqual(4 + 2 * 6 - interests, ai0.computeGetCardValue(gc, 2))
    self.assertEqual(5, ai0.computeGetCardValue(gc, 3))
    self.assertEqual(9, ai0.computeGetCardValue(gc, 4))
    self.assertEqual(totalLevel - interests, ai0.computeGetCardValue(gc, 5))
    self.assertEqual(0, ai0.computeGetCardValue(gc, 6))
    self.assertEqual(-2 * interests, ai0.computeGetCardValue(gc, 7))
    buildingValue = 3 * b.getShareValueForScore(maxShareScore[0][1]) - 10
    mult = ai0.loanMultiplier
    self.assertEqual(buildingValue * mult - interests,
        ai0.computeGetCardValue(gc, 8))
    self.assertEqual(round(buildingValue * mult * mult - interests, 3),
        round(ai0.computeGetCardValue(gc, 9), 3))
    self.assertEqual(4, ai0.computeGetCardValue(gc, 10))