Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL Drapeau de l'Ukraine

    4 mars 2022 à 10:41:51

    Bonjour. Le drapeau de l'Ukraine flottant au vent (SDL1.2) ...

    #include <math.h>
    #include <SDL/SDL.h>
    
    #define W     320
    #define H     200
    #define SIZE  3
    #define SLEN  256
    #define SAMP  10
    #define SOFS  25
    #define SPEED 1
    #define CURVE 125
    #define DELAY 25
    #define XMAX  ((W - SOFS * 2) / SIZE)
    #define YMAX  ((H - SOFS * 2) / SIZE)
    
    int main(int argc, char **argv)
    {
      (void)argc;
      (void)argv;
    
      SDL_Event event;
      SDL_Surface *screen;
    
      unsigned *pixels,
                sintab[SLEN],
                bitmap[XMAX * YMAX];
    
      SDL_Init(SDL_INIT_VIDEO);
    
      screen = SDL_SetVideoMode(W, H, 32, 0);
      pixels = screen->pixels;
    
      // Sinus calc
      for(int i = 0; i < SLEN; i++)
        sintab[i] = (unsigned)rint(sin(i * 4. * 3.14159265359 / SLEN) * SAMP + SOFS);
    
      // Ukrainian flag
      for(int x = 0; x < XMAX; x++)
        for(int y = 0; y < YMAX / 2; y++)
          bitmap[y * XMAX + x] = 0x0057b8; //Blue R:0 G:87 B:184
    
      for(int x = 0; x < XMAX; x++)
        for(int y = YMAX / 2; y < YMAX; y++)
          bitmap[y * XMAX + x] = 0xffd700; //Yellow R:255 G:215 B:0
    
      // Render loop ...
      while(!SDL_PollEvent(&event) || event.type != SDL_KEYDOWN)
      {
        static int sidx = 0;
    
        // Clear
        for(int y = 0; y < H; y++)
          for(int x = 0; x < W; x++)
            pixels[y * W + x] = 0;
    
        // Draw
        for(int y = 0; y < YMAX; y++) {
          for(int x = 0; x < XMAX; x++) {
            int xp = SIZE * x + sintab[(sidx + CURVE * x + CURVE * y) % SLEN];
            int yp = SIZE * y + sintab[(sidx + 4 * x + CURVE * y + y) % SLEN];
            pixels[yp * W + xp] = bitmap[y * XMAX + x];
          }
        }
        // Update
        sidx = (sidx + SPEED) % SLEN;
        SDL_Delay(DELAY);
        SDL_Flip(screen);
      }
    
      SDL_Quit();
      return 0;
    }


    Référence.

    • Partager sur Facebook
    • Partager sur Twitter
      4 mars 2022 à 11:12:21

      C'est louable de ta part, mais pourquoi en SDL 1.2 ? (version obsolète depuis 9 ans et plus supportée upstream).

      La convention d'include est SDL.h (sans préfixe).

      -
      Edité par markand 4 mars 2022 à 11:12:54

      • Partager sur Facebook
      • Partager sur Twitter

      git is great because Linus did it, mercurial is better because he didn't.

        4 mars 2022 à 11:26:41

        @markand - Parce que je suis moi-même obsolète ...
        • Partager sur Facebook
        • Partager sur Twitter
          4 mars 2022 à 14:07:48

          La SDL 1.2 date de l'époque de l'URSS :p
          • Partager sur Facebook
          • Partager sur Twitter

          Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

            4 mars 2022 à 15:11:06

            @magma:
            Dis bonjour à Nikita Khrouchtchev pour moi ...

            C'est lui qui a eu la "gentillesse" de faire réduire la puissancede la Tsar Bomba de 100 mégatonnes à 57 mégatonnes.

            -
            Edité par PierrotLeFou 4 mars 2022 à 15:16:41

            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

            SDL Drapeau de l'Ukraine

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown