Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <memory.h>
- #include <unistd.h>
- #include <string.h>
- #define BUFSIZE 256
- //Check player0 startup position
- //return 1 si OK / 0 if KO
- int verifconfigj0(char plateau)
- {
- int marechal = 0;
- int general= 0;
- int colonel=0;
- int commandant=0;
- int capitaine=0;
- int lieutenant=0;
- int sergent =0;
- int demineur =0;
- int eclaireur=0;
- int espion=0;
- int drapeau=0;
- int bombe=0;
- int other=0;
- int i;
- int j;
- for(i=0; i<4; i++)
- {
- for(j=0; j<10; j++)
- {
- switch (plateau[i][j])
- {
- case 1:
- marechal= marechal+1;
- break;
- case 2:
- general= general+1;
- break;
- case 3:
- colonel=colonel+1;
- break;
- case 4:
- commandant=commandant+1;
- break;
- case 5:
- capitaine=capitaine+1;
- break;
- case 6:
- lieutenant=lieutenant+1;
- break;
- case 7:
- sergent=sergent+1;
- break;
- case 8:
- demineur=demineur+1;
- break;
- case 9:
- eclaireur=eclaireur+1;
- break;
- case 10:
- espion=espion+1
- break;
- case 11:
- drapeau=drapeau+1;
- break;
- case 12:
- bombe=bombe+1;
- default:
- other=other+1;
- break
- }
- }
- }
- if((marechal==1)&&(bombe==6)&&(drapeau==1)&&(general==1)&&(colonel==2)&&(capitaine==4)&&(lieutenant==4)&&(sergent==4)&&(demineur==5)&&(eclaireur==8)&&(espion==1)&&(other==0))
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- //Check player1 startup position
- //return 1 si OK / 0 if KO
- int verifconfigj1(char plateau)
- {
- int marechal = 0;
- int general= 0;
- int colonel=0;
- int commandant=0;
- int capitaine=0;
- int lieutenant=0;
- int sergent =0;
- int demineur =0;
- int eclaireur=0;
- int espion=0;
- int drapeau =0;
- int bombe=0;
- int other=0;
- int i;
- int j;
- for(i=6; i<10; i++)
- {
- for(j=0; j<10; j++)
- {
- switch (plateau[i][j])
- {
- case 1:
- marechal= marechal+1;
- break;
- case 2:
- general= general+1;
- break;
- case 3:
- colonel=colonel+1;
- break;
- case 4:
- commandant=commandant+1;
- break;
- case 5:
- capitaine=capitaine+1;
- break;
- case 6:
- lieutenant=lieutenant+1;
- break;
- case 7:
- sergent=sergent+1;
- break;
- case 8:
- demineur=demineur+1;
- break;
- case 9:
- eclaireur=eclaireur+1;
- break;
- case 10:
- espion=espion+1
- break;
- case 11:
- drapeau=drapeau+1;
- break;
- case 12:
- bombe=bombe+1;
- default:
- other=other+1;
- break
- }
- }
- }
- if((marechal==1)&&(bombe==6)&&(drapeau==1)&&(general==1)&&(colonel==2)&&(capitaine==4)&&(lieutenant==4)&&(sergent==4)&&(demineur==5)&&(eclaireur==8)&&(espion==1)&&(other==0))
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- //function who return a deplacement result in the board from the player input
- //return N / B / E / F
- // return Z if flag found
- char result(char plateau, char deplacement)
- {
- char *piece = strtok(deplacement, " ");
- char *dir = strtok(NULL, " ");
- char *nbdeplacement = strtok(NULL, " ");
- //get column
- char pieceLettre[1];
- strncpy(pieceLettre,piece,1);
- pieceLettre[1] = '\0';
- switch (pieceLettre[0])
- {
- case 'A':
- //get row
- char *pieceChiffre = strtok(piece,"A");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[0][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //get the number of movements
- int nbdep = atoi(nbdeplacement);
- //get the deplacement direction
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //new piece location
- //Code N
- if(plateau[0+(y)][nbChiffre+(x)] == NULL){
- plateau[0+(y)][nbChiffre+(x) == plateau[0][nbChiffre];
- plateau[0][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[0+(y)][nbChiffre+(x)] != NULL){
- plateau[0+(y)][nbChiffre+(x)] = battle(plateau[0][nbChiffre],plateau[0+(y)][nbChiffre+(x)]);
- if(plateau[0+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[0+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[0][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'B':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"B");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[1][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[1+(y)][nbChiffre+(x)] == NULL){
- plateau[1+(y)][nbChiffre+(x) == plateau[1][nbChiffre];
- plateau[1][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[1+(y)][nbChiffre+(x)] != NULL){
- plateau[1+(y)][nbChiffre+(x)] = battle(plateau[1][nbChiffre],plateau[1+(y)][nbChiffre+(x)]);
- if(plateau[1+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[1+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[1][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'C':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"C");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[2][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[2+(y)][nbChiffre+(x)] == NULL){
- plateau[2+(y)][nbChiffre+(x) == plateau[2][nbChiffre];
- plateau[2][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[2+(y)][nbChiffre+(x)] != NULL){
- plateau[2+(y)][nbChiffre+(x)] = battle(plateau[2][nbChiffre],plateau[2+(y)][nbChiffre+(x)]);
- if(plateau[2+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[2+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[2][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'D':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"D");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[3][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[3+(y)][nbChiffre+(x)] == NULL){
- plateau[3+(y)][nbChiffre+(x) == plateau[3][nbChiffre];
- plateau[3][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[3+(y)][nbChiffre+(x)] != NULL){
- plateau[3+(y)][nbChiffre+(x)] = battle(plateau[3][nbChiffre],plateau[3+(y)][nbChiffre+(x)]);
- if(plateau[3+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[3+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[3][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'E':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"E");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[4][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[4+(y)][nbChiffre+(x)] == NULL){
- plateau[4+(y)][nbChiffre+(x) == plateau[4][nbChiffre];
- plateau[4][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[4+(y)][nbChiffre+(x)] != NULL){
- plateau[4+(y)][nbChiffre+(x)] = battle(plateau[4][nbChiffre],plateau[4+(y)][nbChiffre+(x)]);
- if(plateau[4+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[4+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[4][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'F':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"F");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[5][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[5+(y)][nbChiffre+(x)] == NULL){
- plateau[5+(y)][nbChiffre+(x) == plateau[5][nbChiffre];
- plateau[5][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[5+(y)][nbChiffre+(x)] != NULL){
- plateau[5+(y)][nbChiffre+(x)] = battle(plateau[5][nbChiffre],plateau[5+(y)][nbChiffre+(x)]);
- if(plateau[5+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[5+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[5][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'G':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"G");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[6][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[6+(y)][nbChiffre+(x)] == NULL){
- plateau[6+(y)][nbChiffre+(x) == plateau[6][nbChiffre];
- plateau[6][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[6+(y)][nbChiffre+(x)] != NULL){
- plateau[6+(y)][nbChiffre+(x)] = battle(plateau[6][nbChiffre],plateau[6+(y)][nbChiffre+(x)]);
- if(plateau[6+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[6+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[6][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'H':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"H");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[7][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[7+(y)][nbChiffre+(x)] == NULL){
- plateau[7+(y)][nbChiffre+(x) == plateau[7][nbChiffre];
- plateau[7][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[7+(y)][nbChiffre+(x)] != NULL){
- plateau[7+(y)][nbChiffre+(x)] = battle(plateau[7][nbChiffre],plateau[7+(y)][nbChiffre+(x)]);
- if(plateau[7+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[7+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[7][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'I':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"I");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[8][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[8+(y)][nbChiffre+(x)] == NULL){
- plateau[8+(y)][nbChiffre+(x) == plateau[8][nbChiffre];
- plateau[8][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[8+(y)][nbChiffre+(x)] != NULL){
- plateau[8+(y)][nbChiffre+(x)] = battle(plateau[8][nbChiffre],plateau[8+(y)][nbChiffre+(x)]);
- if(plateau[8+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[8+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[8][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- case 'J':
- //determiner quelle chiffre a été envoyé afin de trouver la piece
- char *pieceChiffre = strtok(piece,"J");
- int nbChiffre = atoi(pieceChiffre);
- if(plateau[9][nbChiffre] == NULL)
- {
- return 'E';
- }
- else
- {
- //determine nombre de deplacement
- int nbdep = atoi(nbdeplacement);
- // détermine la direction du déplacement
- switch (dir[0])
- {
- case 'N':
- deplacementpiece
- int x = 0;
- int y = nbdep;
- break;
- case 'S':
- int x = 0;
- int y= -nbdep;
- break;
- case 'E':
- int x = nbdep;
- int y = 0;
- break;
- case 'W':
- int x = -nbdep;
- int y = 0;
- break;
- default:
- return 'E';
- break;
- }
- //resultat de la position future du pion
- //Code N
- if(plateau[9+(y)][nbChiffre+(x)] == NULL){
- plateau[9+(y)][nbChiffre+(x) == plateau[9][nbChiffre];
- plateau[9][nbChiffre] == NULL;
- return 'N';
- }
- //Code B
- if(plateau[9+(y)][nbChiffre+(x)] != NULL){
- plateau[9+(y)][nbChiffre+(x)] = battle(plateau[9][nbChiffre],plateau[9+(y)][nbChiffre+(x)]);
- if(plateau[9+(y)][nbChiffre+(x)]== 'E')
- {
- return 'E'
- }
- if(plateau[9+(y)][nbChiffre+(x)]== 'Z')
- {
- return 'Z'
- }
- plateau[9][nbChiffre] == NULL;
- return 'B';
- }
- }
- break;
- default:
- return 'E';
- break;
- }
- }
- //function to handle battle between players
- char battle(char plateaujAttaquant, char plateaujAttaque)
- {
- char message[BUFSIZE];
- char message1[BUFSIZE];
- //saisi des valeurs
- sprintf(message, "%s\n",plateaujAttaquant);
- sprintf(message1, "%s\n", plateaujAttaque);
- // ouverture du tube pour joueur 0 en écriture
- int fd = open ("p0write", O_WRONLY);
- if(fd!=-1)
- {
- //ecrite le texte dans le tube
- write(fd,message,strlen(message));
- write(fd,message1,strlen(message1));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- // ouverture du tube pour joueur 1 en écriture
- int fd = open ("p1write", O_WRONLY);
- if(fd!=-1)
- {
- //Write to pipe
- //Write to pipe
- write(fd,message,strlen(message));
- write(fd,message1,strlen(message1));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- //cas où le drapeau est trouvé
- if(plateaujAttaque=='11')
- {
- return 'Z';
- }
- //Handle who get the location
- switch (plateaujAttaquant[0])
- {
- case '1':
- if(plateaujAttaque=='12')
- {
- return plateaujAttaque;
- }
- return plateaujAttaquant;
- break;
- case '2':
- if(plateaujAttaque!='1')
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '3':
- if((plateaujAttaque!='1') || (plateaujAttaque!='2'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '4':
- if((plateaujAttaque!='1') || (plateaujAttaque!='2')|| (plateaujAttaque!='3'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '5':
- if((plateaujAttaque!='1') || (plateaujAttaque!='2')|| (plateaujAttaque!='3')|| (plateaujAttaque!='4'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '6':
- if((plateaujAttaque!='1') || (plateaujAttaque!='2')|| (plateaujAttaque!='3')|| (plateaujAttaque!='4')|| (plateaujAttaque!='5'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '7':
- if((plateaujAttaque!='1') || (plateaujAttaque!='2')|| (plateaujAttaque!='3')|| (plateaujAttaque!='4')|| (plateaujAttaque!='5')|| (plateaujAttaque!='6'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '8':
- if(plateaujAttaque!='12') ||(plateaujAttaque!='1') || (plateaujAttaque!='2')|| (plateaujAttaque!='3')|| (plateaujAttaque!='4')|| (plateaujAttaque!='5')|| (plateaujAttaque!='6')|| (plateaujAttaque!='7'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '9':
- if((plateaujAttaque!='1') || (plateaujAttaque!='2')|| (plateaujAttaque!='3')|| (plateaujAttaque!='4')|| (plateaujAttaque!='5')|| (plateaujAttaque!='6')|| (plateaujAttaque!='7')|| (plateaujAttaque!='8'))
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- case '10':
- if(plateaujAttaque==1)
- {
- return plateaujAttaquant;
- }
- return plateaujAttaque;
- break;
- default:
- printf("Impossible move !");
- return 'E';
- break;
- }
- }
- int main (int argc, char * argv[])
- {
- char message[BUFSIZE];
- char plateau[10][10];
- char *deplacement;
- char resultatDeplacement;
- int i;
- int j;
- int n;
- //get player0 input
- sprintf(message, "%d\n",0);
- //send value to p0
- //Opening pipe for p0 with write right
- int fd = open ("p0write", O_WRONLY);
- if(fd!=-1)
- {
- //Write text to pipe
- write(fd,message,strlen(message));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- //get p0 conf
- //opening read only pipe
- fd = open ("p0read", O_RDONLY);
- if(fd!=-1)
- {
- //read loop
- while(n = read(fd,&message,1)>0)
- {
- for(i=0;i<4;i++)
- {
- for(j=0;j<10;j++)
- {
- plateau[i][j]= &message;
- }
- }
- }
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- //Check conf
- int config = verifconfigj0(plateau);
- if (config == 0)
- {
- printf("KO");
- exit(1);
- }
- printf("OK");
- //Enter player value
- sprintf(message, "%d\n",1);
- //Send player value to p1
- //Opening pipe for p1 with write access
- int fd = open ("p1write", O_WRONLY);
- if(fd!=-1)
- {
- //Write to pipe
- write(fd,message,strlen(message));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- //Open pipe for p1 in read only
- fd = open ("p1read", O_RDONLY);
- //read loop
- while(n = read(fd,&message,1)>0)
- {
- for(i=6;i<10;i++)
- {
- for(j=0;j<10;j++)
- {
- plateau[i][j]= &message;
- }
- }
- }
- close(fd);
- //Check conf
- config = verifconfigj1(plateau)
- if(config ==0)
- {
- printf("KO");
- exit(1);
- }
- //infinite loop
- //move j0 piece and show the result
- //move j1 piece and show the result
- while(1)
- {
- //player0
- printf("Player 0\n");
- fd = open ("p0read", O_RDONLY);
- if(fd!=-1)
- {
- //read loop
- while(n = read(fd,&message,1)>0)
- {
- deplacement=&message;
- }
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- resultatDeplacement = result(plateau,deplacement);
- if(resultatDeplacement=='Z')
- {
- printf("Flag !! Player 0 win !");
- exit(0);
- }
- sprintf(message, "%s\n",resultatDeplacement);
- if(resultatDeplacement=='E')
- {
- fd = open ("p0write", O_WRONLY);
- if(fd!=-1)
- {
- //Write text to pipe
- write(fd,message,strlen(message));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- exit(1);
- }
- fd = open ("p0write", O_WRONLY);
- if(fd!=-1)
- {
- //Write text to pipe
- write(fd,message,strlen(message));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- //player1
- printf("Player 1\n");
- fd = open ("p1read", O_RDONLY);
- if(fd!=-1)
- {
- //read loop
- while(n = read(fd,&message,1)>0)
- {
- deplacement=&message;
- }
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- resultatDeplacement = result(plateau,deplacement);
- if(resultatDeplacement=='Z')
- {
- printf("Flag !! Player 1 win !");
- exit(0);
- }
- sprintf(message, "%s\n",resultatDeplacement);
- if(resultatDeplacement=='E')
- {
- fd = open ("j1write", O_WRONLY);
- if(fd!=-1)
- {
- //Write text to pipe
- write(fd,message,strlen(message));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- exit(1);
- }
- fd = open ("j1write", O_WRONLY);
- if(fd!=-1)
- {
- //Write text to pipe
- write(fd,message,strlen(message));
- }
- else
- {
- printf("Pipe no possible");
- }
- close(fd);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement