IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

probleme avec scrolling


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut probleme avec scrolling
    bonjour les amis

    j'ai decidé de faire un petit jeu alors j'ai commencé par le scrolling je l'ai fais et tout ce passe très bien ...

    mais il y a un petit probleme c'est que quand je depasse la moitié de la fenetre le perso accelere et s'approche du coté droit (ce qui est )...

    je veux que le perso reste a la moitié et que la map bouge.

    voici mon code source


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    int main(int argc, char *argv[])
    {
     
        SDL_Surface *ecran,*map,*perso;
        SDL_Rect posmap,morceau,posperso;
        SDL_Event event;
        int continuer = 1;
     
     
        SDL_Init(SDL_INIT_VIDEO);
     
        ecran = SDL_SetVideoMode(400, 400, 32, SDL_HWSURFACE);
     
        perso=SDL_LoadBMP("perso.bmp");
        map=SDL_LoadBMP("5.bmp");
     
        posmap.x=0;
        posmap.y=0;
     
        posperso.x=150;
        posperso.y=150;
     
    morceau.h=400;
    morceau.w=400;
     
        SDL_BlitSurface(map, &morceau, ecran, &posmap);
        SDL_BlitSurface(perso, NULL, ecran, &posperso);
         SDL_Flip(ecran);
     
        SDL_EnableKeyRepeat(10, 10);
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_RIGHT: // Flèche droite
                        posperso.x++;
                            break;
                        case SDLK_LEFT: // Flèche gauche
                             posperso.x--;
                            break;
                    }
                    break;
     
            }
     
    morceau.x=posperso.x-150;
    morceau.y=0;
     
        if(morceau.x<0) morceau.x=0;
     
            SDL_BlitSurface(map, &morceau, ecran, &posmap);
            SDL_BlitSurface(perso, NULL, ecran, &posperso);
            SDL_Flip(ecran);
                    }
     
        SDL_FreeSurface(map);
        SDL_FreeSurface(perso);
        SDL_Quit();
     
        return EXIT_SUCCESS;

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Salut,

    Il faut rajouter une variable.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        SDL_Rect posaff;
    
    //...
    
        posaff.y = posperso.y;
        morceau.x=posperso.x-150;
        morceau.y=0;
        
        if(morceau.x<0)
        { 
             morceau.x=0;
             posaff.x = posperso.x;
        } else
        {
             posaff.x = 150;
        }
    
            SDL_BlitSurface(map, &morceau, ecran, &posmap);
            SDL_BlitSurface(perso, NULL, ecran, &posaff);

  3. #3
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Tu as des exemple de code pour le scrolling ici (avec les explications) :

    http://loka.developpez.com/tutoriel/sdl/scrolling/

Discussions similaires

  1. Problème avec scrolling
    Par kapac dans le forum Android
    Réponses: 4
    Dernier message: 27/01/2016, 09h44
  2. Probleme avec Scroll View
    Par Loofan dans le forum XCode
    Réponses: 0
    Dernier message: 04/09/2012, 18h59
  3. Probleme de scroll bar avec IE.
    Par defacta dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 30/07/2007, 15h36
  4. Probleme avec un scroll bar
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 31/05/2007, 16h02
  5. [FLASH 8] Probleme de scrolling avec clip
    Par Mr-Hunter dans le forum Flash
    Réponses: 1
    Dernier message: 28/11/2005, 23h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo