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;
}
}
}