Buenas, una consulta estoy programando en c y necesito realizar lo siguiente y tengo una matriz de 6x6, que el numero 1 lo ingreso en matriz[0][0]='1', y luego quiero ingresarlo en una nueva fila y columna(lo voy a cambiar una cierta cantidad de veces) y quiero que se borre el 1 anterior y se guarde en la nueva fila y columna de la misma matriz.
muestra codigo y lo que intentas porque realmente no lo entiendo... tambien está pendiente
matriz[0][0]='1';
no es lo mismo que
matriz[0][0]=1;
//Cargo jugador-1
matriz[0][0]='1';
//Cargo jugador-2
matriz[5][5]='2';
if(jugador%2==1)
{
system("clear");
printf("\njugador 1");
printf("\nIngrese coordenadas ej. (1-A) ");
scanf("%d - %c",&fil,&col);
fila = fil -1;// calculo la fila en base a la fila ingresada
columna = (int)col-65; // calculo la columna en base a la letra mayuscula ingresada 65=A (INT)hace que la letra se pase a ASCII
printf("\n%d %d",fila,columna); // muestro las coordenadas que elegidas, ya transformadas en numeros
if (matriz[fila][columna]=='2' || matriz[fila][columna]=='*')
{
printf("Jugador 1 se matiene en posicion\n");
}
else //para mover el 1 de posicion
{
for(i=0;i<fila;i++)
{
for(j=0;j<columna;j++)
{
matriz[fila][columna]='1';
}
}
printf("\n");
tablero_1();
}
jugador++;//para pasar al otro jugador
}
else //SE UTILIZA PARA MOVER EL JUGADOR 2
{
system("clear");
printf("\njugador 2");
printf("\nIngrese coordenadas ej. (1-A) ");
scanf("%d - %c",&fil,&col);
fila = fil -1;// calculo la fila en base a la fila ingresada
columna = (int)col-65; // calculo la columna en base a la letra mayuscula ingresada 65=A (INT)hace que la letra se pase a ASCII
printf("\n%d %d",fila,columna); // muestro las coordenadas que elegidas
if (matriz[fila][columna]=='2' || matriz[fila][columna]=='*')
{
printf("Jugador 2 se matiene en posicion\n");
}
else//se utiliza para mover el 2 de posicion
{
for(i=0;i<fila;i++)
{
for(j=0;j<columna;j++)
{
matriz[fila][columna]='2';
}
}
}
jugador++;//para pasar al otro jugador
}
break;
Mod: códigos deben ir en etiquetas GeSHi
Cita de: minion123456789 en 5 Junio 2015, 15:44 PMtengo una matriz de 6x6, que el numero 1 lo ingreso en matriz[0][0]='1', y luego quiero ingresarlo en una nueva fila y columna(lo voy a cambiar una cierta cantidad de veces) y quiero que se borre el 1 anterior y se guarde en la nueva fila y columna de la misma matriz.
Para mover la pieza del jugador basta con sobrescribir la casilla actual con el indicador correcto (no lo indicas, bien puede ser un espacio) y escribir el carácter '1' en la nueva posición.
Lo mejor por sencillo es almacenar la posición actual y nueva del jugador en variables, con ello el fragmento termina, mas o menos, así:
if (matriz[fila][columna]=='2' || matriz[fila][columna]=='*'){
printf("Jugador 1 se matiene en posicion\n");
} else { //para mover el 1 de posicion
/*
** 1) Se libera la posicion actual
** j1_fila == Jugador 1 posicion actual, fila
** j1_col == Jugador 1 posicion actual, columna
*/
matriz[j1_fila][j1_col] = ' ';
/* 2) Se coloca al jugador 1 en su nueva posicion */
matriz[fila][columna] = '1';
/* 3) Se toma nota de la nueva posicion */
j1_fila = fila;
j1_col = columna;
}
Si no es posible por alguna razón (por ejemplo por los requisitos del enunciado) entonces hay que utilizar un par de bucles anidados para buscar el carácter que indique al jugador uno, sobrescribirlo con un espacio y colocar en la nueva posición un '1'.
Un saludo