/////////////////////////////////TRES EN RALLA//////////////////////////////// #include #include #include #include #include extern unsigned _stklen = 4096; ///////////////////////////DECLARACION DE FUNCIONES/////////////////////////// void jugador1(int array[3][3]); void jugador2(int array[3][3]); void ordenador(int array[3][3],char opcion); void dibujamalla(); int comprobacion(int array[3][3]); char menu(); //////////////////////////////FUNCION PRINCIPAL/////////////////////////////// void main() { char opcion; int array[3][3]; int x,y,a=0,c=0; int gdriver=DETECT,gmode; initgraph(&gdriver,&gmode,"c:\\program\\borlandc\\bgi"); clearviewport(); //INICIALIZACION DE ARRAY for(x=0;x<3;x++) for(y=0;y<3;y++) array[x][y]=0; ////////////////////////////////JUEGO PRINCIPAL/////////////////////////////// opcion=menu(); dibujamalla(); while(a==0&&c<5) { if(opcion=='1') { jugador1(array); if(c!=4) jugador2(array); a=comprobacion(array); c++; } else { jugador1(array); if(c!=4) ordenador(array,opcion); a=comprobacion(array); c++; } } ///////////////////////////////RESULTADO FINAL//////////////////////////////// setcolor(2); if(a==0) outtextxy(310,400,"EMPATAMOS"); if(a==1) outtextxy(270,400,"GANAS TU:MATI WOMAN"); if(a==2) outtextxy(270,400,"GANO YO:OSCAR COMPUTER"); getch(); closegraph(); } ////////////////////////////////////MENU////////////////////////////////////// char menu() { char o='0'; outtextxy(230,230,"1.-DOS JUGADORES"); outtextxy(230,250,"2.-CONTRA EL ORDENADOR"); while(o!='1'&&o!='2') { o=getch(); } clearviewport(); if(o=='2') { o='0'; outtextxy(230,230,"1.-NIVEL APLATANADO"); outtextxy(230,250,"2.-NIVEL ENCABRONAO"); while(o!='1'&&o!='2') { o=getch(); } if(o=='1') o='3'; else o='4'; } clearviewport(); return o; } //////////////////////COMPROBACION DEL TRES EN RALLA////////////////////////// int comprobacion(int array[3][3]) { int x,y,w=0,suma=0,suma1=0,suma2=0,suma3=0; //////////////////LECTURA DEL ARRAY HORIZONTAL Y VERTICAL///////////////////// for(x=0;x<3;x++) { for(y=0;y<3;y++) { if(array[x][y]==1) suma++; if(array[x][y]==2) suma1++; if(array[y][x]==1) suma2++; if(array[y][x]==2) suma3++; } if(suma==3||suma2==3) w=1; if(suma1==3||suma3==3) w=2; suma=0;suma1=0;suma2=0;suma3=0; } //////////////////////LECTURA DEL ARRAY DIAGONAL////////////////////////////// suma=0;suma1=0;suma2=0;suma3=0; for(x=0;x<3;x++) { if(array[x][x]==1) suma++; if(array[x][x]==2) suma1++; if(array[2-x][x]==1) suma2++; if(array[2-x][x]==2) suma3++; } if(suma==3||suma2==3) w=1; if(suma1==3||suma3==3) w=2; ////////////////VALOR DEVUELTO DEL ANALISIS DEL ARRAY///////////////////////// return w; } ////////////////////////////////DIBUJA MALLA////////////////////////////////// void dibujamalla() { int x,y; setcolor(15); for(x=300;x<400;x+=30) { y=150; line(x,y,x,y+200); line(y+100,x-100,y+290,x-100); } } /////////////////////////////////JUGADOR1///////////////////////////////////// void jugador1(int array[3][3]) { int a,b; //JUEGAS TU outtextxy(1,1,"Introduce coordenada[x,y]:"); gotoxy(27,1); scanf("%i,%i",&a,&b); gotoxy(27,1); printf(" "); while(a<1||a>3||b<1||b>3||array[a-1][b-1]!=0) { outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)"); getch(); setcolor(0); outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)"); gotoxy(27,1); scanf("%i,%i",&a,&b); gotoxy(27,1); printf(" "); } array[a-1][b-1]=1; setcolor(5); circle(315+((a-1)*30),215+((b-1)*30),10); } /////////////////////////////////JUGADOR2///////////////////////////////////// void jugador2(int array[3][3]) { int a,b; //JUEGAS TU outtextxy(1,1,"Introduce coordenada[x,y]:"); gotoxy(27,1); scanf("%i,%i",&a,&b); gotoxy(27,1); printf(" "); while(a<1||a>3||b<1||b>3||array[a-1][b-1]!=0) { outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)"); getch(); setcolor(0); outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)"); gotoxy(27,1); scanf("%i,%i",&a,&b); gotoxy(27,1); printf(" "); } array[a-1][b-1]=2; setcolor(3); circle(315+((a-1)*30),215+((b-1)*30),10); } /////////////////////////////////ORDENADOR///////////////////////////////////// void ordenador(int array[3][3],char opcion) { int a,b,x=-1,y=-1,r=-1,caso[4]={0,0,0,0},fin=0; int suma=0,suma1=0,suma2=0,suma3=0; //JUEGA EL ORDENADOR if(opcion=='3') //LECTURA DEL ARRAY { for(a=0;a<3;a++) { for(b=0;b<3;b++) { if(array[a][b]==1) suma++;//VERTICAL if(suma==2) {caso[0]=1;r=a;} if(array[b][a]==1) suma1++;//HORIZONTAL if(suma1==2) {caso[1]=1;r=a;} } if(array[a][a]==1) suma2++;//DIAGONAL if(suma2==2) caso[2]=1; if(array[2-a][a]==1) suma3++;//DIAGONAL INVERSA if(suma3==2) caso[3]=1; if(suma!=3&&suma1!=3&&suma2!=3&&suma3!=3) {suma=0;suma1=0;} else fin=1; } if(caso[0]==1) { for(a=0;a<3;a++) if(array[r][a]==0) {y=a;x=r;} } if(caso[1]==1&&(x==-1||y==-1)) { for(a=0;a<3;a++) if(array[a][r]==0) {x=a;y=r;} } if(caso[2]==1&&(x==-1||y==-1)) { for(a=0;a<3;a++) if(array[a][a]==0) {x=a;y=x;} } if(caso[3]==1&&(x==-1||y==-1)) { for(a=0;a<3;a++) if(array[2-a][a]==0) {y=a;x=2-y;} } } if(x==-1||y==-1) { for(a=0;a<3;a++) for(b=0;b<3;b++) if(array[a][b]==0) {x=a;y=b;} } //da valores if(fin!=1||(x==-1)&&(y==-1)) { array[x][y]=2; setcolor(3); circle(315+(x*30),215+(y*30),10); } }