import socket , sys

# Adresse IP de la machine serveur (ipconfig sur Windows, ifconfig sinon)
HOST = 'XXX.XXX.XXX.XXX'

# Choisir un port entre 49152 et 65535
# Ce sera votre n° de porte d'accès au serveur
PORT=54321


# Creation du connecteur reseau
connecteur_reseau = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# Liaison du connecteur à HOST en passant par PORT
try:
    connecteur_reseau.bind((HOST,PORT))
except socket.error:
    print("La liaison a échoué")
    sys.exit()

# On lance le serveur IA.
while True:
    continuer = True
    vmin = 0
    vmax = 5000
    essais = 0
    print("Joueur IA prêt à deviner ...")
    print("Attente d'un joueur...")
    connecteur_reseau.listen(1)
    connexion , adresse = connecteur_reseau.accept()
    print("Joueur connecté , adresse IP : %s , port: %s" %(adresse[0] , adresse[1] ))
    message_IA= ' Vous êtes connectés sur le serveur de JEU-IA ...\n'

    while continuer:
        proposition = ( vmin + vmax )//2
        essais = essais + 1
        print('envoi de la proposition ')
        message_IA="    IA    --->  {}".format(proposition)
        connexion.send(message_IA.encode(encoding='UTF-8'))
        reponse = connexion.recv(1024).decode('UTF-8')
        if reponse =="+":
            vmin = proposition
        elif reponse == '-':
            vmax = proposition
        elif reponse == '0':
            continuer = False
            print('Le nombre était {}, trouvé en {} coups.'.format(proposition,essais))
        else:
            print("Je ne comprends pas votre réponse  :  -  0  + " )
            essais = essais - 1
            if essais < 0 :
                essais = 0


    connexion.send("FIN".encode('UTF-8'))
    print('Connexion interrompue....')
    message_IA = 'Le nombre était {}, trouvé en {} coups.'.format(proposition,essais)
    connexion.send(message_IA.encode(encoding='UTF-8'))
    connexion.close()

    ch= input('<R>ecommencer ou <T>erminer  ? ')
    if ch.upper() == 'T':
        print('Serveur déconnecté...')
        break