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

C Discussion :

Mon menu déroulant


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut Mon menu déroulant
    Bonjour,comment va ??
    me cela ira peut être mieux après, je me présente un peu, depuis deux mois j'apprends à programmer en C avec la sdl, et j'ai créer un éditeur de map basique qui fonctionne.Et un bout du jeu qui va avec, j'apprends sur plusieurs site, c'est cool très

    J'ai voulu l'améliorer et mettre un menu déroulant à droite avec mes tiles affichées pour pour les choisir.

    fonction qui affiche

    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
     
    void drawTileset (void)
    {
        int x,y,i,xsource,ysource;
        /*La limite de début d'affichage du menu*/
        x = LIMITE_SURF-TILE_SIZE;
        y = 0 ;
        /*Rectangle et fond du menu*/
        SDL_Surface *rectangle=NULL, *fond=NULL;
        fond = SDL_CreateRGBSurface(SDL_HWSURFACE,SURF_NB_TILE_X,SCREEN_HEIGHT,32, 0,0, 0, 0);
        rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE,33, 33, 32, 0,0, 0, 0);
        /*Taille des rectangles*/
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(jeu.screen->format, 255,0,0 ));
        SDL_FillRect(fond, NULL, SDL_MapRGB(jeu.screen->format, 255,0,0 ));
        /*affichage du fond*/
        drawImage(fond,LIMITE_SURF+TILE_SIZE ,0);
        /*Affichage des tiles et si i=la tile choisi on dessine un rectangle derriére*/
        for(i=map.chipsetStartY;i<=MAX_TILES;i++)
        {
            if (i==cursor.tileID)
            {
                drawImage(rectangle,x,y);
            }
     
            ysource = i / NBR_TILE_X * TILE_SIZE;
            xsource = i % NBR_TILE_X * TILE_SIZE;
            drawTile(map.tileSet,x, y, xsource, ysource);
     
        /*On incrémente x de la taille d'une tile, et remise à la limite d'affichage si la tile dépasse de l'écran*/
           x += TILE_SIZE+1;
           if(x>=(SCREEN_WIDTH-TILE_SIZE))
           {
              x=LIMITE_SURF-TILE_SIZE;
              y+=TILE_SIZE+1;
           }
     
        }
        /*On libére les surfaces*/
        if (rectangle != NULL)
    	{
    		SDL_FreeSurface(rectangle);
    	}
    	if (fond != NULL)
    	{
    		SDL_FreeSurface(fond);
    	}
     
     
    }
    Et ma fonction qui gére le choix de la tile

    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
     
     
    menuNbTile=(SURF_NB_TILE_X)/(TILE_SIZE+1);
    	char file[120];
     
    /*menu deroulant*/
     
        if (input.pagedown==1)
        {
            if (map.chipsetStartY<=MAX_TILES-menuNbTile) map.chipsetStartY+=menuNbTile;
        }
        if (input.pageup==1)
        {
            if (map.chipsetStartY>=menuNbTile) map.chipsetStartY-=menuNbTile;
        }
     
    /*si clic sur bouton droit souris,x superieur à la limite d'affichage*/
     if(input.copy==1 )
        {
            if (cursor.x>LIMITE_SURF  )
            {
              /*fonction qui pose problème pour choisir ma tile*/
              cursor.tileID= map.chipsetStartY + ((cursor.x)/ TILE_SIZE+1) +  menuNbTile*(cursor.y/ TILE_SIZE+1);
            if(cursor.tileID>=MAX_TILES)
            {
                cursor.tileID=MAX_TILES-1;
            }
            input.copy=0;
            }
    1---Donc voilà, mon soucis c'est que j'ai un décalage lorsque je choisi ma tile
    exemple: je choisi la tile n°3, et j'obtient la tile n°65, si je choisi la 6,l'obtient la 130.
    Le décalage est donc une valeur constante, que j'ai cherché et qui se trouve être la largeur de l'écran(SCREEN_WIDTH).
    2---Mais là ou cela devient un peu frustrant,c'est que si je descend la souris (cursor.y),un autre décalge de -1 pixel sur cursor.x et cursor.y se met en place à chaque fois que je descend cursor.y de une TILE_SIZE.

    Normalement, enfin pour moi il me semble ne pas avoir oublier de rattraper mon pixel de déport.
    Si quelqu'un comprend mes explications, je veux bien un peu d'aide

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Comme ca, je ne vois pas dans ton code l'erreur.

    Quand un problème n'est pas quelque part, il est ailleurs.
    Vu que tu as identifié la valeur de l'erreur, cherche si tu ne ferais pas une conversion en trop ou en manque.

    Par exemple, utiliser la distance (en pixels) comme index de la tuile, ce qui serait signe que tu a oublié de diviser par la taille de la tuile ou par le décalage d'une tuile à la suivante (dans la liste).

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Par défaut
    Bonjour,

    Fais quelques "printf" judicieux de tes variables de position pour pister le problème ...

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Salut leternel, merci pour avoir répondu.

    C'est ce que je fais, je cherche, depuis deux jours je fais des tests. J'ai également essayé de mettre mon menu à gauche,à partir de x=0 mais le décalage entre ma tile voulue et celle choisi était égale à 185, une valeur vraiment bizarre, mais je tombais pile sur l'affichage, hors là je n'ai pas encore identifié la valeur exacte, vu que j'ai encore mon décalage lorsque je choisi ma tile n°200 ou plus le décalage est de environ 16 pixels je pense, donc la moitié de ma tile.j'ai 256 tiles....

    C'est sûrement ma fonction de calcul de coordonnées qui pose problème, enfin je pense..

    Comment ça des "printf", pour renvoyer quoi?

  5. #5
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Bonjour,

    Fais quelques "printf" judicieux de tes variables de position pour pister le problème ...
    Bonjour,
    je dirais même plus, c'est l'occasion idéale pour commencer à utiliser un debugger

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Salut et ok, i'm ready kwariz

    Je ne me suis jamais penché dessus encore, en quoi est-ce qu'il va m'aider et justement pour ce problème?

    merci de vos réponses

  7. #7
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    L'idée de base (que ce soit avec les printf ou le debugger) est de pouvoir suivre lors du déroulement du programme les valeurs prises par tes variables.
    Tu as des doutes sur quelques fonctions ? Tu insères un breakpoint, lors de l'exécution ton programme s'arrêtera et tu pourras à loisir étudier l'évolution de différentes variables avec une exécution pas à pas ...
    Tout va dépendre de ton environnement (os, ide, compilo, etc ...) mais cela ressemble toujours à ça : on exécute pas à pas pour cibler toujours plus précisément l'origine du (ou des) bug jusqu'à le trouver.

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    j'ai windows 7 et je bosse avec code block

    Ok, j'ai saisi le principe du printf du coup , mais je suis un peu perdu

  9. #9
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Je ne connais pas CB, mais en supposant que tu utilises gcc pour compiler un bon point de départ pourrait être Debugging with Code::Blocks. Google fournit pas mal de liens.

    Savoir utiliser le debugger c'est vraiment un plus, en fait c'est même indispensable quand on développe.

  10. #10
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    ok bon apparemment je vais devoir l'utiliser, donc apprendre. Je reviendrais plus tard mettre résolu dans le meilleur des cas.

    Juste avant, le debugger ne sert-il pas lors des plantages uniquement?

  11. #11
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Ton programme plante puisqu'il ne fait pas ce qu'il est censé faire : il y a un bug, il faut donc débuguer
    Il ne faut pas penser au debugger uniquement lorsque l'os t'insulte.
    Dès que tu as besoin de comprendre ce qui se passe dans une portion de code -> debuger

  12. #12
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    L'os m'insulte maintenant,

    avant je n'avais pas mis le mode debug, il n'y avait que release.
    Mais je n'ai pas la fenêtre qui apparait avec les erreurs.

  13. #13
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    oh oh ... tu changes les options de compilations et l'os t'insulte ? pas bon signe

    Que te dit l'os ?

  14. #14
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Je ne sais pas trop ce que j'ai fait, mais j'ai une erreur sur sdl_ttf.dll

    #0 0071109A TTF_OpenFontIndexRW() (D:\Program Files\CodeBlocks\sdl\lib\SDL_ttf.dll?)

  15. #15
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Il te manque une bibliothèque ?
    Tu as fait quoi comme modif ?
    Tu n'as pas d'autres messages ?

    Ce sont les questions qu'un habitué de CB te posera (sans doute) pour pouvoir t'aider à avancer.

  16. #16
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    C'est sur que avec un habitué cela sera plus facile, mais pour l'instant il n'y a que ici que les réponses arrivent.

    Mes modifications, je suis aller dans properties, et j'ai créé un fichier debug, comme il y avait au début, sauf que quand je l'ai fait, même en release mon programme ne fonctionnait plus, alors j'ai supprimé le fichier debug,mais il ne fonctionne plus, sa va??

  17. #17
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Tu as fait comme dans les tutos ?

    Le build ne donne pas de messages d'erreurs ?
    En créant la version debug tu as bien gardé les mêmes autres options que pour la version release ?
    Tu as lancé une exécution du programme ?

  18. #18
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Il me semble avoir suivi à la lettre le tuto, le debuger réécris quelque chose après son passage??

    Parceque j'ai pris mon prog et je l'ai remis dans un nouveau projet, même problème, mon prog ne fonctionne plus.

    Mis à part le soit disant problème de sdl_ttf.dll, non, je n'ai rien d'autre

    oui j'ai lancer une execution après, c'est popur cela que je dis qu'il ne fonctionne plus maintenant.

  19. #19
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Et CB ne t'intique pas où l'exécution s'arrête ?
    Si tu n'as qu'un source poste le ... je peux essayer de voir ce qui cloche.
    Si tu continues à avoir des problèmes en mode debug essaye le forum CB.

  20. #20
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Tu as posté ton code, puis effacé le message. J'ai cependant réussi à le compiler sans erreurs, juste des warnings sans trop d'importance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    input.c: In function ‘update’:
    input.c:182:12: warning: unused variable ‘j’ [-Wunused-variable]
    input.c:182:9: warning: unused variable ‘i’ [-Wunused-variable]
    main.c: In function ‘main’:
    main.c:6:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
    main.c:6:26: warning: unused parameter ‘argv’ [-Wunused-parameter]
    Pour lier l'exécutable il faut apparemment juste les bibliothèques sdl, SDL_ttf et SDL_image ...

    Je suppose donc qu'il s'agit d'un problème de configuration de CB si tu n'arrives plus à le lancer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Passer mon menu déroulant au dessus du reste !
    Par u115rcu dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 17/03/2008, 22h01
  2. Changer la valeur de mon menu déroulant
    Par cdevl32 dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2008, 21h24
  3. Problème de compatibilité pour mon menu déroulant
    Par tidus_6_9_2 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 29/01/2008, 14h29
  4. Mon menu déroulant ne se ferme pas lorsqu'on quitte le champ
    Par sweety107 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2007, 19h41
  5. Mon menu déroulant "wizz" sous IE
    Par koskoz dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/06/2007, 11h10

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