elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Salto de un personaje en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Salto de un personaje en c++  (Leído 2,630 veces)
LeonardoPR2096

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Salto de un personaje en c++
« en: 13 Agosto 2021, 04:42 am »

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


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Salto de un personaje en c++
« Respuesta #1 en: 14 Agosto 2021, 15:10 pm »

El sistema guarda las pulsaciones del teclado en un buffer. kbhit, getch, getchar, scanf, etc. lo que hacen es leer desde ese búffer. Esto es porque es muy improbable que un usuario pulse una tecla en el momento preciso que tu la pides.

Por tanto debes encontrar una forma de descartar esas pulsaciones mientras estés en el aire (por ejemplo que cuando toques el suelo primero se vacíe el búffer del teclado (una única vez) y a partir de después ver si pulsa la tecla de salto.

Otra idea sería que mientras estás en el aire puedas recibir las pulsaciones de teclado del usuario pero no hacer nada ante ellas.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
mascota/personaje #1 « 1 2 »
Diseño Gráfico
Azielito 16 9,778 Último mensaje 10 Octubre 2007, 19:01 pm
por Azielito
mascota/personaje #2
Diseño Gráfico
Azielito 8 5,216 Último mensaje 10 Diciembre 2007, 16:10 pm
por Azielito
Scarface [PS2] Personaje raro..
Juegos y Consolas
^DeMoN^ 0 2,003 Último mensaje 30 Septiembre 2009, 23:49 pm
por ^DeMoN^
Crear personaje comic
Diseño Gráfico
Shell Root 4 7,744 Último mensaje 4 Marzo 2013, 13:15 pm
por Linton
¿Quien es este personaje?...
Foro Libre
Luish@o 8 3,123 Último mensaje 3 Abril 2013, 11:39 am
por kikeee_26
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines