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 :

Valeur reste inchang�e


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par d�faut Valeur reste inchang�e
    Bonjour, il se trouve que j'ai un probl�me assez g�nant. Bien que le programme soit loin d'�tre fini je vous donne le code afin que vous puissiez me dire d'ou provient l'erreur (du moins j'espere). Le code est tr�s long � lire donc je vous conseille de lire que les parties "importantes". Merci de votre aide.


    Voici mon main

    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
    #include "Menu.h"
    
    int main()
    {
            initialisations();
    	Rectangle tmp(0,0,SCREEN_W/2,SCREEN_H/2, makecol(100,100,100));
    	Rectangle fond_rect(0,0,SCREEN_W-1,SCREEN_H-1,makecol(255,255,0));
    	Menu_Object img(2,0,tmp,true);
    	Menu_Object fond(2,1,fond_rect);
    	std::vector<Menu_Object> vect;
    	vect.push_back(fond);
    	vect.push_back(img);
    	Menu menu(vect);
    	menu.get_menu_object(1).set_visible(false);
            if(menu.get_menu_object(1).get_visible())
                   allegro_message("error");
            show_mouse(screen);
            boucle(menu,NULL);
            return 0;
    }
    Voici ma classe rectangle (je vous la donne mais je ne pense pas que se soit le probl�me.
    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
    #ifndef DEF_RECTANGLE
    #define DEF_RECTANGLE
     
    #include <allegro.h>
    #include <string>
    #include "Structures_menu.h"
     
    class Rectangle
    {
    	private :
    		struct Emplacement position;
    		BITMAP*fond;
    		int col_fond;
    		bool redim;
    		int col_bordure;
    	public :
    		Rectangle(double,double,double,double,int, BITMAP*, int=-1);
    		Rectangle(double,double,double,double, BITMAP*, int=-1);
    		Rectangle(double,double,double,double,int, char*, int=-1);
    		Rectangle(double,double,double,double, char*, int=-1);
    		Rectangle(double,double,double,double,int, std::string, int=-1);
    		Rectangle(double,double,double,double, std::string, int=-1);
    		Rectangle(double,double,double,double, int=makecol(0,0,0), int=-1);
    		Rectangle();
     
    		bool is_in_rectangle(double,double);
    		bool is_in_rectangle(int,int);
    		BITMAP*get_bitmap_de_fond();
    		bool set_bitmap_de_fond(BITMAP*,bool);
    		bool set_bitmap_de_fond(char*,bool);
    		bool set_bitmap_de_fond(std::string, bool);
    		int get_col_fond();
    		bool set_col_fond(int);
    		bool get_redim();
    		bool set_bordure_col(int);
    		int get_bordure_col();
    		bool move_rectangle(int nb, std::string );
    		bool move_rectangle(int nb, char* );
    		bool set_rectangle(struct Emplacement);
    		Emplacement get_pos();
    };
    #endif
    Voici ma classe Menu_Object
    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
     
    #ifndef DEF_MENU_OBJECT
    #define DEF_MENU_OBJECT
     
    #include <vector>
    using std::vector;
     
    #include <allegro.h>
    #include "Rectangle.h"
     
     
    class Menu_Object
    {
    	protected :
    		int type;
    		bool selection;
    		int ordre;
    		bool visible;
    		Rectangle zone;
    	public :
    		Menu_Object(int,int,Rectangle&,bool=true);
     
    		int get_ordre();
    		int get_type();
    		void set_ordre(int);
    		bool get_selection();
    		void set_selection(bool);
    		bool get_visible();
    		void set_visible(bool);
    		Rectangle get_rectangle();
    		virtual void dessiner();
    };
     
    #endif

    Je vous donne aussi son .cpp

    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
    #include "Menu_Object.h"
    #include "Rectangle.h"
    #include <algorithm>
     
    Menu_Object::Menu_Object(int type, int ordre, Rectangle& rect, bool visib)
    {
    	this->type=type;
    	this->ordre=ordre;
    	zone=rect;
    	visible=visib;
    }
     
    int Menu_Object::get_ordre()
    {
    	return ordre;
    }
    int Menu_Object::get_type()
    {
    	return type;
    }
    void Menu_Object::set_ordre(int ordre)
    {
    	this->ordre=ordre;
    }
    bool Menu_Object::get_selection()
    {
    	return selection;
    }
    void Menu_Object::set_selection(bool setting)
    {
    	selection=setting;
    }
    bool Menu_Object::get_visible()
    {
    	return visible;
    }
     
    void Menu_Object::set_visible(bool visible)
    {
    	this->visible=visible;
    }
     
    Rectangle Menu_Object::get_rectangle()
    {
    	return zone;
    }
     
     
    void Menu_Object::dessiner()
    {
    	if(visible==false)
    		return ;
    	if(zone.get_bitmap_de_fond()==NULL)
    		rectfill(screen,zone.get_pos().x1,zone.get_pos().y1,
    						zone.get_pos().x2,zone.get_pos().y2,zone.get_col_fond());
    	else
    	{
    		if((zone.get_redim()==false)||(zone.get_col_fond()<0))
    		{
    			masked_stretch_blit(zone.get_bitmap_de_fond(),screen,0,0,
    								zone.get_bitmap_de_fond()->w,zone.get_bitmap_de_fond()->h,
    								zone.get_pos().x1,zone.get_pos().y1,
    								zone.get_pos().x2-zone.get_pos().x1,
    								zone.get_pos().y2-zone.get_pos().y1);
    		}
    	}
    }

    Et pour finir je vous donne la classe Menu

    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
    #ifndef DEF_MENU
    #define DEF_MENU
     
    #include <allegro.h>
    #include "Menu_Object.h"
     
    class Menu
    {
    	private :
    		vector<Menu_Object> MyMenu;
    		bool(*fc_to_exit)(Menu&, void*);
    		void(*exit_function)(Menu,void*);
    	public :
    		Menu(vector<Menu_Object>, void(*exit_function)(Menu,void*)=NULL);
    		Menu(Menu_Object, void(*exit_function)(Menu,void*)=NULL);
    		void set_fc_to_exit(bool(*)(Menu&,void*));
    		bool do_fc_to_exit(void*);
    		void add_object(Menu_Object);
    		int get_num_objects();
    		Menu_Object& get_menu_object(int);
    		void exit_fc(void*param);
    		bool is_on_object(int,double, double);
    		void dessiner();
    };
    #endif
    Je rajoute get_menu_object :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Menu_Object& Menu::get_menu_object(int object)
    {
    	if((object>=MyMenu.size())||(object<0))
    	{
    		allegro_message("error get_menu_object");
    		return MyMenu[0];
    	}
    	Menu_Object reference=MyMenu[object];
    	return reference; 
    }
    Et voila.

    Et le probl�me s'est qu'il m'affiche le message error (voir ligne rouge dans le main).

    Merci pour votre aide.

  2. #2
    Membre �m�rite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par d�faut
    C'est quoi l'erreur exacte?

  3. #3
    Membre �clair�

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par d�faut
    Il rentre dans le If ce qui signifie que le set_visible � �chou�

  4. #4
    Mod�rateur
    Avatar de bruno_pages
    Homme Profil pro
    ing�nieur informaticien � la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : ing�nieur informaticien � la retraite
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par d�faut
    Bonsoir,

    je ne connais pas du tout la couche graphique que vous utilisez, mais est-ce que les index 1 ne devraient pas plut�t �tre 0, comme cela :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    menu.get_menu_object(0).set_visible(false);
    if(menu.get_menu_object(0).get_visible()) ...
    ?

    [edit]j'ai suppos� que le fond et l'image sont un couple obligatoire et non deux objets s�par�s[/quote]
    Bruno Pag�s, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non � jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Membre �clair�

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par d�faut
    0 se serait pour changer l'objet fond alors que la je souhaite rendre l'objet img invisible. Ce sont 2 objets s�par�s qui servent pour un test d'une autre partie du programme

  6. #6
    Mod�rateur
    Avatar de bruno_pages
    Homme Profil pro
    ing�nieur informaticien � la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : ing�nieur informaticien � la retraite
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par d�faut
    ok, d�sol�, la supposition que j'avais plac� dans l'[edit] est donc fausse

    est-ce que set_visible() retourne une valeur indiquant si la chose c'est bien pass�e (et donc n'est pas void set_visible(...))?
    Bruno Pag�s, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non � jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 10
    Dernier message: 01/02/2015, 11h55
  2. [D�butant] Attendre tant que l'etat d'un textbox reste inchang�
    Par seb28310 dans le forum VB.NET
    R�ponses: 1
    Dernier message: 31/01/2015, 23h55
  3. [Lazarus] [Mac OS] Le curseur reste inchang� � la sortie d'un TMemo
    Par gibet_b dans le forum Lazarus
    R�ponses: 3
    Dernier message: 14/12/2012, 22h40
  4. Valeur variable reste inchang�e
    Par gator dans le forum Langage
    R�ponses: 4
    Dernier message: 18/11/2009, 19h05
  5. R�ponses: 11
    Dernier message: 20/09/2007, 13h31

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