Asmodean | Bonsoir tout le monde,
Je viens de tomber sur un os plutot gênant. Voila le tableau...j'ai une classe qui a un booleen en protected et un tableau d'un autre classe en private. Cette dernière peut donc accéder au booleen et verifier sa valeur... Le probleme c'est qu'avant de lancer une fonction x dans une fonction y (toutes deux de la deuxieme classe) j'affiche la valeur de ce booleen et juste a l'entrée de y je l'affiche aussi...et la suprise le booleen s'est inversé.
Voila le code si ca peut aider:
Mes deux classes
Code :
- class Board : public QLabel {
- public:
- Board( bool aiSet = false, int sizeOthellier = 0, QWidget *parent = NULL );
- void resetBoard();
- void initCases();
- void putTileBoard( int x,int y,tile color );
- int getSize(){ return size; };
- bool getAi(){ return isAi; };
- void setAiBoard( bool isSet ){};
- tile getOthellierTile(int x,int y);
- protected:
- QPixmap *background;
- QPixmap *whitePiece;
- QPixmap *blackPiece;
- bool isAi,waitingComp;
- private:
- Case ** tiles;
- int size;
- QPixmap *boardImage;
- QLabel *playZone;
- QVBoxLayout *layout;
- QGridLayout *grid;
- };
- class Case : public Board {
- Q_OBJECT
- public:
- Case( QWidget *parent = NULL );
- tile getTile(){ return value; };
- void setTile( tile newValue, bool beginning = false);
- void setCoord(int x,int y);
- void setParent(QWidget *parent);
- public slots:
- void setWhite();
- void setBlack();
- void updateTile( bool reset = false );
- signals:
- void clickedCase(int coordX,int coordY);
- protected:
- void mousePressEvent(QMouseEvent *event);
- void mouseReleaseEvent(QMouseEvent *event);
- private:
- tile value;
- QPoint *pressed;
- bool erase;
- int coordX,coordY;
- QWidget *parent;
- };
|
Mes fonctions x et y:
Code :
- void Board::putTileBoard( int x, int y, tile color ){
- if( x>=0 && y>=0 && x<size && y <size){
- (isAi)?debug("true" ):debug("false" );
- (tiles[x][y]).setTile(color,false);
- }
- else
- debug("The programme try to modify a forbidden adress in function Board::putTileBoard" );
- }
- void Case::setTile( tile newValue, bool beginning){
- (isAi)?debug("true" ):debug("false" );
- value = newValue;
- if(newValue == WHITE ){
- if(!beginning && isAi) QTimer::singleShot(1000, this, SLOT( setWhite() ));
- else{
- setWhite();
- }
- }
- else if(newValue == BLACK){
- setBlack();
- }
- else clear();
- }
|
Je me sens un peu désemparé face a ce probleme.... |