Lo hiciste bien rapido y veo que ya tienes suficiente soltura con los bidimensionales, pero bueno ahora toca retocar... ;)
Este code por ejemplo, no me gusta ese if que hiciste...
Código: Seleccionar todo
for (j = 0; j < 20; j++)
{
if ((i == x) && (j == y))
{
printf("%i ",0);
}
else if(bd[i][j]==2)
{
printf("%i ",0);
}
else
{
printf("%c ",'x');
}
}
la condicion "if ((i == x) && (j == y))" te sobra puesto que acabas de asignarle un 2 por haber acertado y se une a la condición if(bd
[j]==2)
hazlo así mejor:
Código: Seleccionar todo
for (j = 0; j < 20; j++)
{
char aux; //variable auxiliar
if(bd[i][j]==2) aux = '0'; //usa 0 para los que fueron "aciertos"
else aux = 'x'; //enmascara con 'x'
printf("%c ",aux); //te ahorras 2 declaraciones de printf distintas
}
}
la siguiente cuestión es.. y que ocurre si yo ahora te digo que lo hagas para bidimensionales de 500 x 600¿?
pues que tendrías que cambiar todos los numeritos de los for...
la solución es crearte Constantes para el maximo de x's y el maximo de y's que puede haber en tu "tablero", puedes definirte constantes de la siguiente manera:
Código: Seleccionar todo
//añadir debajo de los includes (para el preprocesador)
#define MAX_X 500
#define MAX_Y 600
//después sustituyes los '20' por MAX_X o MAX_Y según corresponda
así tu code sería "reutilizable" y "mantenible".. que son 2 características que todo programa debería tener
Por lo demás ninguna pega.
Un saludo hermano!