예제 #1
0
    def test_init_round(self):
        table = Table()

        round_number = 4
        count_of_honba_sticks = 2
        count_of_riichi_sticks = 3
        dora_indicator = 126
        dealer = 3
        scores = [250, 250, 250, 250]

        table.init_round(round_number, count_of_honba_sticks, count_of_riichi_sticks, dora_indicator, dealer, scores)

        self.assertEqual(table.round_number, round_number)
        self.assertEqual(table.count_of_honba_sticks, count_of_honba_sticks)
        self.assertEqual(table.count_of_riichi_sticks, count_of_riichi_sticks)
        self.assertEqual(table.dora_indicators[0], dora_indicator)
        self.assertEqual(table.get_player(dealer).is_dealer, True)
        self.assertEqual(table.get_player(dealer).scores, 25000)

        dealer = 2
        table.get_main_player().in_tempai = True
        table.get_main_player().in_riichi = True
        table.init_round(round_number, count_of_honba_sticks, count_of_riichi_sticks, dora_indicator, dealer, scores)

        # test that we reinit round properly
        self.assertEqual(table.get_player(3).is_dealer, False)
        self.assertEqual(table.get_main_player().in_tempai, False)
        self.assertEqual(table.get_main_player().in_riichi, False)
        self.assertEqual(table.get_player(dealer).is_dealer, True)
예제 #2
0
    def test_calculate_safe_tiles_to_discard(self):
        table = Table()
        table.get_main_player().init_hand([3, 5, 6, 7, 8])
        defence = Defence(table)

        table.players[1].in_riichi = True
        table.players[1].add_discarded_tile(2)

        tile = defence.calculate_safe_tile_against_riichi()

        # 0, 1, 2, 3 - is a same tile
        self.assertEqual(tile, 3)
예제 #3
0
class Client(object):
    statistics = None
    id = ''
    position = 0

    def __init__(self, use_previous_ai_version=False):
        self.table = Table(use_previous_ai_version)
        self.statistics = Statistics()
        self.player = self.table.get_main_player()

        self.id = make_random_letters_and_digit_string()

    def authenticate(self):
        pass

    def start_game(self):
        pass

    def end_game(self):
        pass

    def init_hand(self, tiles):
        self.player.init_hand(tiles)

    def draw_tile(self, tile):
        self.table.count_of_remaining_tiles -= 1
        self.player.draw_tile(tile)

    def discard_tile(self):
        return self.player.discard_tile()

    def call_meld(self, meld):
        # when opponent called meld it is means
        # that he will not get the tile from the wall
        # so, we need to compensate "-" from enemy discard method
        self.table.count_of_remaining_tiles += 1

        return self.table.get_player(meld.who).add_meld(meld)

    def enemy_discard(self, player_seat, tile):
        self.table.get_player(player_seat).add_discarded_tile(tile)
        self.table.count_of_remaining_tiles -= 1

        for player in self.table.players:
            if player.in_riichi:
                player.safe_tiles.append(tile)

    def enemy_riichi(self, player_seat):
        self.table.get_player(player_seat).in_riichi = True
예제 #4
0
    def test_init_hand(self):
        table = Table()
        tiles = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
        table.init_main_player_hand(tiles)

        self.assertEqual(len(table.get_main_player().tiles), 13)