human process

 avatar
unknown
c_cpp
3 years ago
2.7 kB
2
Indexable
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;
            }

        }