示例#1
0
def getWinnersTest():
	player=random.randrange(2,5)
	seed=random.randrange(3,11)

	game = d.initializeGame(player, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
								d.embargo, d.feast, d.gardens, d.great_hall, d.mine], seed)
				
			
#for i in range(MAX_TEST):
	turn=random.randrange(0,player)
	game.whoseTurn=turn
	hand1=[]
	deck1=[]
	discard1=[]
	for i in range(player):
		hand1.append(random.randrange(0,MAX_HAND))
		deck1.append(random.randrange(0,MAX_DECK))
		discard1.append(random.randrange(0,MAX_DECK))
	for p in range(player):
		game.hand[p]=[]
		game.deck[p]=[]
		game.discard[p]=[]
		for a in range(hand1[p]):
			game.hand[p].append(random.randrange(d.curse,d.mine+1))
		for b in range(deck1[p]):
			game.deck[p].append(random.randrange(d.curse,d.mine+1))
		for c in range(discard1[p]):
			game.discard[p].append(random.randrange(d.curse,d.mine+1))
	d.getWinners(game)
示例#2
0
文件: qcheck.py 项目: huangca/work
def test_buyCard(x,c):
	g=d.initializeGame(x, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                            d.embargo, d.feast, d.gardens, d.great_hall,d.mine], 2)
		
	if g.numBuys<1 or g.supplyCount[c]==0 or g.coins<d.getCost(c):
		assert d.buyCard(c, g)==-1
	else:
		assert d.buyCard(c, g)==0
示例#3
0
文件: qcheck.py 项目: huangca/work
def test_endTurn(s):
	g=d.initializeGame(s, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                            d.embargo, d.feast, d.gardens, d.great_hall,d.mine], 2)
	n=random.randrange(0,s)
	g.whoseTurn=n
	r=d.endTurn(g)
	if r==0:
		assert g.whoseTurn!=n
示例#4
0
def isGameOverTest():
	player=random.randrange(2,5)
	seed=random.randrange(3,11)

	game = d.initializeGame(player, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
								d.embargo, d.feast, d.gardens, d.great_hall, d.mine], seed)
				
#for i in range(MAX_TEST):
	for card in range(d.curse,d.mine):
		game.supplyCount[card]=random.randrange(0,12)
	d.isGameOver(game)
示例#5
0
文件: qcheck.py 项目: huangca/work
def random_GameState(w,s):
	#x=random.randrange(2,5)
	g=d.initializeGame(w, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                            d.embargo, d.feast, d.gardens, d.great_hall,d.mine], s)
	for i in xrange(10):
		if d.isGameOver(g):
			break
		d.buyCard(random.randrange(7,17),g)
		d.playCard(len(g.hand[g.whoseTurn])-1,random.randrange(1,16),random.randrange(1,16),random.randrange(1,17),g)
		d.endTurn(g)
	return g
示例#6
0
文件: qcheck.py 项目: huangca/work
def random_GameState2(w,s):
	cardlist=[d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                            d.embargo, d.feast, d.smithy, d.village,d.sea_hag]
	g=d.initializeGame(w, cardlist, s)
	for i in xrange(10):
		if d.isGameOver(g):
			break
		d.buyCard(random.choice(cardlist),g)
		d.playCard(len(g.hand[g.whoseTurn])-1,random.randrange(0,len(g.hand[g.whoseTurn])-1),random.choice(cardlist),random.choice(cardlist),g)
		d.endTurn(g)
	return g
