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 testActionSellShare(self):
    b = Board()
    gc = GameController(b)

    # Doctor the board
    b.advanceShareScore(Resources.Green, 16)  # Share value = 9$

    confidenceMarkerBefore = b.confidenceMarker
    p0, p1, p2, p3 = gc.players
    p0.amount = 0
    p0.addCard(ShareCard(Resources.Green, 3))
    p0.addCard(ActionCard())
    gc.actionSellShare(p0, ShareCard(Resources.Green, 3))  # 3 * 9$

    self.assertEqual(27, p0.amount)
    self.assertNotIn(ShareCard(Resources.Green, 3), p0.cards)
    self.assertEqual(confidenceMarkerBefore - _confidenceLossPerSale,
        b.confidenceMarker)

    with self.assertRaises(RuntimeError):
      gc.actionSellShare(p0, ShareCard(Resources.Green, 3))

    with self.assertRaises(RuntimeError):
      gc.actionSellShare(p0, ActionCard())
Ejemplo n.º 4
0
  def testFinalizeGame(self):
    b = Board()
    gc = GameController(b)
    p0, p1, p2, p3 = gc.players
    # Doctor the board.
    b.advanceShareScore(Resources.Red, 20)    # ==> 11$
    self.assertEqual(11, b.getShareValue(Resources.Red))
    b.advanceShareScore(Resources.Green, 28)  # ==> 18$
    self.assertEqual(18, b.getShareValue(Resources.Green))
    b.advanceShareScore(Resources.Blue, 35)   # ==> 20$
    self.assertEqual(20, b.getShareValue(Resources.Blue))

    p0.amount = 10
    p0.addCard(EquipmentCard(0, 1, 2))              # + 2$
    p0.addCard(LoanCard(5, 1, -3))                  # - 3$
    p0.addCard(ShareCard(Resources.Red, 3))         # + 3 * 11$
    p0.addCard(WorkforceCard(1, 3, 0))
    p0.addCard(LoanCard(4, 1, -4))                  # - 4$
    p0.addCard(ShareCard(Resources.Green, 2))       # + 2 * 18$
    p0.addCard(EmergencyLoanCard(1, -10))           # - 10$
    p0.addCard(FactoryCard(Resources.Glass, 0, 1, 0))
    p0.addCard(ShareCard(Resources.Blue, 3))        # + 3 * 20$

    # p1 has BonusEquipmentCard and BonusFactoryCard
    p1.amount = 1
    p1.setLevelCard(LevelCard(3))
    p1.addCard(EquipmentCard(1, 2, 5))              # + 5$
    p1.addCard(FactoryCard(Resources.Iron, 1, 3, 0))
    p1.addCard(LoanCard(6, 2, -6))                  # - 6$
    p1.addCard(MoneyForLevelCard(3, 5, 1, 0))
    p1.addCard(MoneyForLevelCard(4, 10, 1, 0))

    # p3 has BonusEquipmentCard and BonusFactoryCard
    p3.amount = 0
    p3.setLevelCard(LevelCard(3))
    p3.addCard(EquipmentCard(1, 2, 5))              # + 5$
    p3.addCard(FactoryCard(Resources.Iron, 1, 3, 0))
    p3.addCard(LoanCard(6, 2, -6))                  # - 6$
    p3.addCard(MoneyForLevelCard(3, 5, 1, 0))
    p3.addCard(MoneyForLevelCard(4, 10, 1, 0))

    gc.finalizeGame()
    self.assertEqual(10 + 2 - 3 + 3*11 - 4 + 2*18 - 10 + 3*20, p0.amount)
    self.assertEqual(0, p1.amount)
    self.assertEqual(0, p3.amount)