Estoy en la recreación de un juego el cual se llama "cool balls" el cual evidentemente no es igual pero es similar, el punto es que inserte unas condiciones para recorrer las letras,al intentar recorrerlas hacia la izquierda o hacia arriba no hay problema pero al intentarlo hacia la derecha o hacia abajo borra parte del tablero... básicamente tienen la misma instrucción excepto por el signo que es lo único que cambia.
a continuación mi juego:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char A[8][8],letra,direccion,CO;
int C=1,X,Y,T=0;
/*Logo*/
printf(" .. ..::::i,. . . .. \n ... ..... \n. . .:ir77v77rv7v7LvLL7:. . . \n. . ::ir7rriri;i;i;irrYYvi: . \n. . . .r:r7riiiiiiiiiiiiiiir727i . \n 7:7i::::::i:iii:i:::i:;rjr: . \n i,7:::77Lv7;i,:,,,rYL777Y7YL: \n ,ii:rSZ0BBYi8SFYj1M8:,iri:r75i. \n ::ijBMqB5 vM1B0JLYY2Jr:ii7UY. \n i,LS;JN: i iG1F: ::::ii777rLL. \n i:Y2 vi i:kquXFrLi;L:iirr7YY. \n ,:ikP5O8MZqZEP2O7:rJFULL7:;vki \n ::7U8EZNGZGkJFGXXX7,:iri7752. \n :;ri7vjJYr:.::::::i:iir7UX: \n :rJi:::,::i:::i:ii;r7YSU, \n .:YJL;;iriii;ir;77u1kr \n .iv2UuLLvYLJY25XUr \n :rYYUYuuYri. \n .::77r:. .Lu ..... .:U5:,7E7 \n rvFMBBBBM, 7BBj ,NNPNN0G: :uXBPijBB \n:.LGBXYLuXN .i7YYr. :rY7i iZBL 7XGBEYLMB .ir7r:r,;ruB0:7BB..:rr7i \nL.ZO1. iYZBOMBO:.,vOBMBBG:::EML ;k12ii7BG i1MBMX2BB:;LB1:rBMiiNBONB7\nY.MO7. :rMM7::YMG77GM7,:YMZ7iXBv rSJ1ESUUYrrYOB7irJEBiiYB5,7BB.J00rLP \nL.8OU:... r7Mq.,i:EMirM0..::ZZY;PMY rFqBr2iLFB.1MM ::JqBirYB5:rBO.:u1kLU,\n. LOBk25S0Z77ZBUY7XBNirZB2Y7PBkr78Bu LPFu:7rjBB:JqUrvLUGBr7jBN:YBB.7vYirBB\n :7FMBBBBq,,ikBBBB5 :kBBBBj :BBi ,MBBBBBBM .SBBBBPBB 7BB7:ZBq:0BBBBB.\nCargando...");
/*efecto de tiempo
do
{
T=T+1;
}while(T<=1990000000);*/
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nInstruccio nes:\n\nEl objetivo es comerse todas las letras con un numero limite de movimientos \nhasta que quede una sola en el tablero \n1:Elige una letra del tablero \n2:Con las tecla w, a, s, d elige la direccion de movimimento \n3:No hay movimentos en diagonal\n\n\nPresiona enter para empezar");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
system("pause>nul");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
/* llena la tabla de puntos*/
for(X=0;X<=7;X++)
{
for(Y=0;Y<=7;Y++)
{
A[X][Y]='.';
}
}
/*¨nivel 1*/
/* asignar de la a a la m */
A[0][1]='a';
A[1][2]='b';
A[2][3]='c';
A[3][4]='d';
A[4][5]='e';
A[5][6]='f';
A[6][6]='g';
A[6][5]='h';
A[5][4]='i';
A[4][3]='j';
A[3][2]='k';
A[2][1]='l';
A[1][0]='m';
do
{
for(X=0;X<=7;X++)
{
for(Y=0;Y<=7;Y++)
{
printf("%c ",A[X][Y]);
}
printf("\n\n\n");
}
printf("Elige la letra:");
scanf("%c",&letra);
fflush(stdin);
printf("Elige la direccion(w,a,s,d)");
scanf("%c",& direccion);
fflush(stdin);
for(X=0;X<=7;X++)
{
for(Y=0;Y<=7;Y++)
{
if(A[X][Y]==letra)
{
/*las dos condiciones siguientes tienen un comprtamiento extraño, borran gran parte de la matriz o en dado caso lanza errores*/
if (direccion=='s')
{
A[X][Y]='.';
A[X+1][Y]='.';
A[X+2][Y]=letra;
}
if(direccion=='d')
{
A[X][Y]='.';
A[X][Y+1]='.';
A[X][Y+2]=letra;
}
/*las dos condiciones siguientes hacen lo que quiero y son basicamente la misma instruccion*/
if(direccion=='w')
{
A[X][Y]='.';
A[X-1][Y]='.';
A[X-2][Y]=letra;
}
if(direccion=='a')
{
A[X][Y]='.';
A[X][Y-1]='.';
A[X][Y-2]=letra;
}
}
}
}
printf("\n\n\n\n\n\n\n\n");
C=C+1;
}while(C!=13);
el programa continua pero no tiene relevancia.
de antemano gracias.