// Prog9 // // Programadores: // // Juan L¢pez Fern ndez // Mois‚s Virumbrales Cuenca // DAI 1§A // // Juego de las tres en raya. #include #include int pos_x,pos_y,jfila,jcolumna; int sw1,sw2,sw3,sw4,sw5,sw6,sw7,sw8,sw9; int con,conaux; int turno,turnoaux; int lugar,tablalugar [3][3]; int ganar; int vaciaf,vaciac; char jugador1[8],jugador2[8]; char continua; int limpia; char fichaX [5][5],ficha0 [5][5]; int win1,win2; void main() { // Inicializaci¢n de funciones. char pintar(int pos_x,int pos_y, int turno, int color); char tablero(); char borrar(int pos_y); int comprobar(int turno); char leerdatos(); char pantalla(char jugador1[8],char jugador2[8]); // Inicializaci¢n de la ficha X. fichaX [0][0]='Û';fichaX [0][4]='Û';fichaX [1][1]='Û';fichaX [1][3]='Û'; fichaX [3][1]='Û';fichaX [3][3]='Û';fichaX [4][0]='Û';fichaX [4][4]='Û'; fichaX [2][2]='Û'; // Inicializaci¢n de la ficha 0. ficha0 [0][2]='Û';ficha0 [1][1]='Û';ficha0 [1][3]='Û';ficha0 [2][0]='Û'; ficha0 [2][4]='Û';ficha0 [3][1]='Û';ficha0 [3][3]='Û';ficha0 [4][2]='Û'; // Introducci¢n de datos leerdatos(); do { // Pantalla general if (continua!='s') { pantalla(jugador1,jugador2); } tablero(); if (turno==1 && continua=='s') { if (ganar==1) { win1++; gotoxy (17,2); printf ("Partidas ganadas: %d",win1); } turno=2; borrar(24); textcolor (7); gotoxy (17,24); cprintf ("Es el turno de "); textcolor(2+BLINK); cprintf ("%s",jugador2); } else { if (turno==2 && continua=='s') { if (ganar==2) { win2++; gotoxy (45,2); printf ("Partidas ganadas: %d",win2); } turno=1; borrar(24); textcolor (7); gotoxy (17,24); cprintf ("Es el turno de "); textcolor(14+BLINK); cprintf ("%s",jugador1); } } // El programa. for (vaciaf=0;vaciaf<3;vaciaf++) { for (vaciac=0;vaciac<3;vaciac++) { tablalugar[vaciaf][vaciac]=0; } } sw1=0;sw2=0;sw3=0;sw4=0;sw5=0;sw6=0;sw7=0;sw8=0;sw9=0; conaux=1; lugar=0; for (con=1,ganar=0;con<=9;con++) { con=conaux; gotoxy (79,25); fflush(stdin); textcolor(0); cscanf("%1d",&lugar); if (lugar==1 && sw1==0) { pos_x=22;pos_y=17; sw1=1; if (turno==1) { tablalugar [0][2]=1; } else { tablalugar [0][2]=2; } } else { if (lugar==2 && sw2==0) { pos_x=38;pos_y=17; sw2=1; if (turno==1) { tablalugar [1][2]=1; } else { tablalugar [1][2]=2; } } else { if (lugar==3 && sw3==0) { pos_x=54;pos_y=17; sw3=1; if (turno==1) { tablalugar [2][2]=1; } else { tablalugar [2][2]=2; } } else { if (lugar==4 && sw4==0) { pos_x=22;pos_y=11; sw4=1; if (turno==1) { tablalugar [0][1]=1; } else { tablalugar [0][1]=2; } } else { if (lugar==5 && sw5==0) { pos_x=38;pos_y=11; sw5=1; if (turno==1) { tablalugar [1][1]=1; } else { tablalugar [1][1]=2; } } else { if (lugar==6 && sw6==0) { pos_x=54;pos_y=11; sw6=1; if (turno==1) { tablalugar [2][1]=1; } else { tablalugar [2][1]=2; } } else { if (lugar==7 && sw7==0) { pos_x=22;pos_y=5; sw7=1; if (turno==1) { tablalugar [0][0]=1; } else { tablalugar [0][0]=2; } } else { if (lugar==8 && sw8==0) { pos_x=38;pos_y=5; sw8=1; if (turno==1) { tablalugar [1][0]=1; } else { tablalugar [1][0]=2; } } else { if (lugar==9 && sw9==0) { pos_x=54;pos_y=5; sw9=1; if (turno==1) { tablalugar [2][0]=1; } else { tablalugar [2][0]=2; } } else { borrar (24); textcolor (7); gotoxy (17,24); cprintf ("Esa casilla est  ocupada, pierde turno."); fflush (stdin); getch(); conaux=con; turnoaux=turno; turno=0; } } } } } } } } } comprobar(turno); // Pintar la ficha correspondiente. if (turno==1 && ganar==0) { pintar(pos_x,pos_y,turno,14); } else { if (turno==2 && ganar==0) { pintar(pos_x,pos_y,turno,2); } } // Siguiente turno. if (turno==2 && con!=9 && ganar==0) { borrar(24); textcolor (7); gotoxy (17,24); cprintf ("Es el turno de "); textcolor(14+BLINK); cprintf ("%s",jugador1); turno=1; conaux++; } else { if (turno==1 && con!=9 && ganar==0) { borrar(24); textcolor (7); gotoxy (17,24); cprintf ("Es el turno de "); textcolor(2+BLINK); cprintf ("%s",jugador2); turno=2; conaux++; } else { if (turnoaux==2 && con!=9 && ganar==0) { borrar(24); textcolor (7); gotoxy (17,24); cprintf ("Es el turno de "); textcolor(14+BLINK); cprintf ("%s",jugador1); turno=1; } else { if (turnoaux==1 && con!=9 && ganar==0) { borrar(24); textcolor (7); gotoxy (17,24); cprintf ("Es el turno de "); textcolor(2+BLINK); cprintf ("%s",jugador2); turno=2; } } } } if (con==9 && ganar==0) { borrar(24); gotoxy (17,24); textcolor(7); cprintf ("Partida finalizada."); fflush(stdin); getch(); } if (ganar==1) { borrar(24); gotoxy (17,24); textcolor (14+BLINK); cprintf ("­­ Ha ganado %s !!",jugador1); con=10; fflush (stdin); getch(); } else { if (ganar==2) { borrar(24); gotoxy (17,24); textcolor (10+BLINK); cprintf ("­­ Ha ganado %s !!",jugador2); con=10; fflush (stdin); getch(); } } } borrar(24); gotoxy (17,24); textcolor(7); cprintf ("¨Desea jugar otra vez? "); fflush(stdin); cscanf ("%s",&continua); } while (continua!='n'); fflush (stdin); getch(); clrscr(); textcolor (7); } // Funci¢n pintar char pintar(int pos_x,int pos_y,int turno,int color) { for (jfila=0;jfila<=4;jfila++) { for (jcolumna=0;jcolumna<=4;jcolumna++) { gotoxy (jcolumna+pos_x,jfila+pos_y); if (turno==1) { if (fichaX[jfila][jcolumna]=='Û') { textcolor (color); cprintf ("%c",fichaX[jfila][jcolumna]); } } else { if (turno==2) { if (ficha0[jfila][jcolumna]=='Û') { textcolor (color); cprintf ("%c",ficha0[jfila][jcolumna]); } } } } } return(0); } // Funci¢n tablero char tablero() { // Fondo tablero. for (pos_x=15,pos_y=4;pos_y<=22;) { textcolor(7); gotoxy(pos_x,pos_y); cprintf("Û"); if (pos_x!=65) { pos_x++; } else { pos_x=15; pos_y++; } } // Recuadro tablero y lineas interior. for (pos_x=15;pos_x<=65;pos_x++) { textcolor (1); gotoxy (pos_x,4);cprintf ("Û"); gotoxy (pos_x,22);cprintf ("Û"); gotoxy (pos_x,10);cprintf ("Û"); gotoxy (pos_x,16);cprintf ("Û"); } for (pos_y=4;pos_y<=22;pos_y++) { textcolor (1); gotoxy (15,pos_y);cprintf ("Û"); gotoxy (16,pos_y);cprintf ("Û"); gotoxy (65,pos_y);cprintf ("Û"); gotoxy (64,pos_y);cprintf ("Û"); gotoxy (32,pos_y);cprintf ("Û"); gotoxy (48,pos_y);cprintf ("Û"); } return(0); } // Borrador de l¡nea char borrar(int pos_y) { for (limpia=1;limpia<=80;limpia++) { gotoxy (limpia,pos_y); textcolor (0); cprintf ("Û"); } return (0); } // Comprobaci¢n de tres en raya int comprobar(int turno) { if (turno!=0) { if (tablalugar[0][0]==turno) { if (tablalugar[1][0]==turno) { if (tablalugar[2][0]==turno) { ganar=turno; pintar(22,5,turno,4+BLINK);pintar(38,5,turno,4+BLINK); pintar(54,5,turno,4+BLINK); } } else { if (tablalugar[1][1]==turno) { if (tablalugar[2][2]==turno) { ganar=turno; pintar(22,5,turno,4+BLINK);pintar(38,11,turno,4+BLINK); pintar(54,17,turno,4+BLINK); } } else { if (tablalugar[0][1]==turno) { if (tablalugar[0][2]==turno) { ganar=turno; pintar(22,5,turno,4+BLINK);pintar(22,11,turno,4+BLINK); pintar(22,17,turno,4+BLINK); } } } } } if (tablalugar[2][0]==turno) { if (tablalugar[2][1]==turno) { if (tablalugar[2][2]==turno) { ganar=turno; pintar(54,5,turno,4+BLINK);pintar(54,11,turno,4+BLINK); pintar(54,17,turno,4+BLINK); } } else { if (tablalugar[1][1]==turno) { if (tablalugar[0][2]==turno) { ganar=turno; pintar(54,5,turno,4+BLINK);pintar(38,11,turno,4+BLINK); pintar(22,17,turno,4+BLINK); } } } } if (tablalugar[2][2]==turno) { if (tablalugar[1][2]==turno) { if (tablalugar[0][2]==turno) { ganar=turno; pintar(22,17,turno,4+BLINK);pintar(38,17,turno,4+BLINK); pintar(54,17,turno,4+BLINK); } } } if (tablalugar[1][0]==turno) { if (tablalugar[1][1]==turno) { if (tablalugar[1][2]==turno) { ganar=turno; pintar(38,5,turno,4+BLINK);pintar(38,11,turno,4+BLINK); pintar(38,17,turno,4+BLINK); } } } if (tablalugar[0][1]==turno) { if (tablalugar[1][1]==turno) { if (tablalugar[2][1]==turno) { ganar=turno; pintar(22,11,turno,4+BLINK);pintar(38,11,turno,4+BLINK); pintar(54,11,turno,4+BLINK); } } } } return(ganar); } // Datos char leerdatos() { clrscr(); textcolor(7); gotoxy (20,11); cprintf ("Nombre jugador 1: "); fflush(stdin); cscanf("%8s",&jugador1); gotoxy (20,13); cprintf ("Nombre jugador 2: "); fflush(stdin); cscanf("%8s",&jugador2); return (jugador1[8],jugador2[8]); } // Pantalla general char pantalla(char jugador1[8],char jugador2[8]) { clrscr(); gotoxy (17,1); textcolor(14); cprintf ("X ");textcolor (7);cprintf ("-> %s",jugador1); gotoxy (53,1); textcolor (2); cprintf ("O ");textcolor (7);cprintf ("-> %s",jugador2); gotoxy (17,24); printf ("Es el turno de "); textcolor(14+BLINK); cprintf ("%s",jugador1); turno=1; return(turno); }