def generate(id=None, phase=1): """ :param id: The seed used for random generation. Defaults at random, but can be set for deterministic state generation :param phase: The phase at which your generated state starts at :return: A starting state generated using the parameters given """ rng = random.Random(id) deck = Deck.generate(id) player1s_turn = rng.choice([True, False]) state = State(deck, player1s_turn) if phase == 2: while state.__phase == 1: if state.finished(): return State.generate(id if id is None else id+1, phase) # Father forgive me state = state.next(rng.choice(state.moves())) total_score = state.__p1_points + state.__p2_points state.__set_points(1, int(total_score/2)) state.__p1_pending_points = 0 state.__set_points(2, int(total_score/2)) state.__p2_pending_points = 0 return state
def test_generate(self): d = Deck.generate(0) stock = d.get_card_states().count("S") self.assertEqual(stock, 10, "The value should be 10") player1 = d.get_card_states().count("P1H") self.assertEqual(player1, 5, "The value should be 5") player2 = d.get_card_states().count("P2H") self.assertEqual(player2, 5, "The value should be 5")
def test_trump_exchange(self): d = Deck.generate(0) print d.get_trump_suit() print d.get_card_states() if d.can_exchange(1): print "1 exchanged" d.exchange_trump() print d.get_card_states() elif d.can_exchange(2): print "2 exchanged" d.exchange_trump() print d.get_card_states() else: print "no one exchanged"
def test_clone(self): deck = Deck.generate(0) state = State(deck,True) clone = state.clone() self.assertEqual(state.finished(), clone.finished()) self.assertEqual(state.revoked(), clone.revoked()) self.assertEqual(state.winner(), clone.winner()) current_deck = state.get_deck() clone_deck = clone.get_deck() self.assertEqual(current_deck.get_card_states(), clone_deck.get_card_states()) pass
def generate(id=None, phase=1): """ :param id: The seed used for random generation. Defaults at random, but can be set for deterministic state generation :param phase: The phase at which your generated state starts at :return: A starting state generated using the parameters given """ if id is None: id = random.randint(0, 100000) rng = random.Random(id) deck = Deck.generate(id) player1s_turn = rng.choice([True, False]) state = State(deck, player1s_turn) if phase == 2: while state.__phase == 1: if state.finished(): return State.generate(id + 1, phase) # Father forgive me state = state.next(rng.choice(state.moves())) return state