begin process at 2012 05 27 19:11:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > [SDL] EXEMPLE DE GESTION DES EVENTS

[SDL] EXEMPLE DE GESTION DES EVENTS


 Information sur la source

Note :
6,33 / 10 - par 3 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :18/03/2005 Vu / téléchargé :3 728 / 291

Auteur : hoxid

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Salut,

Cette source est un exemple de gestion des évènements.
Il est possible de déplacer 2 images, la n°1 et la n°2, et de changer l'image controlée grace à la touche ECHAP. (bien entendu les images se déplacent avec les touches directionelles)
La barre de titre change aussi en fonction de l'image controlée.

Notes l'absence de gestion de touche enfoncée (il faut réappuyer sur la touche de déplacement pour redéplacer), et l'absence d'utilisation des COLORKEYS.

Source

  • #include <SDL.h>
  • #include <stdlib.h>
  • SDL_Surface *Screen, *Rect, *Rect2;
  • SDL_Rect Rectangle, Rectangle2;
  • SDL_Event Event;
  • int Done = 0;
  • int whatplayer = 1;
  • void Display() {
  • SDL_FillRect(Screen, 0, 0);
  • SDL_BlitSurface(Rect, 0, Screen, &Rectangle);
  • SDL_BlitSurface(Rect2, 0, Screen, &Rectangle2);
  • SDL_Flip(Screen);
  • }
  • int main(int argc, char *argv[]) {
  • if(SDL_Init(SDL_INIT_VIDEO) < 0) {
  • printf(stderr, "ERROR ! %s\n", SDL_GetError());
  • return 5;
  • }
  • Screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);
  • SDL_WM_SetCaption("Control : n°1", 0);
  • if(Screen == 0) {
  • printf(stderr, "ERROR ! %s\n", SDL_GetError());
  • return 10;
  • }
  • Rectangle.x = 50;
  • Rect = SDL_LoadBMP("hit1.bmp");
  • Rect2 = SDL_LoadBMP("hit2.bmp");
  • while(Done != 1) {
  • while(SDL_PollEvent(&Event)) {
  • switch(Event.type) {
  • case SDL_QUIT : Done = 1;
  • case SDL_KEYDOWN : switch(Event.key.keysym.sym) {
  • case SDLK_LEFT :
  • if(whatplayer == 1 ) {
  • Rectangle.x = Rectangle.x - 20;
  • } else if(whatplayer == 2) {
  • Rectangle2.x = Rectangle2.x - 20;
  • } break;
  • case SDLK_RIGHT :
  • if(whatplayer == 1 ) {
  • Rectangle.x = Rectangle.x + 20;
  • } else if(whatplayer == 2) {
  • Rectangle2.x = Rectangle2.x + 20;
  • } break;
  • case SDLK_UP :
  • if(whatplayer == 1 ) {
  • Rectangle.y = Rectangle.y - 20;
  • } else if(whatplayer == 2) {
  • Rectangle2.y = Rectangle2.y - 20;
  • } break;
  • case SDLK_DOWN :
  • if(whatplayer == 1 ) {
  • Rectangle.y = Rectangle.y + 20;
  • } else if(whatplayer == 2) {
  • Rectangle2.y = Rectangle2.y + 20;
  • } break;
  • case SDLK_ESCAPE :
  • if(whatplayer == 1) { whatplayer = 2; SDL_WM_SetCaption("Control : n°2", 0); }
  • else if(whatplayer == 2) {
  • whatplayer = 1; SDL_WM_SetCaption("Control : n°1", 0);
  • } break;
  • }
  • }
  • }
  • Display();
  • }
  • return 0;
  • }
#include <SDL.h>
#include <stdlib.h>

SDL_Surface *Screen, *Rect, *Rect2;
SDL_Rect Rectangle, Rectangle2;
SDL_Event Event;
int Done = 0;
int whatplayer = 1;

void Display() {
    SDL_FillRect(Screen, 0, 0);
    SDL_BlitSurface(Rect, 0, Screen, &Rectangle);
    SDL_BlitSurface(Rect2, 0, Screen, &Rectangle2);
    SDL_Flip(Screen);
}

int main(int argc, char *argv[]) {
    if(SDL_Init(SDL_INIT_VIDEO) < 0) {
        printf(stderr, "ERROR ! %s\n", SDL_GetError());
        return 5;
    }
    Screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Control : n°1", 0);
    if(Screen == 0) {
        printf(stderr, "ERROR ! %s\n", SDL_GetError());
        return 10;
    }
    Rectangle.x = 50;
    Rect = SDL_LoadBMP("hit1.bmp");
    Rect2 = SDL_LoadBMP("hit2.bmp");
    while(Done != 1) {
        while(SDL_PollEvent(&Event)) {
                switch(Event.type) {
                                case SDL_QUIT : Done = 1;
                                case SDL_KEYDOWN : switch(Event.key.keysym.sym) {
                                                                
                                                                case SDLK_LEFT : 
                                                                if(whatplayer == 1 ) {
                                                                Rectangle.x = Rectangle.x - 20;
                                                                } else if(whatplayer == 2) {
                                                                Rectangle2.x = Rectangle2.x - 20;
                                                                } break;
                                                                
                                                                case SDLK_RIGHT :
                                                                if(whatplayer == 1 ) {
                                                                Rectangle.x = Rectangle.x + 20;
                                                                } else if(whatplayer == 2) {
                                                                Rectangle2.x = Rectangle2.x + 20;
                                                                } break;
                                                                
                                                                case SDLK_UP : 
                                                                if(whatplayer == 1 ) {
                                                                Rectangle.y = Rectangle.y - 20;
                                                                } else if(whatplayer == 2) {
                                                                Rectangle2.y = Rectangle2.y - 20;
                                                                } break;
                                                                
                                                                case SDLK_DOWN :
                                                                if(whatplayer == 1 ) {
                                                                Rectangle.y = Rectangle.y + 20;
                                                                } else if(whatplayer == 2) {
                                                                Rectangle2.y = Rectangle2.y + 20;
                                                                } break;
                                                                
                                                                case SDLK_ESCAPE :
                                                                if(whatplayer == 1) { whatplayer = 2; SDL_WM_SetCaption("Control : n°2", 0); } 
                                                                else if(whatplayer == 2) {
                                                                whatplayer = 1; SDL_WM_SetCaption("Control : n°1", 0);
                                                                } break;
                                                   }
        }
    }
    Display();
    }
    return 0;
}

 Conclusion

Bon ben je suis moi-même en phase d'apprentissage de SDL alors...

;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture PLANNING D'EQUIPE par grephit
Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi

Commentaires et avis

Commentaire de hoxid le 18/03/2005 17:50:34

Désolé si c'est pas très lisible...

Commentaire de Zazour le 19/03/2005 11:09:49

les return 5 et return 10 ont une fonction particulère?

Commentaire de hoxid le 19/03/2005 12:55:44

nan c'est juste que j'aime pas le exit()

Commentaire de hoxid le 19/03/2005 12:55:56

nan c'est juste que j'aime pas le exit()

Commentaire de Zazour le 19/03/2005 21:07:03

ben,je veux bien,mais cela sert a quoi alors?  :)

Commentaire de karabates le 10/04/2005 17:28:04

bein moi je met 9/10 parce ke je connet vraiment pa la lib sdl et ke ca fa ke un moin ke je prog en c et ke g un projet a faire pour dans un moi qui doit etre un jeu qui utilise la sdl et ke ce code me donne deja des bases tres claires !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales