Juego de tres en raya

Eduardo Fernández González

/*El clásico juego del tres en raya para dos jugadores, solo que en vez de usar los tradicionales X y O se usan los números 1 y 2 en función del jugador en cuestión. El tablero al iniciar es una matriz de 0 que se van sustituyendo por unos o doses a lo largo del juego dependiendo del jugador que marque esa casilla.*/

#include<iostream>
using namespace std;

void escribir_matriz(int A[3][3]);
int ganador1(int A[3][3]);
int ganador2(int A[3][3]);

int main()
{ 
 int i,j;
 int A[3][3];
 int fila, columna;
 int juego_nuevo=0;
 int error=0;
 int movimientos=0;

for(i=0;i<3;i++)
 {
 for(j=0;j<3;j++)
 {
 A[i][j]=0;
 }
 }

 do{
 if(juego_nuevo==1){cout <<endl <<endl;}
 cout <<"COMIENZA EL JUEGO" <<endl <<endl;

 do{
 do{
 escribir_matriz(A);
 cout <<endl;
 cout <<"Jugador 1, dame la fila y columna de la casilla que quieres marcar: ";
 cin >>fila >>columna;
 if(A[fila-1][columna-1]!=0)
 {
 error=1;
 cout <<endl <<"ERROR!!! Elige una casilla sin marcar" <<endl <<endl;
 }
 else{
 A[fila-1][columna-1]=1;
 error=0;
 movimientos=movimientos+1;}
}while(error==1);

if(ganador1(A)!=1){
 do{
 cout <<endl <<endl;
 escribir_matriz(A);
 cout <<endl;
 cout <<"Jugador 2, dame la fila y columna de la casilla que quieres marcar: ";
 cin >>fila >>columna;
 if(A[fila-1][columna-1]!=0)
 {
 error=1;
 cout <<endl <<"ERROR!!! Elige una casilla sin marcar";
 }
 else{
 A[fila-1][columna-1]=2;
 error=0;
 cout <<endl <<endl;}
}while(error==1);}
}while((ganador1(A)!=1)&&(ganador2(A)!=1)&&(movimientos<=5));

 if(ganador1(A)==1){
 cout <<endl <<"EL JUGADOR 1 HA GANADO!!" <<endl;
 escribir_matriz(A);}
 else{
 if(ganador2(A)==1){
 cout <<endl <<"EL JUGADOR 2 HA GANADO!!" <<endl;
 escribir_matriz(A);}
else
 {
 cout <<endl <<"HABEIS EMPATADO!";
 }}

 cout <<endl <<endl <<"Quereis jugar otra vez?(Si=1 No=0): ";
 cin >>juego_nuevo;
}while(juego_nuevo==1);

return 0;
}

int ganador1(int A[3][3])
{
 if(((A[0][0]==1)&&(A[0][1]==1)&&(A[0][2]==1))||((A[1][0]==1)&&(A[1][1]==1)
      &&(A[1][2]==1))||((A[2][0]==1)&&(A[2][1]==1)&&(A[2][2]==1)))
   return 1;
 else if(((A[0][0]==1)&&(A[1][0]==1)&&(A[2][0]==1))||((A[0][1]==1)&&(A[1][1]==1)
      &&(A[2][1]==1))||((A[0][2]==1)&&(A[1][2]==1)&&(A[2][2]==1)))
  return 1;
 else if(((A[0][0]==1)&&(A[1][1]==1)&&(A[2][2]==1))||((A[0][2]==1)
      &&(A[1][1]==1)&&(A[2][0]==1)))
  return 1;
 else return 0;
}

int ganador2(int A[3][3])
{
 if(((A[0][0]==2)&&(A[0][1]==2)&&(A[0][2]==2))||((A[1][0]==2)&&(A[1][1]==2)
       &&(A[1][2]==2))||((A[2][0]==2)&&(A[2][1]==2)&&(A[2][2]==2)))
  return 1;
 else if(((A[0][0]==2)&&(A[1][0]==2)&&(A[2][0]==2))||((A[0][1]==2)&&(A[1][1]==2)
       &&(A[2][1]==2))||((A[0][2]==2)&&(A[1][2]==2)&&(A[2][2]==2)))
  return 1;
 else if(((A[0][0]==2)&&(A[1][1]==2)&&(A[2][2]==2))||((A[0][2]==2)&&(A[1][1]==2)
       &&(A[2][0]==2)))
  return 1;
 else return 0;
}

void escribir_matriz(int A[3][3])
{ 
 int i, j;
 for(i=0;i<3;i++)
 {
 for(j=0;j<3;j++)
 {
 cout <<A[i][j] <<" ";
 }
 cout <<endl;
 }
}
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s