Está en la página 1de 3

#include "stdio.

h"
#include "stdlib.h"


char matriz[3] [3]; /*La matriz de tres en raya*/


char comprobar(void);
void inic_matriz(void);
void obt_mov_jugador(void);
void obt_mov_computadora(void);
void mostrar_matriz(void);


void main(void)
{
char hecho;


printf("Este es el juego de tres en raya.\n\n");
printf("Vd. jugara contra la computadora.\n\n");
printf("Vd. es \"X\"\n");


hecho = ' ';


inic_matriz();


do {
mostrar_matriz();
obt_mov_jugador();
hecho=comprobar(); /*Ver si gana*/
if(hecho!=' ') break; /*Ganador*/
obt_mov_computadora();
hecho=comprobar(); /*Ganador*/
} while(hecho==' ');


if(hecho=='X') printf("Ha ganado Vd.!!\n\n");
else printf("Ha ganado la maquina!! You lose!\n");


mostrar_matriz(); /*mostrar las posiciones finales*/
}


/*Inicializar la matriz*/
void inic_matriz(void)
{
int i, j;


for(i=0; i<3; i++)
for(j=0; j<3; j++) matriz [j] = ' ';
}


/*Obtener un movimiento del jugador*/
void obt_mov_jugador(void)
{
int x, y;


printf("Introduzca sus coordenadas de su X Y (ej. 2 3): ");
scanf("%d%d", &x, &y);


x--; y--;


if(matriz[x] [y] != ' ') {
printf("Movimiento invalido, pruebe de nuevo.\n\n");
obt_mov_jugador();
}
else matriz[x] [y] = 'X';
}


/*Obtener un movimiento de la computadora*/
void obt_mov_computadora(void)
{
int i, j;


for(i=0; i<3; i++) {
for(j=0; j<3; j++)
if(matriz [j]==' ') break;
if(matriz [j]==' ') break;
}


if(i*j==9) {
printf ("Tablas.\n");
exit(0);
}
else
matriz [j] = 'O';
}


/*Mostrar la matriz en la pantalla*/


void mostrar_matriz(void)
{
int t;


for(t=0; t<3; t++) {
printf(" %c | %c | %c ", matriz[t] [0],
matriz[t] [1], matriz[t] [2]);
if(t!=2) printf("\n---|---|---\n");
}
printf("\n");
}


/*Ver si hay un ganador*/


char comprobar(void)
{
int i;


for(i=0; i<3; i++) /*Comprobar filas*/
if(matriz [0]==matriz [1] &&
matriz [0] ==matriz [2]) return matriz [0];


for(i=0; i<3; i++) /*Comprobar columnas*/


if(matriz[0] ==matriz[1] &&
matriz[0] ==matriz[2] ) return matriz[0] ;


/*Comprobar diagonales*/


if(matriz[0] [0]==matriz[1] [1] &&
matriz[1] [1]==matriz[2][2])
return matriz[0] [0];


if(matriz[0] [2]==matriz[1] [1] &&
matriz[1] [1]==matriz[2] [0])
return matriz[0] [2];


return ' ';
}