示例#7
0
文件: qcheck.py 项目: huangca/work
def test_initialzeGame_2(s,x):
	g=d.initializeGame(x, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                            d.embargo, d.feast, d.gardens, d.great_hall,d.mine], s)
	assert isinstance(g,d.gameState)
	if x==2:
		supply={d.curse:10,d.estate:8,d.duchy:8,d.province:8,d.copper:46,d.silver:40,d.gold:30,d.adventurer:10,d.ambassador:10,d.baron:10,d.council_room:10, d.cutpurse:10,d.embargo:10, d.feast:10, d.gardens:8, d.great_hall:8, d.mine:10}
		assert supply==g.supplyCount
	if x==3:
		supply={d.curse:20,d.estate:12,d.duchy:12,d.province:12,d.copper:39,d.silver:40,d.gold:30,d.adventurer:10,d.ambassador:10,d.baron:10,d.council_room:10, d.cutpurse:10,d.embargo:10, d.feast:10, d.gardens:12, d.great_hall:12, d.mine:10}
		assert supply==g.supplyCount
	if x==4:
		supply={d.curse:30,d.estate:12,d.duchy:12,d.province:12,d.copper:32,d.silver:40,d.gold:30,d.adventurer:10,d.ambassador:10,d.baron:10,d.council_room:10, d.cutpurse:10,d.embargo:10, d.feast:10, d.gardens:12, d.great_hall:12, d.mine:10}
		assert supply==g.supplyCount
示例#8
0
文件: qcheck.py 项目: huangca/work
def test_isGameOver(s):
	g=d.initializeGame(s, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                             d.embargo, d.feast, d.gardens, d.great_hall,d.mine], 2)
	for i in xrange(7,17):
		g.supplyCount[i]=random.randrange(0,10)
	g.supplyCount[3]=random.randrange(0,10)
	count=0
	for i in xrange(7,17):
		if g.supplyCount[i]==0:
			count=count+1
	if g.supplyCount[3]==0:
		assert d.isGameOver(g)==1
	elif count>=3:
		assert d.isGameOver(g)==1
	else:
		assert d.isGameOver(g)==0
示例#9
0
def buyCardTest():
	player=random.randrange(2,5)
	seed=random.randrange(3,11)

	game = d.initializeGame(player, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
								d.embargo, d.feast, d.gardens, d.great_hall, d.mine], seed)
		
		
#for i in range(MAX_TEST):
	turn=random.randrange(0,player)
	card=random.choice(game.kingdomCards)
	game.supplyCount[card]=random.randrange(0,31)
	game.coins=random.randrange(0,100)
	game.numBuys=random.randrange(0,10)
	
	d.buyCard(card,game)
示例#10
0
def drawCardTest():
	player=random.randrange(2,5)
	seed=random.randrange(3,11)

	game = d.initializeGame(player, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
								d.embargo, d.feast, d.gardens, d.great_hall, d.mine], seed)
								
#for i in range(MAX_TEST):
	turn=random.randrange(0,player)
	deck=random.randrange(0,MAX_DECK)
	discard=random.randrange(0,MAX_DECK)
	hand=random.randrange(0,MAX_HAND)
	game.deck[turn]=[]
	game.discard[turn]=[]
	game.hand[turn]=[]
	for i in range(deck):
		game.deck[turn].append(random.randrange(d.curse,d.mine+1))
	for j in range(discard):
		game.discard[turn].append(random.randrange(d.curse,d.mine+1))
	for k in range(hand):
		game.hand[turn].append(random.randrange(d.curse,d.mine+1))
	d.drawCard(turn,game)
	
示例#11
0
# this is my shuffle function
# the random.shuffle() function can shuffle empty array so I do not check array is empty or not
# def shuffle(player,state):
	# array=state.deck[player]
	##array.sort()   # in C version it do the sort but I am not sure we have to do it at python
	# random.shuffle(array) 
	# state.deck[player]=array
	# return 0


# if we trust initializeGame() is correct we can use this function initial gamestate
#but need to follow some rule like players have to be 2-4 
card=[]
for i in range(10):
        card.append(i+7)
game = d.initializeGame(3, card, 10)

##we also can create a gamestate break the rules and just fill the deck as test data 
# game=d.gameState(1)
# game.deck[0]=[4,4,4,1,1]

game2=copy.deepcopy(game)
assert(game.deck==game2.deck)

print(game.deck)

print('test shuffle ##################################')
print('shuffle player1 #1')
print(game.deck)
assert(d.shuffle(0,game)==0)
assert(game.deck[0]!=game2.deck[0])
示例#12
0
import dominion_p as d
import copy
game = d.initializeGame(2, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
                            d.embargo, d.feast, d.gardens, d.great_hall, d.mine], 10)
							
							
							
