if ( n == 0) //Joueur human
{
prctl(PR_SET_PDEATHSIG, SIGHUP); //Si le pere meurt, le fils meurt aussi
//Humain lit de pd2, ecrit dans pd1
close(pd2[1]); //Humain ne va pas ecrire dans la pipe pd2, car il ne va ecrire que dans pd1
close(pd1[0]); //Humain ne va pas lire de la pipe pd1, car il ne va lire que de pd2
//Si le joueur humain choisi d'aller en premier, il fait le premier move
if(rep == 'Y' || rep == 'y')
{
drawGrid(grid);
cout << endl << "Veuillez choisir une colonne : ";
cin >> columnChoice;
while (columnChoice > 7 || columnChoice < 1)
{
cout << endl << "Mauvais choix, veuillez choisir la bonne colonne : ";
cin >> columnChoice;
}
play(grid, columnChoice, 'X');
plays++;
drawGrid(grid);
write(pd1[1], &columnChoice, 4); //Ecrire le choix du joueur dans pd2 pour indiquer a l'autre joueur le move
//pour qu'il puisse mettre a jour son tableau
}
while(true)
{
//Lire les moves du CPU pour mettre a jour le tableau du joueur humain
while(read(pd2[0], &columnChoiceOpp, 4))
{
play(grid, columnChoiceOpp, 'O');
plays++;
break;
}
bool CPUWin = winCheck(grid, columnChoiceOpp, 'O'); //Voir si le CPU a gagne
if (CPUWin == true || plays == 42) //break dans le cas ou CPU gagne ou tableau plein
break;
cout << endl << "Veuillez choisir une colonne : ";
cin >> columnChoice;
while (columnChoice > 7 || columnChoice < 1 || grid[columnChoice - 1].size() > 6)
{
cout << endl << "Mauvais choix, veuillez choisir la bonne colonne : ";
cin >> columnChoice;
}
play(grid, columnChoice, 'X');
plays++;
drawGrid(grid);
write(pd1[1], &columnChoice, 4); //Ecrire le choix du joueur dans pd2 pour indiquer a l'autre joueur le move
//pour qu'il puisse mettre a jour son tableau
bool HumanWin = winCheck(grid, columnChoice, 'X');
if (HumanWin == true || plays == 42)
break;
}
}