import File
import random
   
VAL_CARTE = ['1','2','3','4','5','6','7','8','9','10','V','D','R','AS']
COL_CARTE = ['P','T','C','H']

def in_file(x,f):
    """
    Fonction qui revoie True si x est dans la file f
    param x (): element present ou non dans f
    param f (File1/File2) : File contenant ou non x
    return (bool) : Renvoie True si x est dans f, False sinon
    """
    if type(f) == File1 :
        if x in f.file :
            return True
        else :
            return False
    elif type(f) == File2 :
        if f.tete == x :
            return True
        elif f.queue != None :
            return in_file(x,f.queue)
        else :
            return False
    else :
        return False
        
def comp(c1,c2) :
    """
    Fonction de comparaison entre deux cartes
    param c1 : (tuple) Carte 1
    param c2 : (tuple) Carte 2
    return : Renvoie
                    -1 si => c1 < c2
                    1  si => c1 > <2
                    0  si => c1 == c2
    
    """
    if VAL_CARTE.index(c1[0]) < VAL_CARTE.index(c2[0]) :
        return -1
    elif VAL_CARTE.index(c1[0]) > VAL_CARTE.index(c2[0]) :
        return 1
    else :
        return 0
                    
def creer_jeu():
    """
    Fonction qui crée un jeu aléatoire
    return a,b (File) Deux files contenant 26 cartes chacunes
    """
    i = 0
    val_carte = ['1','2','3','4','5','6','7','8','9','10','V','D','R','AS']
    col_carte = ['P','T','C','H']
    f1 = File1()
    f2 = File1()
    while i < 52 :
        val = random.randint(0,len(val_carte)-1)
        col = random.randint(0,len(col_carte)-1)
        carte = (val_carte[val],col_carte[col])
        if in_file(carte,f1) == False or in_file(carte,f2) == False  :
            if i%2 == 0 :
                f1.enfile(carte)
            else :
                f2.enfile(carte)
            i+=1
    return f1,f2
            
def tour(f1,f2) :
    """
    Foncton qui simule un tour de bataille
    param f1: (File) File contenant le jeu n°1
    param f2: (File) File contenant le jeu n°2
    """
    i = f1.defile()
    j = f2.defile()
    res = comp(i,j)
    if # A compléter
    elif # A compléter 
    else :
        print('bataille')
        if # A compléter :
            bataille(i,j,f1,f2)
        else :
            # Si un des deux paquet ne peut pas faire la bataille alors on le vide pour faire gagner l'autre joueur
            if # A compléter  :
                # A compléter 
            else :
                # A compléter 
            
def bataille(c1,c2,f1,f2) :
    """
    Fonction simulant un tour de bataille
    param c1 : (tuple) Carte n°1 égale a c2
    param c2 : (tuple) Carte n°1 égale a c1
    param f1: (File) File contenant le jeu n°1
    param f2: (File) File contenant le jeu n°2    
    """
    bataille_tab= []
    while comp(c1,c2) == 0:
        # A compléter 
    if comp(c1,c2) == 1 :
        # A compléter 
    if comp(c1,c2) == -1 :
        # A compléter 
        
        
        
def est_fini(f1,f2):
    """
    Fonction qui détermine si le jeu est fini
    param f1: (File) File contenant le jeu n°1
    param f2: (File) File contenant le jeu n°2
    return (bool): renvoie True si le jeu est fini, False sinon.
    """
    if # A compléter 
    elif # A compléter 
    else :
        # A compléter 
    

def game(f1,f2):
    """
    Fonction simulant le jeu de la bataille
    param f1: (File) File contenant le jeu n°1
    param f2: (File) File contenant le jeu n°2
    """
    while not est_fini(f1,f2) :
        tour(f1,f2)