Bonjour, je suis actuellement en train de réaliser un petit morpion pour tester la bibliothèque SFML mais je suis bloqué sur un point qui n'a apparemment pas de rapport avec cette bibliothèque.
Je possède 3 classes: Game, Board, BoardCase. Et une énumération qui me pose pas mal de soucis, CaseState, cette énumération défini les différents états d'une case. Dans ma classe BoardCase, j'ai une méthode setState(CaseState newState), et c'est cette méthode qui ne semble pas fonctionner.
Voici l'énumération:
1 2 3 4 5 6 7 8 9 | class BoardCase{ public: enum CaseState{ ROUND, CROSS, EMPTY }; }; |
Et voici la méthode setState :
1 2 3 4 5 | void BoardCase::setState(CaseState newState){ std::cout << m_state << "-" << newState << std::endl; m_state = newState; std::cout << m_state << std::endl; } |
Lors de son appel, la console m'affiche : 2-1 puis 1. Mais une fois que j'essaye d'accéder à l'état à un autre endroit dans le code par la suite l'état est revenu sur EMPTY(2).
Voici l'appel de la fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | bool Board::onClick(sf::Vector2i posi, BoardCase::CaseState state){ std::cout << m_cases[0].getState() << std::endl; int i = 0; for(BoardCase caseB : m_cases){ std::cout << m_cases[0].getState() << std::endl; if(caseB.isTouched(posi) && caseB.getState() == BoardCase::EMPTY){ std::cout << m_cases[0].getState() << std::endl; caseB.setState(state); std::cout << m_cases[0].getState() << std::endl; return true; } i++; } return false; } |
Et l'appel de la méthode onClick :
1 | if(m_board.onClick(coor, m_turnPlayer)) |
m_turnPlayer est un attribut (BoardCase::CaseState) et il vaut CaseState::CROSS.
Merci d'avance de votre aide.