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 :

blit non fait


Sujet :

SDL

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut blit non fait
    Bonsoir

    je m'entraine à faire un jeux en 2D avec la bibliotheque sdl. j'ai un personnage qui doit bouger en fonction de sa posititon

    -Le personnage est placer sur un mur ou il ne devra pas y sortir
    -si la prochaine case en dessous de lui est vide on change de direction
    -le personnage bouge d'une case toute les secondes

    voici ma fonction

    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
     
    void bouger_kompa_vert(int carte[][NB_BLOCS_HAUTEUR],int *direction,SDL_Rect *position)
    {
     
        switch(*direction)
        {
     printf("y");
            direction = GAUCHE;
            case GAUCHE:
            if(carte[position->x][position->y + 1] == MUR)
            {
     
     
     
     
                if(carte[position->x - 1][position->y + 1] == VIDE)
                    {
                    *direction = DROITE; // on change de direction
                    }
                else
                {
            carte[position->x - 1][position->y] = MONSTRE1;
            carte[position->x][position->y] = VIDE;
                }
            }
            break;
     
            case DROITE:
     
             if(carte[position->x][position->y + 1] == MUR) // sous nos pied il y a un mur
            {
     
     
                if(carte[position->x + 1][position->y + 1] == VIDE)
                    {
                        printf("o");
                    *direction = GAUCHE; // on change de direction
                    }
                else
                {
                    printf("8");
            carte[position->x + 1][position->y] = MONSTRE1;
            carte[position->x][position->y] = VIDE;
                }
            }
            break;
     
        }
     
     
     
     
    }
    Je precise que le 8 est ecrit sur le fichier stdout ...


    Le personnage va à gauche normalement , tout marche mais lorsqu'il va à droite , le personnage n'est pas blité , et dés qu'on lui donne comme direction gauche je vois le personnage a l'autre extremité
    en gros le personnage fait comme ça
    http://www.monsterup.com/upload/1258653755648.png
    J'ai fait de mon mieux pour vous montré la situation >_<

    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je pense que c'est un problème de calcul de la position du personnage selon la case.

    En même temps je viens de voir ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     printf("y");
            direction = GAUCHE;
    Qui est un code dans un switch mais en dehors de bloc case. Je trouve ça un peu anormal.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Oui ce code n'est pas executé autant pour moi , mais tu dit un probleme de calcul cependant je pense que cela est correct (enfin j'ai verifié )

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    C'était juste une idée en l'air ( bien que l'erreur a une chance de provenir de là ).

    Sinon, je pense que le mieux ça va être de débuggué le code soit avec un debuggueur en faisant une execution pas à pas. ( Je peux aidé si vous m'indiquez l'IDE que vous utiliser ). Sinon avec des printf qui affiche les bonne variables ( position du blit ) et qui indique ou passe le programme.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre averti Avatar de yodaime
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 282
    Points : 340
    Points
    340
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    C'était juste une idée en l'air ( bien que l'erreur a une chance de provenir de là ).

    Sinon, je pense que le mieux ça va être de débuggué le code soit avec un debuggueur en faisant une execution pas à pas. ( Je peux aidé si vous m'indiquez l'IDE que vous utiliser ). Sinon avec des printf qui affiche les bonne variables ( position du blit ) et qui indique ou passe le programme.
    A mon avis ce la vient de la. Avec ce code on passe jamais dans le case DROITE.

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    voici mon programme http://dl.free.fr/oqdmfgZ7w

    Merci de votre aide

  7. #7
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    (bon je te l'ai déjà dit mais bon ^^)
    Le principal problème se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR] = {0};
    Dans ta fonction chargerniveau au final tu charges ton niveau "à l'envers" :
    Donc au lieu d'avoir un fichier du style :
    123
    456
    789

    Tu as un fichier :
    147
    258
    369
    Plus tu pédales moins fort, moins t'avances plus vite.

Discussions similaires

  1. insertion SQL non faites dans la Base ?
    Par pcouas dans le forum Hibernate
    Réponses: 2
    Dernier message: 28/05/2009, 18h49
  2. Rechargement non fait
    Par kev484 dans le forum Langage
    Réponses: 9
    Dernier message: 21/01/2008, 20h03
  3. tracé de courbe non fait dans Graphics
    Par skud dans le forum C#
    Réponses: 1
    Dernier message: 13/06/2007, 20h18
  4. [Administration] Authentification non faite
    Par manaboko dans le forum Subversion
    Réponses: 2
    Dernier message: 13/04/2007, 10h00

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