Anuncios Google

Eventos Raton

Hola a todos. No consigo entender los eventos del raton cada vez que lo intento algo sale mal. ¿Me podrian dar ejemplos de eventos del raton?

 

Gracias.


Mi blog: adriel0000.wordpress.com

 

un saludo.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

#include <string.h> #include

#include <string.h>
#include <stdlib.h>
#include "SDL/SDL.h"
 
SDL_Surface *screen;
 
typedef struct {
    SDL_Surface *image;
    SDL_Surface *bgsave;
    Uint16 x;
    Uint16 y;
    Uint16 ox;
    Uint16 oy;
} sprite, *sprite_ptr;
 
void RS_Blit(SDL_Surface *bitmap, Sint16 x, Sint16 y);
void play_game();
SDL_Surface *prep_image(char *file);
 
void draw_sprite(sprite *s);
void erase_sprite(sprite *s);
 
void RS_Blit(SDL_Surface *bitmap, Sint16 x, Sint16 y)
{
    SDL_Rect dest;
    dest.x = x;
    dest.y = y;
    dest.w = bitmap->w;
    dest.h = bitmap->h;
    SDL_BlitSurface(bitmap, NULL, screen, &dest);
}
 
SDL_Surface *prep_image(char *file)
{
    SDL_Surface *image;
 
    image=SDL_LoadBMP(file);
    return(image);
}
 
void get_bg(SDL_Surface *surface, int x, int y)
{
    /* Blits a surface sized chunk of background to that surface */
    SDL_Rect src;
    SDL_Rect dst;
 
    src.x = x;
    src.y = y;
    src.w = surface->w;
    src.h = surface->h;
 
    dst.x = 0;
    dst.y = 0;
    dst.w = surface->w;
    dst.h = surface->h;
    SDL_BlitSurface(screen, &src, surface, &dst);
}
 
int main(int argc, char *argv[])
{
 
    SDL_Init(SDL_INIT_VIDEO);
    screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE);
    play_game();
    SDL_Quit();
    exit(0);
}
 
void play_game()
{
    SDL_Event event;
    Uint8 *keys;
    int x, y;
    int ox, oy;
    int done=0, translucent=0;
 
    /* The buttons and mouse cursor surfaces */
    SDL_Surface *button1;
    SDL_Surface *button2;
    SDL_Surface *cursor;
 
    /* Used to hold background oblitered when mouse is blitted */
 
    SDL_Surface *cursor_save;
 
    /* Hide the existing cursor */
 
    SDL_ShowCursor(0);
 
    /* Load the cursor, and set the color key (100% blue for this one) */
 
    cursor=prep_image("cursor.bmp");
    SDL_SetColorKey(cursor, SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(cursor->format, 0, 0, 255));
 
    /* Set up the save, by loading the cursor image it makes sure it is the
    same size.  This should'nt be color keyed */
 
    cursor_save=prep_image("cursor.bmp");
 
    /* Load the buttons */
    button1=prep_image("button1.bmp");
    button2=prep_image("button2.bmp");
 
    x=0;
    y=0;
    get_bg(cursor_save, x, y);
 
    RS_Blit(button2, 0, 0);
    RS_Blit(button1, 640-button1->w, 480-button1->h);
    SDL_UpdateRect(screen,0, 0, 0, 0);
 
    do {
        SDL_GetMouseState(&x, &y);
        while ( SDL_PollEvent(&event) ) {
            ox = x;
            oy = y; /* Save old values for erasing the cursor */
            if ( event.type == SDL_QUIT )
                done=1;
 
            if ( event.type == SDL_MOUSEBUTTONDOWN ) {
                if( (x>640-button1->w)&&(x<640) ) {
                    if ((y>480-button1->h)&&(y<480))
                        done=1;
                }
 
                if( (x>0)&&(x<button2->w) ) {
                    if ((y>0)&&(y<button2->h)) {
                        if(translucent) {
                            SDL_SetAlpha(cursor, SDL_SRCALPHA, 0);
                            translucent=0;
                        } else {
                            SDL_SetAlpha(cursor, SDL_SRCALPHA, 127);
                            translucent=1;
                        }
                    }
                }
            }
        }
 
        keys = SDL_GetKeyState(NULL);
        if(keys[SDLK_ESCAPE] == SDL_PRESSED)
            done=1;
 
        /* Draw anything to the screen before drawing the cursor, or
        else the cursor may be covered or and it may not restore the
        background correctly */
 
        get_bg(cursor_save, x, y);
        RS_Blit(cursor, x, y);
 
        /* In real life redrawing the whole screen is bad (read as "slow") */
        SDL_UpdateRect(screen,0, 0, 0, 0);
        RS_Blit(cursor_save, x, y);
    } while(!done);
 
    /* Free the surfaces */
    SDL_FreeSurface(button1);
    SDL_FreeSurface(button2);
    SDL_FreeSurface(cursor);
    SDL_FreeSurface(cursor_save);
}

Si estudias un poco el código vas a ver como funciona el ratón.

 

Saludos

 

 

 

Imagen de joserc87

Hay miles de tutoriales por ahí.

Tan solo hay que poner "eventos ratón SDL" en google. Uno de ellos es este:

http://www.libsdl.org/intro.es/usingevents.html

Si tienes alguna pregunta un poco más concreta te responderé encantado.

Saludos


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Que alguien

Que alguien conteste por favor... :(

Imagen de ateno_3

Si quieres te puedo enviar,

Si quieres te puedo enviar, por MP, un codigo con SDL en el que uso el ratón.

Esta hecho en C++, pero no uso clases.

Imagen de adriel0000

Si,

Si, porfavor todo ayuda ;)

Imagen de Comandillos

Vale

Primero dinos eventos de que lenguaje... C, VB, Java...

Imagen de adriel0000

Como pregunto tanto crei que estaba claro xD

Como pregunto tanto crei que estaba claro xD lo siento pero se me olvido. En C y los eventos en SDL.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.