def gain(p1: Player, p2: Player, printTrace=True):
    """Give gain to each player with their last turn decision

    :param p1: Player 1
    :param p2: Player 2
    :return: None
    """
    if p1.choice[-1] == p2.choice[-1] == "C":
        if printTrace :
            print("Player 1 [+2] || Player 2 [+2]\n")

        p1.set_score(p1.get_score() + 2)
        p2.set_score(p2.get_score() + 2)
    elif p1.choice[-1] == p2.choice[-1] == "B":
        if printTrace :
            print("Player 1 [+0] || Player 2 [+0]\n")

    elif p1.choice[-1] == "C":
        if printTrace :
            print("Player 1 [-1] || Player 2 [+3]\n")

        p1.set_score(p1.get_score() - 1)
        p2.set_score(p2.get_score() + 3)
    else:
        if printTrace :
            print("Player 1 [+3] || Player 2 [-1]\n")

        p1.set_score(p1.get_score() + 3)
        p2.set_score(p2.get_score() - 1)
def fastTurn(player1: Player, player2 : Player, max_turn : int, mistakeRate: int):
    """Play all the turns between two player without printing trace

    :param player1: Player 1
    :param player2: Player 2
    :param max_turn: The number of turn of a confrontation

    :return: None
    """
    n = 0
    while n < max_turn :
        if n == 0:
            player1.play('C', mistakeRate)
            player2.play('C', mistakeRate)
        else :
            player1.play(player2.choice[-1], mistakeRate)
            player2.play(player1.choice[-2], mistakeRate)    
        gain(player1, player2, False)
        n+= 1

    print("Player", player1.name, ":", player1.get_score(), "\nPlayer {} : {}\n".format(player2.name, player2.get_score()))
    # Empty the players' list of choice for next match
    player1.reset()
    player2.reset()