Hola a tod@s,
Estaba experimentando con el código del juego Volleyball y me he encontrado un pequeño problema que me gustaría explicaros.
Deseaba que el pingüiino saltase una sóla ocasión por cada pulsación de la tecla de salto en vez de saltar continuamente mientras se tiene pulsada la tecla.
De arrancada este problema lo he resuelto añadiendo el código que voy a ponerles, pero estoy me ha causado un problema que ya no he sabido solucionar.
Dentro de util.c he añadido este código al método "procesar_eventos":
int procesar_eventos (void)
{
static SDL_Event event;
while (SDL_PollEvent (&event))
{
if (event.type == SDL_QUIT)
return 0;
//comprueba procesos de pulsación de teclas
if (event.type == SDL_KEYDOWN)
{
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE:
return 0;
break;
default:
break;
}
}
//comprueba procesos cuando se sueltan las teclas
if (event.type == SDL_KEYUP)
{
switch (event.key.keysym.sym)
{
case SDLK_n:
printf("Se ha soltado la tecla de golpe del personaje 1\n");
break;
}
}
}
return 1;
}
Bien. Mi intención es sustituir la instrucción "printf("Se ha soltado la tecla de golpe del personaje 1\n");" por otra que consiga pasarle a la estructura "personaje" un valor para una de sus propiedades. Algo así:
Estructura personaje ->
typedef struct Personaje
{
SDL_Surface * imagen;
SDLKey tecla_derecha;
SDLKey tecla_izquierda;
SDLKey tecla_arriba;
SDLKey tecla_abajo;
SDLKey tecla_saltar;
SDLKey tecla_golpe;
enum estados estado;
int x;
int y;
int z;
int limite_izquierdo;
int limite_derecho;
int limite_arriba;
int limite_abajo;
int lado; //hacia donde mira el personaje...
int posicion_salto; //guardo la coordenada x donde se encuentra el jugador
float velocidad_salto;
int saltando;
int pulsado;
int soltar_tecla;
int paso;
int cuadro;
int delay;
int delay_golpe;
enum golpes golpe;
} Personaje;
Y donde tengo el printf de util.c pasarle algo así:
personaje->soltar_tecla=1;
Siento lo extenso de mi post. Si no se me ha entendido bien intentaré exponerlo de alguna otra manera.
Muchas gracias!!!