Game Damas inglesas en C

Evaluando propuestas

Publicado: Hace un año Plazo: 1 día Propuestas: 6 Freelancers interesados: 7

Abierto

Descripción:

Crear Damas inglesas en C
Indicaciones:
Imprimir el tablero con fichas al iniciar el juego y después de cada movimiento.

Indicar el turno del jugador

Pedir coordenadas de la ficha a mover, si la ficha no existe en esa coordenada o la coordenada es incorrecta, indicar el error y volver a pedir.

Pedir coordenadas de la nueva posición de la ficha, si la coordenada es incorrecta o esta ocupada, indicar el error y volver a pedir.

Un jugador no puede mover fichas que no sean de su color.

Si el jugador debe comer, no se debe permitir otro movimiento que no sea el comer la ficha. Solo puede comer una ficha por turno.

Las fichas de tipo normal solo avanzan una posición en diagonal hacia adelante.

Las fichas de tipo reyna puede avanzar las posiciones que desee en diagonal hacia adelante o hacia atras, siempre y cuando no haya una ficha en su trayectoria que pueda comer.

Por cada movimiento de ficha que se realize se deberá verificar si existe un ganador y terminar el juego.

#include
#include

struct ficha
{
char color;
int tipo;
int visible;
};
struct tablero
{
struct ficha t[8][8];
char turno;
};

void iniciaTablero(struct tablero * tab);
void imprimeTablero(struct tablero tab);
int checaTablero(struct tablero tab);
int mueveFicha(int ro,int co,int dir, struct tablero *tab);

int main()
{
int ro,co,dir,b,band,c=0;
struct tablero tab;
iniciaTablero(&tab);
// imprimeTablero(tab);

tab.turno='B';
do
{

imprimeTablero(tab);
printf("\nturno es: %c",tab.turno);
printf("\nficha x: ");
scanf("%d",&co);
printf("\nficha y: ");
scanf("%d",&ro);
printf("mover hacia (izq=0/der=1): ");
scanf("%d",&dir);

c=mueveFicha(ro,co,dir,&tab);
if((c%2)==0&&c!=0)
{
tab.turno='B';
}
else
if(c!=0)
{
tab.turno='N';
}

// imprimeTablero(tab);
// printf("***********%d",c);
/*if(c!=0)
{
if(c==1)
{
tab.turno='N';
printf("\nturno es: %c",tab.turno);
}
else
// if(c==2)
{
tab.turno=='B';
printf("\nturno es: %c",tab.turno);
}
}*/

b=checaTablero(tab);

}while(b==0);
return (0);
}

