Bonjour,
Je suis en train de coder un truc là, j'avouerais que je suis pas un As en C++, codant un peu en C et surement plus en Java. Bon, jusque là la transition se faisait plutôt agréablement, seulement je suis tombé sur un os qui me paraît bien bizarre.
Je vous en fait part :
J'ai une classe Obj qui est basiquement un objet, avec une vitesse et des coordonnées.
Une classe GameEngine qui s'occupe de mettre à jours les coordonnées d'un point selon les touches du pad.
Une classe PhysicalEngine qui n'est autre qu'une classe contenant des méthodes pour regrouper le code de modications de coordonnées des objets. (Dans le meilleur des mondes). Une instance est un attribut privé de GameEngine.
Voila le probleme : dans ma classe GameEngine, lorsque j'effectue l'appel à une méthode de PhysicalEngine pour modifier les coordonnées du point, les modifications sur l'objet ne sont pas prises en compte. Et le code de la méthode est bon (du moins je le pense), puisque si je colle le contenu de la méthode à la place de son appel, les modifications sont prises en compte.... Ca me parait tres etrange, peut-être tout simple sûrement.
Je copie çi bas le code qui serait interessant, donc si vous avez une idée, je suis preneur ! Mici !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 GameEngine.cpp // On modifie les coordonnées physicalEngine.move(object, 30);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PhysicalEngine.cpp void PhysicalEngine::move(Obj object){ object.setSpeed(object.getSpeed()*2); object.modifyPosition(0, object.getSpeed()); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Obj.c pour le plaisir void Obj::modifyPosition(int x, int y){ printf("%d ; %d\n", posX, posY); this->posX += x; this->posY += y; printf("%d ; %d\n", posX, posY); }
Partager