SDL + C

SDL + C - C - Programmation

Marsh Posté le 26-02-2010 à 06:16:47    

salut  
 
je n'arrive pas a modifier la taille d'une surface rectangle=SDL_CreateRGBSurface
main.c

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <SDL/SDL.h>
  5. #include <stdlib.h>
  6. #include "main.h"
  7. void moteur(int*i);
  8. void animation(SDL_Surface *ecran);
  9. void traiterLesEvenements(input *in);
  10. int main(int argc,char *argv[])
  11. {
  12.     input in;
  13.     SDL_Init(SDL_INIT_VIDEO);
  14.     SDL_Surface *ecran=NULL,*menu=NULL;
  15.     ecran=SDL_SetVideoMode(600,500,32,SDL_HWSURFACE||SDL_DOUBLEBUF);
  16.     menu=SDL_LoadBMP("menu.BMP" );
  17.     SDL_Rect position;
  18.     position.x=0;
  19.     position.y=0;
  20.     memset(&in,0,sizeof(in));
  21.     while (!in.key[SDLK_ESCAPE] &&!in.quit)
  22.     {
  23.         traiterLesEvenements(&in);
  24.         if (in.key[SDLK_1])
  25.         {
  26.             animation(ecran);
  27.         }
  28.         SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
  29.         SDL_BlitSurface(menu,NULL,ecran,&position);
  30.         SDL_Flip(ecran);
  31.     }
  32.     SDL_FreeSurface(menu);
  33. }
  34. void traiterLesEvenements(input *in)
  35. {
  36.     SDL_Event event;
  37.     while (SDL_PollEvent(&event))
  38.     {
  39.         switch (event.type)
  40.         {
  41.         case SDL_KEYDOWN:
  42.             (*in).key[event.key.keysym.sym]=1;
  43.             break;
  44.         case SDL_KEYUP:
  45.             (*in).key[event.key.keysym.sym]=0;
  46.             break;
  47.         case SDL_QUIT:
  48.             (*in).quit=1;
  49.             break;
  50.         case SDL_MOUSEMOTION:
  51.             (*in).mousex=event.motion.x;
  52.             (*in).mousey=event.motion.y;
  53.             break;
  54.         case SDL_MOUSEBUTTONDOWN:
  55.             (*in).mousebuttons[event.button.button-1]=1;
  56.             break;
  57.         case SDL_MOUSEBUTTONUP:
  58.             (*in).mousebuttons[event.button.button-1]=0;
  59.             break;
  60.         }
  61.     }
  62. }
  63. void animation(SDL_Surface *ecran)
  64. {
  65.     input in;
  66.     in.continu=0;
  67.     int largeur=50,longeur=50;
  68.     int *i=NULL,*j=&largeur;/*i et j permet de modifier la taille du rectangle  */
  69.     i=&longeur;
  70.     SDL_Rect position1;
  71.     SDL_Surface *rectangle=NULL;
  72.     rectangle=SDL_CreateRGBSurface(SDL_HWSURFACE,longeur,largeur,32,0,0,0,0);
  73.     memset(&in,0,sizeof(in));
  74.     while (!in.continu)
  75.     {
  76.         position1.x=in.mousex;
  77.         position1.y=in.mousey;
  78.         if (in.key[SDLK_j])
  79.         {
  80.             in.continu=1;
  81.         }
  82.         if (in.key[SDLK_m])/*condition pour modifier la taille du rectangle*/
  83.         {
  84.             moteur(i);/*fonction pour changer la taille du rectanngle*/
  85.         }
  86.         traiterLesEvenements(&in);
  87.         SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
  88.         SDL_FillRect(rectangle,NULL,SDL_MapRGB((*ecran).format,0,0,0));
  89.         SDL_BlitSurface(rectangle, NULL, ecran, &position1);
  90.         SDL_Flip(ecran);
  91.     }
  92.     SDL_FreeSurface(rectangle);
  93. }
  94. void moteur(int *i)
  95. {
  96.     *i=100;
  97.     *j=100;
  98. }


 
main.h

Code :
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #define TAILLE_BLOC 50
  4. #define NB_BLOC_LARGEUR 10
  5. #define NB_BLOC_LONGEUR 12
  6. #define LONGEUR_FENETRE NB_BLOC_LONGEUR*TAILLE_BLOC
  7. #define LARGEUR_FENETRE NB_BLOC_LARGEUR*TAILLE_BLOC
  8. typedef struct
  9. {
  10.     char mousebuttons[6];
  11.     char key[SDLK_LAST];
  12.     int mousex,mousey,continu;
  13.     char quit;
  14. }input;
  15. #endif

Reply

Marsh Posté le 26-02-2010 à 06:16:47   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed