Autor
|
Tema: error logico c (Leído 2,424 veces)
|
Kenji-chan
Desconectado
Mensajes: 104
|
hola, necesito ayuda para entender el error de mi código, es un bus caminas versión ms-dos en la funcion comprobar() que se ejecuta en la funcion gameLoop() no me reconoce las coordenadas correctas y me da otro valor. gracias de antemano. PD. el codigo esta preparado en mi modo debug para cundo lo ejjecuten sea mas facil de entender #include <stdio.h> #include <time.h> #include <windows.h> int numero; void gotoxy(int x,int y); int menu(); void llenarTablero(int tablero[][numero], int num); void dibujarTablero(int tablero[][numero], int num); int comprbacion(int tablero[][numero], int corx, int cory); void gameLoop(int tablero[][numero], int num); int gameOver(int tablero[][numero], int num); void borrar(int num); void comodin(int tablero[][numero], int num, int corx, int cory); int main(){ int op; do{ op = menu(); switch(op){ case 1: numero = 10; break; case 2: numero = 15; break; case 3: numero = 20; break; } if(op != 0){ int tablero[numero][numero]; llenarTablero(tablero,numero); dibujarTablero(tablero,numero); gameLoop(tablero,numero); } }while(op != 0); return 0; } void gotoxy(int x,int y){ HANDLE hcon; hcon = GetStdHandle(STD_OUTPUT_HANDLE); COORD dwPos; dwPos.X = x; dwPos.Y= y; SetConsoleCursorPosition(hcon,dwPos); } int menu(){ int op; printf("\t\t\tBusca minas versión ms-dos\n\n"); do{ if(op<0 || op>3) printf("EL numero ingresado es incorecto\n"); }while(op<0 || op>3); return op; } void llenarTablero(int tablero[][numero], int num){ int i, j; for(i=0; i<num; i++){ for(j=0; j<num; j++){ tablero [i ][j ] = rand()%2; } } } void dibujarTablero(int tablero[][numero], int num){ int i, j; for(i=0; i<num; i++){ for(j=0; j<num; j++){ //printf("%c",35); printf("%d",tablero [i ][j ]);//para hacer debug } } } int comprbacion(int tablero[][numero], int corx, int cory){ if(tablero[corx][cory] == 1){ gotoxy(25,2);//para hacer debug printf("tablrero[%d][%d] = %d", corx , cory , tablero [corx ][cory ]);//para hacer debug gotoxy(0,numero+3);//para hacer debug tablero[corx][cory] = 3; getch();//para hacer debug return 1; } } void gameLoop(int tablero[][numero], int num){ int corx, cory, fin, vidas = 3; int i, j; do{ borrar(num); printf("escriba una cordenado"); if(corx>=num || cory>=num){ borrar(num); printf("las cordenadas son incorrectas"); }else if(comprbacion(tablero, corx, cory) == 1){ borrar(num); printf("As asertado te quedan %d vidas", vidas ); gotoxy(corx,cory); //sirve para buscar espacios libres vecionos y desbloquearlos comodin(tablero, num, corx, cory); }else if(comprbacion(tablero, corx, cory) == 0){ borrar(num); vidas--; printf("Era una bomba te quedan %d vidas", vidas ); gotoxy(corx,cory); } //fin = gameOver(tablero, num); Sleep(2500); }while(vidas !=0); } void borrar(int num){ int i; gotoxy(0,num+3); for(i=0; i<5; i++){ } gotoxy(0,num+3); } void comodin(int tablero[][numero], int num, int corx, int cory){ int i,j; for(i=corx; i<num; i++){ for(j=cory; j<num; j++){ if(tablero[i][j] == 0) j=num; else if(tablero[i][j] == 1){ gotoxy(i,j); } getch();//para hacer debug } for(j=cory; j>0; j--){ if(tablero[i][j] == 0) j=0; else if(tablero[i][j] == 1){ gotoxy(i,j); } getch();//para hacer debug } if(tablero[i][j] == 0) i=num; } for(i=corx; i>0; i--){ for(j=cory; j>0; j--){ if(tablero[i][j] == 0) j=0; else if(tablero[i][j] == 1){ gotoxy(i,j); } getch();//para hacer debug } for(j=cory; j<num; j++){ if(tablero[i][j] == 0) j=num; else if(tablero[i][j] == 1){ gotoxy(i,j); } getch();//para hacer debug } if(tablero[i][j] == 0) i=0; } } int gameOver(int tablero[][numero], int num){ int i, j; for(i=0; i<num; i++){ for(j=0; j<num; j++){ if(tablero[i][j] == 1) return 1; else return 0; } } }
|
|
« Última modificación: 13 Diciembre 2016, 00:16 am por engel lex »
|
En línea
|
|
|
|
engel lex
|
PD. el codigo esta preparado en mi modo debug para cundo lo ejjecuten sea mas facil de entender probablemente nadie lo compile... requiere tiempo y trabajo... es recomendable que indiques exactamente donde está el error, que esperas, que resulta... me imagino que "comprobar()" es "comprbacion(int tablero[][numero], int corx, int cory)" (te falta una o compr obacion) a demás no retorna valor si no entra al if, lo que puede generar resultados inesperados (no asumas que si no escribes el return, return será 0... nunca asúmas en C o C++ que algo vale 0, si no se lo has colocado tu mismo)
|
|
« Última modificación: 13 Diciembre 2016, 00:24 am por engel lex »
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
x ejemplo en este caso escrivi en la cordenada 2,0 que es un uno y despus me la da como 0 MOD: Imagen adaptada a lo permitido.
|
|
« Última modificación: 13 Diciembre 2016, 00:42 am por MCKSys Argentina »
|
En línea
|
|
|
|
engel lex
|
tu tablero está girado 90º lo imprimiste mal void dibujarTablero(int tablero[][numero], int num){ int i, j; for(i=0; i<num; i++){ for(j=0; j<num; j++){ //printf("%c",35); printf("%d",tablero [i ][j ]);//para hacer debug } } }
en ese codigo "j" es x (acuerdate que el compilador imprime a la derecha del anterior) cuando j termina, hace un salto de linea y va con el siguiente "i" (y) por consecuencia siempre que uses printf, el ciclo interno es X siempre es util mentener la uniformidad void dibujarTablero(int tablero[][numero], int num){ int x, y; for(y=0; y<num; y++){ for(x=0; x<num; x++){ //printf("%c",35); printf("%d",tablero [x ][y ]);//para hacer debug } } }
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
gracias ya funciona bien
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Nero y CD de musica,NO es logico
Software
|
Layyer
|
4
|
2,256
|
12 Junio 2003, 16:14 pm
por kåhjî£
|
|
|
ayuda con este programa, tengo un error logico creo
Programación C/C++
|
TaLaP0 XoR BiT
|
2
|
2,814
|
3 Diciembre 2012, 04:06 am
por TaLaP0 XoR BiT
|
|
|
error logico ayuda con este programa
Programación C/C++
|
MellaSystems
|
8
|
3,328
|
23 Febrero 2015, 06:19 am
por MellaSystems
|
|
|
Error lógico cuando compilo ejercicio - CONSULTA
Programación C/C++
|
Cero++
|
6
|
2,330
|
11 Diciembre 2018, 20:51 pm
por Cero++
|
|
|
Operador lógico OR
Programación C/C++
|
OlgaFuentes
|
1
|
3,109
|
6 Octubre 2022, 18:24 pm
por Lieutenant McFarley
|
|