Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment stoper mon personnage

    27 mars 2021 à 13:24:46

    Bonjour les amis. Je uis ici pour vous gener un peu

    Jia fait un code qui fait bouger mon personnage. Mais je voulais savoir comment faire pour forcer mon personnage a ne plus aller loin pour ne pas sortir de la limite donner a la fenetre

    Voici mon code

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL2/SDL.h>
    #include <SDL2/SDL_image.h>
    
    SDL_bool Collision(SDL_Rect rect1, SDL_Rect rect2);
    int deplacer(SDL_Renderer *rendu);
    int main(int argc, char *argv[])
    {
    
        SDL_Window *window = NULL;
        SDL_Renderer *rendu = NULL;
        SDL_Texture *texture1 = NULL;
        SDL_Texture *texture2 = NULL;
        SDL_Surface *surface1 = NULL;
        SDL_Surface *surface2 = NULL;
        surface1 = IMG_Load("mario_droite.gif");
    
    
        SDL_Event event;
        SDL_bool run = SDL_TRUE;
    
    
        SDL_Init(SDL_INIT_VIDEO);
    
        window = SDL_CreateWindow("My jeu", 400, 200, 600, 400, SDL_WINDOW_SHOWN);
        rendu = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
        SDL_SetRenderDrawColor(rendu, 255, 255, 255, 255);
        SDL_RenderClear(rendu);
        SDL_RenderPresent(rendu);
    
        texture1 = SDL_CreateTextureFromSurface(rendu, surface1);
    
        SDL_Rect rect;
        rect.x = 100;
        rect.y = 200;
        rect.w = 50;
        rect.h = 50;
    
    
        SDL_RenderCopy(rendu, texture1, NULL, &rect);
        
        SDL_RenderPresent(rendu);
    
        while(run)
        {
    
            SDL_WaitEvent(&event);
            if(event.type == SDL_QUIT)
            {
                run = SDL_FALSE;
            }
    
            if(event.type == SDL_KEYDOWN)
            {
                if(event.key.keysym.sym == SDLK_RIGHT)
                {
                    rect.x++;
                }
    
                 if(event.key.keysym.sym == SDLK_LEFT)
                {
                    rect.x--;
                }
    
                 if(event.key.keysym.sym == SDLK_UP)
                {
                    rect.y--;
                }
    
                 if(event.key.keysym.sym == SDLK_DOWN)
                {
                    rect.y++;
                }
            }
    
            SDL_RenderClear(rendu);
    
             SDL_RenderCopy(rendu, texture1, NULL, &rect);
    
        SDL_RenderPresent(rendu);
    
    
        }
    
    
        SDL_Delay(0);
    
    
        SDL_FreeSurface(surface2);
        SDL_FreeSurface(surface1);
        SDL_DestroyTexture(texture2);
        SDL_DestroyTexture(texture1);
        SDL_DestroyRenderer(rendu);
        SDL_DestroyWindow(window);
        SDL_Quit();
        return 0;
    }
    
    



    -
    Edité par Josade 27 mars 2021 à 13:30:41

    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2021 à 14:54:54

      Hello,

      Cela me semble simple: il suffit de tester si le personnage ne touche pas déjà un bord. Par exemple, déplacement à droite

      if(event.key.keysym.sym == SDLK_RIGHT && rect.x+rect.w<400)
      	rect.x++;
      



      Mais il ne faut pas utiliser les nombres magiques, et récupérer la taille de la fenêtre.

      -
      Edité par edgarjacobs 27 mars 2021 à 17:30:55

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        27 mars 2021 à 21:01:09

        edgarjacobs a écrit:

        Hello,

        Cela me semble simple: il suffit de tester si le personnage ne touche pas déjà un bord. Par exemple, déplacement à droite

        if(event.key.keysym.sym == SDLK_RIGHT && rect.x+rect.w<400)
        	rect.x++;
        



        Mais il ne faut pas utiliser les nombres magiques, et récupérer la taille de la fenêtre.

        -
        Edité par edgarjacobs il y a environ 3 heures

        Okay merci je vais l'essayer voir

        Et concernant la gestion du saut d'un personnage, vous avez une une idée de ca qui puisse m'aider ???

        Mr edgarjacobs

        -
        Edité par Josade 27 mars 2021 à 21:04:15

        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2021 à 18:52:56

          Re,-

          Saut du personnage: exemple de Fvirtman. Attention, à adapter: cela a été écrit du temps de sdl 1.x

          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          Comment stoper mon personnage

          × 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