#include #include #include #include #include "Tabla.h" struct Tabla *tab; struct Tabla tabel; void afis_tabla(struct Tabla * tb){ int p,q=0; for(p=0;p<3;p++) for(q=0;q<3;q++){ if(q==2) printf("%d\n",tb->t[p][q]); else printf("%d ",tb->t[p][q]); } }; int castigatorpl1(struct Tabla* tb){ int i=0; for( i=0;i<3;i++) { if((tb->t[0][i]==1)&&(tb->t[1][i]==1)&&(tb->t[2][i]==1)) return 1; } //verific liniile for (i=0;i<3;i++) { if ((tb->t[i][0]==1)&&(tb->t[i][1]==1)&&(tb->t[i][2]==1)) return 1; } //verific diagonalele if ((tb->t[0][0]==1)&&(tb->t[1][1]==1)&&(tb->t[2][2]==1)) return 1; if ((tb->t[0][2]==1)&&(tb->t[1][1]==1)&&(tb->t[2][0]==1)) return 1; return 0; } int castigatorpl2(struct Tabla *tb){ //verific coloanele int i=0; for (i=0;i<3;i++) { if ((tb->t[0][i]==2)&&(tb->t[1][i]==2)&&(tb->t[2][i]==2)) return 1; } //verific liniile for (i=0;i<3;i++) { if ((tb->t[i][0]==2)&&(tb->t[i][1]==2)&&(tb->t[i][2]==2)) return 1; } //verific diagonalele if ((tb->t[0][0]==2)&&(tb->t[1][1]==2)&&(tb->t[2][2]==2)) return 1; if ((tb->t[0][2]==2)&&(tb->t[1][1]==2)&&(tb->t[2][0]==2)) return 1; return 0; } void prelucreaza(struct Tabla *tb,int x,int y,int val){ if (tb->nrprel==9){ printf("%s","Remiza!!!!!!!!!!!!!"); exit(4); }; if ((tb->t[x][y]==1)||(tb->t[x][y]==2)) printf("Ocupat scrie alte coordonate\n"); else tb->t[x][y]=val; if (castigatorpl1(tb)) { printf("%s","A castigat jucatorul 1!!!\n"); exit(1); } if (castigatorpl2(tb)) { printf("%s","A castigat jucatorul 2!!!\n"); exit(1); } } int main(){ key_t key = 531982; int id ; int x,y=0; id=shmget(key,0,0600); if (id<0){ printf("Eroare la crearea segment\n"); exit(1); } tab =(struct Tabla*)shmat(id,0,0); if (tab==NULL){ printf("Eroare la atasharea segmentului de memorie\n"); exit(2); } if (tab->instante==2){ fprintf(stderr,"Nu mai sunt posibile instantieri!!!\n"); exit(3); } if (tab->instante==0){ tab->instante=1; } else{ if (tab->instante==1){ tab->instante=2; } }; while (1){ afis_tabla(tab); printf("%s","Dati coordonatele jucatorului :\n"); scanf("%d%d",&x,&y); prelucreaza(tab,x,y,2); } }