hasta ahora lo tengo asi.
Código
#include<stdio.h> #include<conio.h> #include<windows.h> #define ARRIBA 72 #define ABAJO 80 #define IZQUIERDA 75 #define DERECHA 77 #define SALIR 115 int x=40,y=14,contArri,contAbaj,contIzqu,contDere; int tecla,pos=3; void quitarC(){ HANDLE hCon; hCon=GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO c; c.dwSize=1; c.bVisible=FALSE; SetConsoleCursorInfo(hCon,&c); } void marco(){ for(int x=1;x<80;x++){ gotoxy(x,1);printf("%c",177); gotoxy(x,26);printf("%c",177); } for(int y=1;y<27;y++){ gotoxy(1,y);printf("%c",177); gotoxy(80,y);printf("%c",177); } } void caracter(){ gotoxy(x,y);printf("*"); } void limpiarCar(){ gotoxy(x-1,y);printf(" "); gotoxy(x+1,y);printf(" "); gotoxy(x,y-1);printf(" "); gotoxy(x,y+1);printf(" "); } void inicio(){ if(x<2){ x=40;y=14; for(int y=1;y<27;y++){ gotoxy(1,y);printf("%c",177);} } if(x>79){ x=40;y=14; for(int y=1;y<27;y++){ gotoxy(80,y);printf("%c",177);} } if(y<2){ x=40;y=14; for(int x=1;x<80;x++){ gotoxy(x,1);printf("%c",177);} } if(y>25){ x=40;y=14; for(int x=1;x<80;x++){ gotoxy(x,26);printf("%c",177);} } while(kbhit()){ if(tecla==ARRIBA){pos=1;} if(tecla==ABAJO){pos=2;} if(tecla==IZQUIERDA){pos=3;} if(tecla==DERECHA){pos=4;} } if(pos==1)y--; if(pos==2)y++; if(pos==3)x--; if(pos==4)x++; } void limpiar(){ for(int x=2;x<78;x++) for(int y=2;y<24;y++){ gotoxy(x,y);printf(" "); break; } } void contadorA(){ if(tecla==ARRIBA){contArri++;} if(tecla==ABAJO){contAbaj++;} if(tecla==IZQUIERDA){contIzqu++;} if(tecla==DERECHA){contDere++;} } void contadorB(){ for(int x=38;x<56;x++){ gotoxy(x,11);printf("%c",197); gotoxy(x,18);printf("%c",197); } for(int y=11;y<19;y++){ gotoxy(38,y);printf("%c",197); gotoxy(55,y);printf("%c",197); } gotoxy(40,13);printf("Arriba:%d",contArri); gotoxy(40,14);printf("Abajo:%d",contAbaj); gotoxy(40,15);printf("Izquierda:%d",contIzqu); gotoxy(40,16);printf("Derecha:%d",contDere); } main(){ quitarC(); marco(); while(tecla!=SALIR){ contadorA(); caracter(); limpiarCar(); inicio(); Sleep(25); } while(tecla==SALIR){ limpiar();contadorB();break; } }
tengo 2 problemas, cuando imprimo el contador me imprime cuantas veces se movio el caracter no cuantas veces pulse las teclas, ademas si mi caracter se mueve antes de llegar a la pared comienza a borrar los bordes de las paredes, ¿alguna ayuda con esos problemas?
gracias por su atencion