def get_box(num_victory): """ Input: the number of victory cards Returns: a dictionary of cards The number of "Gardens" is determined by the # of victory cards """ box = {} box["Woodcutter"] = [Dominion.Woodcutter()] * 10 box["Smithy"] = [Dominion.Smithy()] * 10 box["Laboratory"] = [Dominion.Laboratory()] * 10 box["Village"] = [Dominion.Village()] * 10 box["Festival"] = [Dominion.Festival()] * 10 box["Market"] = [Dominion.Market()] * 10 box["Chancellor"] = [Dominion.Chancellor()] * 10 box["Workshop"] = [Dominion.Workshop()] * 10 box["Moneylender"] = [Dominion.Moneylender()] * 10 box["Chapel"] = [Dominion.Chapel()] * 10 box["Cellar"] = [Dominion.Cellar()] * 10 box["Remodel"] = [Dominion.Remodel()] * 10 box["Adventurer"] = [Dominion.Adventurer()] * 10 box["Feast"] = [Dominion.Feast()] * 10 box["Mine"] = [Dominion.Mine()] * 10 box["Library"] = [Dominion.Library()] * 10 box["Gardens"] = [Dominion.Gardens()] * num_victory box["Moat"] = [Dominion.Moat()] * 10 box["Council Room"] = [Dominion.Council_Room()] * 10 box["Witch"] = [Dominion.Witch()] * 10 box["Bureaucrat"] = [Dominion.Bureaucrat()] * 10 box["Militia"] = [Dominion.Militia()] * 10 box["Spy"] = [Dominion.Spy()] * 10 box["Thief"] = [Dominion.Thief()] * 10 box["Throne Room"] = [Dominion.Throne_Room()] * 10 return box
def initBox(nV): #Define box box = {} box["Woodcutter"]=[Dominion.Woodcutter()]*10 box["Smithy"]=[Dominion.Smithy()]*10 box["Laboratory"]=[Dominion.Laboratory()]*10 box["Village"]=[Dominion.Village()]*10 box["Festival"]=[Dominion.Festival()]*10 box["Market"]=[Dominion.Market()]*10 box["Chancellor"]=[Dominion.Chancellor()]*10 box["Workshop"]=[Dominion.Workshop()]*10 box["Moneylender"]=[Dominion.Moneylender()]*10 box["Chapel"]=[Dominion.Chapel()]*10 box["Cellar"]=[Dominion.Cellar()]*10 box["Remodel"]=[Dominion.Remodel()]*10 box["Adventurer"]=[Dominion.Adventurer()]*10 box["Feast"]=[Dominion.Feast()]*10 box["Mine"]=[Dominion.Mine()]*10 box["Library"]=[Dominion.Library()]*10 box["Gardens"]=[Dominion.Gardens()]*nV box["Moat"]=[Dominion.Moat()]*10 box["Council Room"]=[Dominion.Council_Room()]*10 box["Witch"]=[Dominion.Witch()]*10 box["Bureaucrat"]=[Dominion.Bureaucrat()]*10 box["Militia"]=[Dominion.Militia()]*10 box["Spy"]=[Dominion.Spy()]*10 box["Thief"]=[Dominion.Thief()]*10 box["Throne Room"]=[Dominion.Throne_Room()]*10 return box
def get_boxes(nV): """ :param nV: starting number of each victory card, used here for calculating number of garden cards :return: box, a dictionary containing starting lists of action cards """ box = {} box["Woodcutter"] = [Dominion.Woodcutter()] * 10 box["Smithy"] = [Dominion.Smithy()] * 10 box["Laboratory"] = [Dominion.Laboratory()] * 10 box["Village"] = [Dominion.Village()] * 10 box["Festival"] = [Dominion.Festival()] * 10 box["Market"] = [Dominion.Market()] * 10 box["Chancellor"] = [Dominion.Chancellor()] * 10 box["Workshop"] = [Dominion.Workshop()] * 10 box["Moneylender"] = [Dominion.Moneylender()] * 10 box["Chapel"] = [Dominion.Chapel()] * 10 box["Cellar"] = [Dominion.Cellar()] * 10 box["Remodel"] = [Dominion.Remodel()] * 10 box["Adventurer"] = [Dominion.Adventurer()] * 10 box["Feast"] = [Dominion.Feast()] * 10 box["Mine"] = [Dominion.Mine()] * 10 box["Library"] = [Dominion.Library()] * 10 box["Gardens"] = [Dominion.Gardens()] * nV box["Moat"] = [Dominion.Moat()] * 10 box["Council Room"] = [Dominion.Council_Room()] * 10 box["Witch"] = [Dominion.Witch()] * 10 box["Bureaucrat"] = [Dominion.Bureaucrat()] * 10 box["Militia"] = [Dominion.Militia()] * 10 box["Spy"] = [Dominion.Spy()] * 10 box["Thief"] = [Dominion.Thief()] * 10 box["Throne Room"] = [Dominion.Throne_Room()] * 10 return box
def define_box(nV): box = {} box["Woodcutter"]=[Dominion.Woodcutter()]*10 box["Smithy"]=[Dominion.Smithy()]*10 box["Laboratory"]=[Dominion.Laboratory()]*10 box["Village"]=[Dominion.Village()]*10 box["Festival"]=[Dominion.Festival()]*10 box["Market"]=[Dominion.Market()]*10 box["Chancellor"]=[Dominion.Chancellor()]*10 box["Workshop"]=[Dominion.Workshop()]*10 box["Moneylender"]=[Dominion.Moneylender()]*10 box["Chapel"]=[Dominion.Chapel()]*10 box["Cellar"]=[Dominion.Cellar()]*10 box["Remodel"]=[Dominion.Remodel()]*10 box["Adventurer"]=[Dominion.Adventurer()]*10 box["Feast"]=[Dominion.Feast()]*10 box["Mine"]=[Dominion.Mine()]*10 box["Library"]=[Dominion.Library()]*10 box["Gardens"]=[Dominion.Gardens()]*nV box["Moat"]=[Dominion.Moat()]*10 box["Council Room"]=[Dominion.Council_Room()]*10 box["Witch"]=[Dominion.Witch()]*10 box["Bureaucrat"]=[Dominion.Bureaucrat()]*10 box["Militia"]=[Dominion.Militia()]*10 box["Spy"]=[Dominion.Spy()]*10 box["Thief"]=[Dominion.Thief()]*10 box["Throne Room"]=[Dominion.Throne_Room()]*10 supply_order = {0: ['Curse', 'Copper'], 2: ['Estate', 'Cellar', 'Chapel', 'Moat'], 3: ['Silver', 'Chancellor', 'Village', 'Woodcutter', 'Workshop'], 4: ['Gardens', 'Bureaucrat', 'Feast', 'Militia', 'Moneylender', 'Remodel', 'Smithy', 'Spy', 'Thief', 'Throne Room'], 5: ['Duchy', 'Market', 'Council Room', 'Festival', 'Laboratory', 'Library', 'Mine', 'Witch'], 6: ['Gold', 'Adventurer'], 8: ['Province']} return box, supply_order
def test_no_curse(self): #print("play test_no_curse...") before_length = len(players[1].discard) #print(players[1].discard) while len(supply["Curse"]) > 0: supply["Curse"].pop() Dominion.Witch().play(players[0], players, supply, trash) #print(players[1].discard) after_length = len(players[1].discard) self.assertEqual(before_length, after_length)
def test_protect(self): #print("play test_protect...") dis1 = len(players[1].discard) #print(players[1].discard) supply["Curse"] = [Dominion.Curse()] * 1 supply["Moat"] = [Dominion.Moat()] * 1 players[1].hand.append(supply['Moat'][0]) Dominion.Witch().play(players[0], players, supply, trash) #print(players[1].discard) dis2 = len(players[1].discard) self.assertEqual(dis1, dis2)
def test_actionBalance(self): # init data self.dataSetUp() # test before adding action cards self.assertEqual(0, self.player.action_balance()) # should be zero action cards # add 4 action cards self.player.deck += [Dominion.Smithy()] * 2 + [Dominion.Militia()] * 2 # test new balance self.assertEqual(-20.0, self.player.action_balance()) # should now be -20.0 # add 6 more action cards self.player.deck += [Dominion.Witch()] * 3 + [Dominion.Mine()] * 3 # test new balance self.assertEqual(-35.0, self.player.action_balance()) # should now be -35.0
class TestWitchPlay(unittest.TestCase): Dominion.Witch().play(players[0], players, supply, trash) #print("initial VP: ", players[1].calcpoints()) def test_place_curse(self): #print("play test_place_curse...") for player in players: #print(player.discard) if player is not players[0]: self.assertEqual(len(player.discard), 1) def test_self_curse(self): #print("play test_place_curse...") #print(players[0].discard) self.assertEqual(len(players[0].discard), 0) def test_new_vp(self): #print("play test_new_vp...") #print("cursed VP: ", players[1].calcpoints()) self.assertGreater(players[0].calcpoints(), players[1].calcpoints()) def test_no_curse(self): #print("play test_no_curse...") before_length = len(players[1].discard) #print(players[1].discard) while len(supply["Curse"]) > 0: supply["Curse"].pop() Dominion.Witch().play(players[0], players, supply, trash) #print(players[1].discard) after_length = len(players[1].discard) self.assertEqual(before_length, after_length) def test_protect(self): #print("play test_protect...") dis1 = len(players[1].discard) #print(players[1].discard) supply["Curse"] = [Dominion.Curse()] * 1 supply["Moat"] = [Dominion.Moat()] * 1 players[1].hand.append(supply['Moat'][0]) Dominion.Witch().play(players[0], players, supply, trash) #print(players[1].discard) dis2 = len(players[1].discard) self.assertEqual(dis1, dis2)
def getBoxes(nV): """ Returns a box object takes nV as an argument that represents the number of Victory Cards in play """ #Create a box object box = {} box["Woodcutter"] = [Dominion.Woodcutter()] * 10 box["Smithy"] = [Dominion.Smithy()] * 10 box["Laboratory"] = [Dominion.Laboratory()] * 10 box["Village"] = [Dominion.Village()] * 10 box["Festival"] = [Dominion.Festival()] * 10 box["Market"] = [Dominion.Market()] * 10 box["Chancellor"] = [Dominion.Chancellor()] * 10 box["Workshop"] = [Dominion.Workshop()] * 10 box["Moneylender"] = [Dominion.Moneylender()] * 10 box["Chapel"] = [Dominion.Chapel()] * 10 box["Cellar"] = [Dominion.Cellar()] * 10 box["Remodel"] = [Dominion.Remodel()] * 10 box["Adventurer"] = [Dominion.Adventurer()] * 10 box["Feast"] = [Dominion.Feast()] * 10 box["Mine"] = [Dominion.Mine()] * 10 box["Library"] = [Dominion.Library()] * 10 box["Gardens"] = [Dominion.Gardens()] * nV box["Moat"] = [Dominion.Moat()] * 10 box["Council Room"] = [Dominion.Council_Room()] * 10 box["Witch"] = [Dominion.Witch()] * 10 box["Bureaucrat"] = [Dominion.Bureaucrat()] * 10 box["Militia"] = [Dominion.Militia()] * 10 box["Spy"] = [Dominion.Spy()] * 10 box["Thief"] = [Dominion.Thief()] * 10 box["Throne Room"] = [Dominion.Throne_Room()] * 10 return box
box["Festival"] = [Dominion.Festival()] * 10 box["Market"] = [Dominion.Market()] * 10 box["Chancellor"] = [Dominion.Chancellor()] * 10 box["Workshop"] = [Dominion.Workshop()] * 10 box["Moneylender"] = [Dominion.Moneylender()] * 10 box["Chapel"] = [Dominion.Chapel()] * 10 box["Cellar"] = [Dominion.Cellar()] * 10 box["Remodel"] = [Dominion.Remodel()] * 10 box["Adventurer"] = [Dominion.Adventurer()] * 10 box["Feast"] = [Dominion.Feast()] * 10 box["Mine"] = [Dominion.Mine()] * 10 box["Library"] = [Dominion.Library()] * 10 box["Gardens"] = [Dominion.Gardens()] * nV box["Moat"] = [Dominion.Moat()] * 10 box["Council Room"] = [Dominion.Council_Room()] * 10 box["Witch"] = [Dominion.Witch()] * 10 box["Bureaucrat"] = [Dominion.Bureaucrat()] * 10 box["Militia"] = [Dominion.Militia()] * 10 box["Spy"] = [Dominion.Spy()] * 10 box["Thief"] = [Dominion.Thief()] * 10 box["Throne Room"] = [Dominion.Throne_Room()] * 10 supply_order = { 0: ['Curse', 'Copper'], 2: ['Estate', 'Cellar', 'Chapel', 'Moat'], 3: ['Silver', 'Chancellor', 'Village', 'Woodcutter', 'Workshop'], 4: [ 'Gardens', 'Bureaucrat', 'Feast', 'Militia', 'Moneylender', 'Remodel', 'Smithy', 'Spy', 'Thief', 'Throne Room' ], 5: [
box["Market"] = [Dominion.Festival()] * 10 box["Chancellor"] = [Dominion.Market()] * 10 box["Workshop"] = [Dominion.Chancellor()] * 10 box["Moneylender"] = [Dominion.Workshop()] * 10 box["Chapel"] = [Dominion.Moneylender()] * 10 box["Cellar"] = [Dominion.Chapel()] * 10 box["Remodel"] = [Dominion.Cellar()] * 10 box["Adventurer"] = [Dominion.Remodel()] * 10 box["Feast"] = [Dominion.Adventurer()] * 10 box["Mine"] = [Dominion.Feast()] * 10 box["Library"] = [Dominion.Mine()] * 10 box["Gardens"] = [Dominion.Library()] * 10 box["Moat"] = [Dominion.Gardens()] * nV box["Council Room"] = [Dominion.Moat()] * 10 box["Witch"] = [Dominion.Council_Room()] * 10 box["Bureaucrat"] = [Dominion.Witch()] * 10 box["Militia"] = [Dominion.Bureaucrat()] * 10 box["Spy"] = [Dominion.Militia()] * 10 box["Thief"] = [Dominion.Spy()] * 10 box["Throne Room"] = [Dominion.Thief()] * 10 # Get supply order supply_order = testUtility.getSupplyOrder() # Pick 10 cards from box to be in the supply. boxlist = testUtility.getBoxList(box) random10 = testUtility.getRandom10(boxlist) supply = testUtility.getSupply(box, random10) # The supply always has these cards supply = testUtility.getDefaultSupply(supply, player_names, nV, nC)