¿Cómo puedo programar el movimiento en c++?.

Mi pregunta es como puedo capturar la pulsación de una tecla de dirección y realizar un movimiento en el programa (en este caso es un juego sencillo pero para mi nivel un tanto difícil). Usando c++

1 respuesta

Respuesta
1

Tendrás que tener dos variables coordX y coordY para las coordenadas, que se irán actualizando en función de que tecla pulses, es decir, si pulsas la tecla izquierda (dx < 0), coordX = coordX - dx y al dibujar el gráfico del personaje jugador tendrás que hacerlo en dichas coordenadas (coordX y coordY).

Para capturar la pulsación de una tecla de dirección se puede usar la función getchar y ver si el código que devuelve pertenece a alguna tecla de dirección. Es decir

tecla = getchar();

if (tecla == KEY_UP)

coordY = coordY + dy;

else if (tecla == KEY_DOWN)

coordY = coordY - dy;

else if (tecla == KEY_RIGHT)
coordX = coordX + dx;

else if (tecla == KEY_LEFT)
coordX = coordX - dx;

Definiendo estas constantes (KEY_UP,...) con sus valores reales.

muchas gracias.. para definir las constantes tengo entendido que son: 77, 80... y los demás valores que no recuerdo, estas las defino antes del main?

Si, ademas si las defines antes del main con #define, quedara mas claro que son constantes y ademas serán globales a todas las funciones que creas en dicho archivo.

pero coordy, coordx devén inicializarse en cero? y dy, dx en 1??

El valor inicial de coordx y coordy sera la intentar inicial del personaje y el valor de dx y dy dependerá de la velocidad con la que quieras que se mueva, prueba con el valor 1 y si va muy lento aumentalo y si va muy rapido lo disminuyes. Ten en cuenta que se tiene que ejecutar veces por segundo, es decir, que lo mas seguro es que tengas que incrementar dx 1 vez cada 5 o 6 ejecuciones de esta funcion.

Perdona, debe decir que "el valor inicial de coordx y coordy sera la posición inicial del personaje"

y los valores de dx, dy?

El valor de dx y dy dependerá de la velocidad con la que quieras que se mueva, prueba con el valor 1 y si va muy lento aumentalo y si va muy rapido lo disminuyes. Ten en cuenta que se tiene que ejecutar 50 veces por segundo, es decir, que lo mas seguro es que tengas que incrementar dx 1 vez cada 5 o 6 ejecuciones de esta función.

muchas gracias, me quedaría mas claro si me colocaras un ejemplo de un programa de inicio a fin.

Si quieres aprender a programar videojuegos te recomiendo que le eches un vistazo a este libro "Programación de videojuegos con SDL para Windows y Linux", que puedes conseguir en esta pagina web http://www.agserrano.com/publi.html

Programar un juego sin usar una librería gráfica como SDL o Allegro, es un infierno y no tendrá la calidad mínima que se exige a un programa de estas características.

gracias.. bueno la verdad es que necesitaba saber eso porque era para un proyecto de clase en c++, gracias por responder ! ahí va mi puntuación..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas