#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "initialisation.h"

int numJoueur;
// TODO bug if input a string

/**
 * \fn int inputYN()
 * \brief fonction de test qui verifie si Y a �t� entr�
 *
 *
 * \return 1 si Y et 0 sinon
 */


int inputYN()
{
    char tmp;
    scanf("%c", &tmp);
    getchar();
    return (tmp == 'y' || tmp == 'Y');
}
/**
 * \fn void presenceJoueur(Joueur* current)
 * \brief fonction qui demandent si le bon joueur et devant l'ecran
 *
 * \param  Joueur* current le joueur courrent
 *
 */
void presenceJoueur(Joueur* current)
{
    while (1)
    {
        printf("\nVeuillez le joueur \"%s\" presenter devant l'ecran!\n",
               current->nom);
        printf("Vous etes le joueur \"%s\"? Y/N ", current->nom);
        if (inputYN())
        system("clear");
            break;
    }
}
/**
 * \fn void MultiSuivant(int i)
 * \brief demande au joueur si il est pret a continuer dans different cas
 *
 * \param  int i si i= 1 joueur suivant  i=2 manche suivante i=3 partie suivante
 *
 */
void MultiSuivant(int i)
{
    while (1)
    {
        if(i==1)
        {
            printf("entrer pour passer au joueur suivant ");
            getchar();
            break;
        }
        if(i==2)
        {
            printf("\nPasser au manche suivant? Y/N ");
            if (inputYN())break;
        }

        if(i==3)
        {
            printf("Passer a la partie suivante? Y/N ");
            if (inputYN())break;
        }

    }
    return;
}

/**
 * \fn void inputPlayersNum()
 * \brief permet de rentre le nombre de joueur
 *
 *
 *
 */

void inputPlayersNum()
{
    printf("Veuillez saisir le nombre de joueurs: ");
    scanf("%d", &numJoueur);
    while (numJoueur > MAX_JOUEURS || numJoueur <= 1)
    {
        printf("Le nombre de joueurs n'est pas valide!");
        printf("recommencez: ");
        scanf("%d", &numJoueur);
        getchar();
    }
    getchar();
}

/**
 * \fn Joueur* saisirJoueur()
 * \brief permet de rentrer le nom des joueur et leur ordre
 *
 * \return Joueur le joueur saisie
 */

Joueur* saisirJoueur()
{
    printf("\n choisissez un nom de joueur.\n");
    printf("Appuyer sur Enter pour finir la saisie.\n");
    Joueur *p,*head;
    int i;
    for (i = 1; i < numJoueur + 1; i++)
    {
        if (i == 1)
        {
            p = (Joueur*) malloc(sizeof(Joueur));
            p->nombreDes=5;// on peut le modifier pour faciliser le test
            head = p;
        }
        else
        {
            p->next = (Joueur*) malloc(sizeof(Joueur));
            p = p->next;
            p->nombreDes=5;
        }
        printf("\n joueur %d: ", i);
        fgets(p->nom, 20, stdin);
        p->nom[strlen(p->nom) - 1] = 0;

    }
    p->next = head;

    system("clear");
    return head;
}

/**
 * \fn int randInt(int max)
 * \brief permet de retourner un entier entre 1 et max
 *
 * \return int entier al�atoire entre 1 et max
 */
int randInt(int max)
{
    return (rand() % max + 1);
}

/**
 * \fn Joueur* getPremierJoueur(Joueur* head)
 * \brief donne le premier joueur
 * \param Joueur* head le debut de la liste de joueur
 * \return Joueur le premier joueur
 */

Joueur* getPremierJoueur(Joueur* head)
{
    int num = randInt(numJoueur) - 1;
    printf("\nOn a choisi par harsard le numero %d comme le permier joueur\n",
           num + 1);
    return getJoueur(head, num);
}
/**
 * \fn Joueur* getJoueur(Joueur* head, int num)
 * \brief donne un premier joueur
 * \param Joueur* head le debut de la liste de joueur, int num le numero du joueur souhait�
 * \return Joueur le joueur souhait�
 */
Joueur* getJoueur(Joueur* head, int num)
{
    Joueur *tmp = head;
    int i;
    for (i = 0; i < num; i++)
        tmp = tmp->next;
    return tmp;
}

/**
 * \fn void distribuerDes(Joueur* p)
 * \brief fais le tirage des des du jouer
 * \param Joueur* p le joueur dont ont tire les des
 *
 */

void distribuerDes(Joueur* p)
{

    int i;
    int j;
    for (i = 0; i < numJoueur; i++)
    {



        for (j = 0; j < 5; j++)
        {
            p->des[j] = randInt(6);
        }
        printf("\n");

        p = p->next;
        system("clear");
    }
    printf("Tous les des sont distribues aux joueurs.\n");
}