Hola necesito ayuda con esto. estoy tratando de programar el salto de un personaje (en este caso un simple '*' ) pero me pasa algo raro cuando salto y el '*' esta en el aire presiono otra vez la tecla de saltar y al momento de llegar abajo vuelve a saltar. osea el kbhit() esta leyendo y guardando?? la tecla presionada. y de hecho solo quiero que se compruebe si se presiono una tecla cuando estoy en el suelo otra vez.
este es el codigo.
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int x=10, y=34;
int dy=1;
char tecla=0;
void dibujar()
{
gotoxy(x,y); cout<<"*";
}
void borrar()
{
gotoxy(x,y); cout<<" ";
}
void salto()
{
if(y==34){ //la condicion es para que solo compruebe si se presiona una tecla cuando el personaje esta en el suelo. pero por alguna razon lee la tecla //aunque ''y'' no sea 34.
if(kbhit())
{
tecla=getch();
}
}
if(tecla=='w' )
{
borrar();
y-=dy;
dibujar();
if(y<=25)
{
dy=-dy;
}
if(y==34)
{
tecla=0;
dy=-dy;
}
}
}
int main()
{
dibujar();
while(1)
{
salto();
Sleep(80);
}
return 0;
}
este es el codigo.
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int x=10, y=34;
int dy=1;
char tecla=0;
void dibujar()
{
gotoxy(x,y); cout<<"*";
}
void borrar()
{
gotoxy(x,y); cout<<" ";
}
void salto()
{
if(y==34){ //la condicion es para que solo compruebe si se presiona una tecla cuando el personaje esta en el suelo. pero por alguna razon lee la tecla //aunque ''y'' no sea 34.
if(kbhit())
{
tecla=getch();
}
}
if(tecla=='w' )
{
borrar();
y-=dy;
dibujar();
if(y<=25)
{
dy=-dy;
}
if(y==34)
{
tecla=0;
dy=-dy;
}
}
}
int main()
{
dibujar();
while(1)
{
salto();
Sleep(80);
}
return 0;
}