game2=copy.deepcopy(game)
print(game.supplyCount)
print(game.deck[0])
print(game.hand[0])
# test toFlag ==1
assert(d.gainCard(d.adventurer,game,1,0)==0)
assert(game.supplyCount[d.adventurer]+1==game2.supplyCount[d.adventurer])
assert(d.adventurer in game.deck[0])
#test  toFlag ==2
game2=copy.deepcopy(game)
assert(d.gainCard(d.adventurer,game,2,0)==0)
assert(game.supplyCount[d.adventurer]+1==game2.supplyCount[d.adventurer])
assert(d.adventurer in game.hand[0])
#test toFlag not ==1 and 2
game2=copy.deepcopy(game)
assert(d.gainCard(d.adventurer,game,0,0)==0)
assert(game.supplyCount[d.adventurer]+1==game2.supplyCount[d.adventurer])
assert(d.adventurer in game.discard[0])
示例#13
0
def playCardTest():
	player=random.randrange(2,5)
	seed=random.randrange(3,11)

	game = d.initializeGame(player, [d.adventurer, d.ambassador, d.baron, d.council_room, d.cutpurse,
								d.embargo, d.feast, d.gardens, d.great_hall, d.mine], seed)
				
#for i in range(MAX_TEST):
	turn=random.randrange(0,player)
	game.whoseTurn=turn
	play=random.choice(game.kingdomCards)
	#play=d.baron
	if play==d.adventurer:
		deck=random.randrange(0,MAX_DECK)
		discard=random.randrange(0,MAX_DECK)
		hand=random.randrange(0,MAX_HAND-1)
		game.deck[turn]=[]
		game.discard[turn]=[]
		game.hand[turn]=[]
		for i in range(deck):
			game.deck[turn].append(random.randrange(d.curse,d.mine+1))
		for j in range(discard):
			game.discard[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.adventurer) # insert the kingdom card to position
		choice1=-1 #adventurer does not need player any choise so set all -1 and bonus use default
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.ambassador:
		pass #still not clearn this card effect
	elif play==d.baron: #I think have some bug at the baron implementation
		hand=random.randrange(0,MAX_HAND-1)
		discard=random.randrange(0,MAX_DECK)
		game.hand[turn]=[]
		game.discard[turn]=[]
		for j in range(discard):
			game.discard[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.baron)
		choice1=random.randrange(0,hand)
		choice2=random.randrange(0,2)
		choice3=-1 # don't need 3
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.council_room:
		hand1=[]
		deck1=[]
		for i in range(player):
			hand1.append(random.randrange(0,MAX_HAND-1))
		for j in range(player):
			deck1.append(random.randrange(0,MAX_DECK))
		game.hand[turn]=[]
		game.deck[turn]=[]
		for j in range(hand1[turn]):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(deck1[turn]):
			game.deck[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand1[turn])
		game.hand[turn].insert(pos,d.council_room)
		
		for a in range(player):
			if a != turn:
				game.hand[a]=[]
				game.deck[a]=[]
				for b in range(hand1[a]):
					game.hand[a].append(random.randrange(d.curse,d.mine+1))
				for c in range(deck1[a]):
					game.deck[a].append(random.randrange(d.curse,d.mine+1))
		choice1=-1 #don't need choice so set all -1
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.cutpurse:
		hand1=[]
		deck1=[]
		for i in range(player):
			hand1.append(random.randrange(0,MAX_HAND-1))
		for j in range(player):
			deck1.append(random.randrange(0,MAX_DECK))
		game.hand[turn]=[]
		game.deck[turn]=[]
		for j in range(hand1[turn]): # current player
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(deck1[turn]):
			game.deck[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand1[turn])
		game.hand[turn].insert(pos,d.cutpurse)
		
		for a in range(player): #other player
			if a !=turn:
				game.hand[a]=[]
				game.deck[a]=[]
				for b in range(hand1[a]):
					game.hand[a].append(random.randrange(d.curse,d.mine+1))
				for c in range(deck1[a]):
					game.deck[a].append(random.randrange(d.curse,d.mine+1))
		
		choice1=-1
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
		
	elif play==d.embargo:
		hand=random.randrange(0,MAX_HAND-1)
		game.hand[turn]=[]
		for i in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.embargo)
		####random supplyCount
		for card in game.kingdomCards:
			game.supplyCount[card]=random.randrange(0,11)
		#####random embargo token
		for token in game.kingdomCards:
			game.embargoTokens[token]=random.randrange(0,99)
		choice1=random.randrange(d.adventurer,d.mine+1) #random pick one 
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.feast:
		hand=random.randrange(0,MAX_HAND-1)
		game.hand[turn]=[]
		for i in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.feast)
		for card in game.kingdomCards:
			game.supplyCount[card]=random.randrange(0,11)
		choice1=random.choice(game.kingdomCards)
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.great_hall:
		deck=random.randrange(0,MAX_DECK)
		discard=random.randrange(0,MAX_DECK)
		hand=random.randrange(0,MAX_HAND-1)
		game.deck[turn]=[]
		game.discard[turn]=[]
		game.hand[turn]=[]
		for i in range(deck):
			game.deck[turn].append(random.randrange(d.curse,d.mine+1))
		for j in range(discard):
			game.discard[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		
		game.hand[turn].insert(pos,d.great_hall)
		game.numActions=random.randrange(0,99)
		
		choice1=-1
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.mine:
		hand=random.randrange(0,MAX_HAND-1)
		game.hand[turn]=[]
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.mine)
		for card in range(d.copper,d.gold+1): ##random moey
			game.supplyCount[card]=random.randrange(0,50)
		choice1=random.choice(game.hand[turn])
		choice2=random.randrange(d.copper,d.gold+1)
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.smithy:
		deck=random.randrange(0,MAX_DECK)
		discard=random.randrange(0,MAX_DECK)
		hand=random.randrange(0,MAX_HAND-1)
		game.deck[turn]=[]
		game.discard[turn]=[]
		game.hand[turn]=[]
		for i in range(deck):
			game.deck[turn].append(random.randrange(d.curse,d.mine+1))
		for j in range(discard):
			game.discard[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.smithy)
		choice1=-1
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.village:
		deck=random.randrange(0,MAX_DECK)
		discard=random.randrange(0,MAX_DECK)
		hand=random.randrange(0,MAX_HAND-1)
		game.deck[turn]=[]
		game.discard[turn]=[]
		game.hand[turn]=[]
		for i in range(deck):
			game.deck[turn].append(random.randrange(d.curse,d.mine+1))
		for j in range(discard):
			game.discard[turn].append(random.randrange(d.curse,d.mine+1))
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.village)
		game.numActions=random.randrange(0,99)
		choice1=-1
		choice2=-1
		choice3=-1
		
		d.playCard(pos,choice1,choice2,choice3,game)
	elif play==d.sea_hag:
		hand=random.randrange(0,MAX_HAND-1)
		game.hand[turn]=[]
		for k in range(hand):
			game.hand[turn].append(random.randrange(d.curse,d.mine+1))
		pos=random.randrange(0,hand)
		game.hand[turn].insert(pos,d.sea_hag)
		
		discard1=[]
		deck1=[]
		for i in range(player):
			discard1.append(random.randrange(0,MAX_HAND-1))
		for j in range(player):
			deck1.append(random.randrange(0,MAX_DECK))
		for a in range(player):
			if a!=turn:
				game.discard[a]=[]
				game.deck[a]=[]
				for b in range(discard1[a]):
					game.discard[a].append(random.randrange(d.curse,d.mine+1))
				for c in range(deck1[a]):
					game.deck[a].append(random.randrange(d.curse,d.mine+1))
		choice1=-1
		choice2=-1
		choice3=-1
		d.playCard(pos,choice1,choice2,choice3,game)
示例#14
0
文件: qcheck.py 项目: huangca/work
def test_initialzeGame(x,l,s):
	g=d.initializeGame(x,l,s)
	if len(l)==len(set(l)):
		assert g==-1