void iniciaTablero(struct tablero *tab)
{
int i,j;
for(i=0;i {
for(j=0;j {
tab->t[i][j].visible=0;
tab->t[i][j].tipo=0;
tab->t[i][j].color='_';
}
}
for(i=0;i {
for(j=0;j {
if((i%2)==0&&(j%2)==0)
{
tab->t[i][j].visible=1;
tab->t[i][j].tipo=1;
tab->t[i][j].color='N';
}
else
if((i%2)!=0&&(j%2)!=0)
{
tab->t[i][j].visible=1;
tab->t[i][j].tipo=1;
tab->t[i][j].color='N';
}
}
}
for(i=7;i>4;i--)
{
for(j=0;j {
if((i%2)==0&&(j%2)==0)
{
tab->t[i][j].visible=1;
tab->t[i][j].tipo=1;
tab->t[i][j].color='B';
}
else
if((i%2)!=0&&(j%2)!=0)
{
tab->t[i][j].visible=1;
tab->t[i][j].tipo=1;
tab->t[i][j].color='B';
}
}
}
return;
}
void imprimeTablero(struct tablero tab)
{
int i, j, k;
for(i=0;i {
if (i==0)
{
printf(" ");
for(k=0;k {
printf("%d",k);
}
}
printf("\n");
printf("%d ",i);
for(j=0;j {
if(tab.t[i][j].visible==1)
{
printf("%c",tab.t[i][j].color);
}
else
{
printf(" ");
}
}
}
}
int checaTablero(struct tablero tab)
{
int i,j,c,b=0;

for(i=0,c=0;i {
for(j=0;j {
if(tab.t[i][j].visible==1&&tab.t[i][j].color=='N')
{
c++;
}
}
}
if(c==0)
{

b=1;
printf("El ganador es Blanco\n");
}
else{
for(i=0,c=0;i {
for(j=0;j {
if(tab.t[i][j].visible==1&&tab.t[i][j].color=='B')
{
c++;
}
}
}
if(c==0)
{

b=1;
printf("El ganador es Negro\n");
}
}
return b;
}
int mueveFicha(int ro,int co,int dir, struct tablero *tab)
{
int b=0;
char c=tab->turno;
if(tab->t[ro][co].color==tab->turno)
{
if(dir==0&&tab->turno=='B')
{
if(tab->t[ro-1][co-1].tipo==0)
{
tab->t[ro-1][co-1].tipo=1;
tab->t[ro-1][co-1].color='B';
tab->t[ro-1][co-1].visible=1;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;
b++;
}
else
if(tab->t[ro-1][co-1].color!=tab->turno)
{
tab->t[ro-2][co-2].tipo=1;
tab->t[ro-2][co-2].color='B';
tab->t[ro-2][co-2].visible=1;
tab->t[ro-1][co-1].tipo=0;
tab->t[ro-1][co-1].color='_';
tab->t[ro-1][co-1].visible=0;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;
b++;
}
}
else
if(dir==1&&tab->turno=='B')
{
if(tab->t[ro-1][co+1].tipo==0)
{
tab->t[ro-1][co+1].tipo=1;
tab->t[ro-1][co+1].color='B';
tab->t[ro-1][co+1].visible=1;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;

b++;
}
else
if(tab->t[ro-1][co+1].color!=tab->turno)
{
tab->t[ro-2][co+2].tipo=1;
tab->t[ro-2][co+2].color='B';
tab->t[ro-2][co+2].visible=1;
tab->t[ro-1][co+1].tipo=0;
tab->t[ro-1][co+1].color='_';
tab->t[ro-1][co+1].visible=0;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;
b++;

}

}

if(dir==0&&tab->turno=='N')
{
if(tab->t[ro+1][co-1].tipo==0)
{
tab->t[ro+1][co-1].tipo=1;
tab->t[ro+1][co-1].color='N';
tab->t[ro+1][co-1].visible=1;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;
b=b+2;

}
else
if(tab->t[ro+1][co-1].color!=tab->turno)
{
tab->t[ro+2][co-2].tipo=1;
tab->t[ro+2][co-2].color='N';
tab->t[ro+2][co-2].visible=1;
tab->t[ro+1][co-1].tipo=0;
tab->t[ro+1][co-1].color='_';
tab->t[ro+1][co-1].visible=0;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;
b=b+2;

}
}
else
if(dir==1&&tab->turno=='N')
{
if(tab->t[ro+1][co+1].tipo==0)
{
tab->t[ro+1][co+1].tipo=1;
tab->t[ro+1][co+1].color='N';
tab->t[ro+1][co+1].visible=1;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;

b=b+2;
}
else
if(tab->t[ro+1][co+1].color!=tab->turno)
{
tab->t[ro+2][co+2].tipo=1;
tab->t[ro+2][co+2].color='N';
tab->t[ro+2][co+2].visible=1;
tab->t[ro+1][co+1].tipo=0;
tab->t[ro+1][co+1].color='_';
tab->t[ro+1][co+1].visible=0;
tab->t[ro][co].tipo=0;
tab->t[ro][co].color='_';
tab->t[ro][co].visible=0;
b=b+2;

}
}
}
else
b=0;

return b;
}

Categoría: IT & Programación
Subcategoría: Desktop Applications
Es un proyecto o una posición?: Un proyecto
Actualmente tengo: Tengo las especificaciones
Experiencia en este tipo de proyectos: No (No he administrado este tipo de proyectos anteriormente)
Disponibilidad requerida: Según se necesite
Integraciones de API: Otros (Otras APIs)
Plataformas requeridas: Windows

Freelancers que ya aplicaron para este trabajo

William Y. Profesional en el área de Informática con amplia experiencia en el diseño, desarrollo, implantación y gestión de proyectos de Tecnologías de Información, orientado al área de ingeniería de software, administración de ... + detalles

Andres C. Ingeniero Electrónico. Especializado en desarrollo de software y electrónica digital. Actualmente trabajando en INVAP SE en el área de Instrumentación y Control realizando desarrollos electrónicos para sistemas de pro... + detalles

Andres F. D. Más de 2 años de experiencia en desarrollo de portales de alto trafico, como www.paginasmarillas.com,www.ciudadguru.com,www.cinesguru.com ‐ Desarrollador de aplicativos para dispositivos móviles, co... + detalles

Juan C. P. Soy Ingeniero en Sistemas Computacionales, enfocado en el desarrollo de sistemas web, que son usados por miles de usuarios. + detalles

María L. G. F. Estudiante de Ingeniería de la Computación en la Universidad Simón Bolívar, responsable y dispuesta hacer mi mejor esfuerzo para ofrecer un producto de calidad. (English) I'm a Computer Engineering student from Sim... + detalles

Crea tu propio proyecto

¿Buscas un freelancer para realizar un proyecto similar? Crea tu propio proyecto y recibirás ofertas de los mejores freelancers.


Otros proyectos de este cliente

Para ver más detalles del cliente

Ingresa a Workana