Beispiel #1
0
	def callBS(self,hand,num_cards,curr_card,current_card_value,curr_player,numturns,player_trackers):

		#call bs if the cards they say they have plus
		#the number of cards we have of that same vaue
		#is greater than the total number fo that card
		num_cards_deck_match = 0
		num_cards_i_have = 0
		for c in hand.cards:
			if c.name == curr_card:	
				num_cards_i_have += 1
		# if matched in hand + matched in deck + number they claim > 4 call BS
		for c in range(1,14):
			if current_card_value == c:
				num_card_deck_match = player_trackers[self.name].known_cards_deck[c]
		if num_cards + num_cards_i_have + num_card_deck_match > 4*self.numDecks:
			return True
		num_cards_hand = player_trackers[curr_player].num_cards
		# if player plays last card call BS
		if num_cards_hand == 0:
			return True
		# if player caims mre than 4 cards call BS
		if num_cards > 4*self.numDecks:
			return True
		# else calculate probability player has what they claim
		prob_has_card = player_trackers[curr_player].probability_having_cards[current_card_value]
		if prob_has_card == 0.0:
			prob_has_card = Player.getProbabilityMove(num_cards, num_cards_hand, hand, current_card_value)

		#calculates the rate at which other players bluff
		numturns = floor(numturns * ((len(player_trackers) - 1) / len(player_trackers)))
		bs = 0
		for key in player_trackers.keys():
			if key != self.name:
				bs += player_trackers[key].number_BS
		if numturns != 0:
			percenBS = bs / numturns
		else:
			percenBS = 0
		
		#adjust alpha to be higher if bs rate is high, lower if low
		if percenBS < 0.2:
			adjust_alpha = (percenBS - 0.4) / 3.8
		else:
			adjust_alpha = 0
		if prob_has_card < self.alpha + adjust_alpha:
			return True
		else:
			return False
Beispiel #2
0
	def callBS(self,hand,num_cards,curr_card,current_card_value,curr_player,numturns,player_trackers):
		
		num_cards_hand = player_trackers[curr_player].num_cards + num_cards
		# call be if last or second to last card
		if num_cards_hand == 0:
			return True
		if num_cards_hand == 1:
			return True
		# calculate probability that player has what they claim
		prob_has_card = player_trackers[curr_player].probability_having_cards[current_card_value]
		if prob_has_card == 0.0:
			prob_has_card = Player.getProbabilityMove(num_cards, num_cards_hand, hand, current_card_value)
		# if prob < threshold call BS
		if prob_has_card < self.alpha:
			return True
		else:
			return False