Código:
#define T 8
#include <stdio.h>
#include <stdlib.h>
int turno = 0;
char tablero[T][T];
/////////////////////////////////////////Rellena el tablero despues de un movimiento////////////////////////////////////////
int llenarTablero()
{
int i,j,k;
for(i=0;i<T;i++)
for(j=0;j<T;j++)
{
if(i<3&&((i+j)%2==0))
tablero[i][j]='N';
else
if((i>4)&&((i+j)%2==0))
tablero[i][j]='B';
else
tablero[i][j]= ' ' ;
}
}
///////////////////////////////////////Pausa para continuar///////////////////////////////////////////////////////////
void pausar()
{
printf("\nPresione 'c' para continuar...");
while(getchar()!='c');
}
////////////////////////////////Imprime el tablero///////////////////////////////////////////////////////////////////////////
int imprimirTablero()
{
int k,j,i;
system("cls");
for(i=0;i<T;i++)
{
if (i==0)
{
printf(" ");
for(k=0;k<T;k++)
printf(" %d ",k);
printf("\n");
}
printf("%d ",i);
for(j=0;j<T;j++)
{
printf(" %c ",tablero[i][j]);
}
printf("\n");
}
}
/////////////////////////////Valida cada movimiento de pieza/////////////////////////////////////////////////////////////////
int moverPieza(int x, int y, int direccion)
{
if(turno==1)
{
if(tablero[x][y]!='n')
{
printf("No existe pieza negra en la posicion %d %d \n", x, y);
;
}
else
{
printf("Direccion %d \n", direccion);
if(direccion==1&&(y-1)>=0&&(x+1)<8)
{
if(tablero[x+1][y-1]==' ')
{
tablero[x][y] =' ';
tablero[x+1][y-1]= 'n';
}
else
if(tablero[x+1][y-1]=='b'&&tablero[x+2][y-2]==' ')
{
tablero[x][y] = ' ';
tablero[x+1][y-1]= ' ';
tablero[x+2][y-2]= 'n';
printf("La pieza negra se comio la pieza Blanca en %d %d \n", x + 1, y - 1);
}
else
printf("La pieza no puede moverse a una casilla ocupada");
}
else
{
if(direccion==1)
printf("La pieza no puede moverse pues sale del tablero");
}
if(direccion==2&&(y+1)<8&&(x+1)<8)
{
if(tablero[x+1][y+1]==' ')
{
tablero[x][y]=' ';
tablero[x+1][y+1]= 'n';
}
else
if(tablero[x+1][y+1]=='b'&&tablero[x+2][y+2]==' ')
{
tablero[x][y] = ' ';
tablero[x+1][y+1]=' ';
tablero[x+2][y+2]='n';
printf("La pieza negra se comio la pieza Blanca en %d %d \n", x + 1, y + 1);
}
else
printf("La pieza no puede moverse a una casilla ocupada");
}
else
{
if(direccion==2)
printf("La pieza no puede moverse pues sale del tablero");
}
}
turno=0;
}
else
if(turno==0)
{
if(tablero[x][y]!='b')
{
printf("No existe pieza Blanca en la posicion %d %d \n", x, y);
}
else
{
if(direccion==1&&(y-1)>=0&&(x-1)>=0)
{
if(tablero[x-1][y-1]==' ')
{
tablero[x][y]=' ';
tablero[x-1][y-1]='b';
}
else
if(tablero[x-1][y-1]=='n'&&tablero[x-2][y-2]==' ')
{
tablero[x][y]=' ';
tablero[x-1][y-1]=' ';
tablero[x-2][y-2]='b';
printf("La pieza Blanca se comio la pieza negra en %d %d \n", x - 1, y - 1);
}
else
printf("La pieza no puede moverse a una casilla ocupada");
}
else
{
if(direccion==1)
printf("La pieza no puede moverse pues sale del tablero");
}
if(direccion==2&&(y+1)<8&&(x-1)>=0)
{
if(tablero[x-1][y+1]==' ')
{
tablero[x][y] = ' ';
tablero[x-1][y+1]='b';
}
else
if(tablero[x-1][y+1]=='n'&&tablero[x-2][y+2]==' ')
{
tablero[x][y] = ' ';
tablero[x-1][y+1]=' ';
tablero[x-2][y+2]='b';
printf("La pieza Blanca se comio la pieza negra en %d %d \n", x + 1, y + 1);
}
else
printf("La pieza no puede moverse a una casilla ocupada");
}
else
{
if(direccion==2)
printf("La pieza no puede moverse pues sale del tablero");
}
}
turno=1;
}
pausar();
}
//////////////////////////////////////////Se elige la fila y columna a donde se desea realizar el movimiento de la pieza///////////////////////////////////////
int jugar()
{
int x, y, direccion;
imprimirTablero();
if(turno==1)
{
printf("Seleccione la ficha negra que desea mover...\n");
}
else if(turno==0)
{
printf("Seleccione la ficha Blanca que desea mover...\n");
}
printf("\tIntroduzca la fila y columna\n");
scanf("%d %d",&x,&y);
printf("\tElija la direccion del movimiento,\n\tIzquierda [1]\n\tDerecha [2]\n");
scanf("%d",&direccion);
moverPieza(x, y, direccion);
return 1;
}
/////////////////////////////////////Manual que contiene las instrucciones del juego////////////////////////////////////////////////////////////////////
int manual()
{
printf("\tEn este juego parte el jugador con las piezas blancas\n El tablero esta enumerado del 0 al 7,desde arriba hacia abajo y de izquierda a derecha\n\tLas negras estan arriba y las blancas abajo\n\tLuego de cada movimiento para continuar debe presionar [c]\n\tLas coordenadas de la ficha que desea mover debera ser ingresada con un espacio entre cada numero\n");
}
//////////////////////////////////////////////////////MENU/////////////////////////////////////////////////////////////
int main(){
int menu,aux=0;
while(aux!=1)
{
printf("\n\n\n\t**************BIENVENIDO AL JUEGO DE LAS DAMAS EN C************\n\t***** *****\t******** **** **\t*** ***\n\t*** ** ***\t*** ** ** **\t*** ***\n\t*** ** ***\t****** ** ** **\t*** ***\n\t*** ***\t*** ** ** **\t**********\n\t*** ***\t******** ** ****\t**********\n\tpara leer el manual presione [1]\n\tpara comenzar a jugar presione [2]\n\tpara salir presione [0]\n");
scanf("%d",&menu);
if(menu==2)
{
system("cls");
llenarTablero();
while(jugar());
aux=1;
}
else if(menu==0)
{
printf("\t\t******ADIOS******\n\tGRACIAS POR PREFERIR DAMAS EN C\n\n");
aux=1;
system("cls");
return 0;
}
else if(menu==1)
{
manual();
aux=0;
}
else if(menu!=1&&menu!=2&&menu!=0)
aux=0;
}
return 0;
}