hola,
hoy me puse a estudiar SDL y intentando comprender los enventos. Asi que estuve probando los eventos y no me va bien. Por mas que pongo getchar; me sale la pantalla unos segundos y desaparece por lo que no puedo darle a la tecla, y entonces pues no me sale la imagen.
El codigo:
#include <stdlib.h> #include <SDL.h> #include <stdio.h> //Estructuras int main(int argc, char *argv[]) { SDL_Surface *image, *screen; SDL_Rect dest; SDL_Event event; typedef struct{ Uint8 type; Uint8 state; SDL_keysym keysym; } SDL_KeyboardEvent; typedef struct{ Uint8 scancode; SDLKey sym; SDLMod mod; Uint16 unicode; } SDL_keysym; //Variables int done = 0; atexit(SDL_Quit); // Iniciar SDL if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("No se pudo iniciar SDL: %s\n",SDL_GetError()); exit(1); } screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE); if (screen == NULL) { printf("No se puede inicializar el modo gráfico: \n",SDL_GetError()); exit(1); } Uint8 *keys; keys=SDL_GetKeyState(NULL); //Cargar grafico //evento if (keys[SDLK_UP] == 1) { image = SDL_LoadBMP("nave.bmp"); image == NULL; dest.x = 100; dest.y = 100; dest.w = image->w; dest.h = image->h; SDL_BlitSurface(image, NULL, screen, &dest); } // Mostramos la pantalla SDL_Flip(screen); // liberar superficie SDL_FreeSurface(image); /* image = SDL_LoadBMP("nave.bmp"); if ( image == NULL ) { printf("No pude cargar gráfico: %s\n", SDL_GetError()); } dest.x = 100; dest.y = 100; dest.w = image->w; dest.h = image->h; SDL_BlitSurface(image, NULL, screen, &dest); */ getchar; return 0; }
Gracias de antemano
Como dijo Jack el destripador...
Vayamos por partes.
Un saludo!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Vaya
Vaya esque estaba siguiendo el tutorial ese de SDL que me recomendaste y estaba haciendo pruebas mas o menos como me sonaba hacer. Haber si consigo algo ;)
Edit---
A y respecto a esto:
"Eso no son eventos. Tu estás consultando el estado del teclado, no la pila de eventos ;)"
Como aria para que al pulsar me hiciese la accion?
Mi blog: adriel0000.wordpress.com
un saludo.
A ver.
No son eventos, pero no es que lo estés haciendo mal. Si lo que quieres es comprobar en todo momento el estado del teclado (por ejemplo para controlar un jugador), así lo estás haciendo bien. Si lo que quieres es, por ejemplo, hacer algo al pulsar el botón del mouse tendrías que usar la pila de eventos (de cabeza era algo así como while (SDL_pollevent (&event)){switch (event.type){etc}}...).
Ten en cuenta que si dejas pulsada una tecla mucho tiempo se generan muchos eventos (igual que si dejas pulsada la tecla a en el world, se escriben muchas a's).
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Muchas gracias
Muchas gracias lo que yo queria era que al pulsar por ejemplo la flecha de arriva el PJ se fuese para arriva.
Sabés más de C/C++ ? Es que
Sabés más de C/C++ ? Es que no estas usando ningún bucle, y entonces el programa temrinará de una pasada.
un
un While?? La verdad esque se C pero C++ algo se... Yo programaba en DS con palib y se HTML y algo de PHP osea que esperiencia tengo algo pero si te refieres a poner un bucle wihile o como se llamen, probare.
Mi blog: adriel0000.wordpress.com
un saludo.