C++ - SFML

a marqué ce sujet comme résolu.

bonjour,

j’ai utilisé la fonction sf::RectangleShape() de SFML pour définir une forme de nom "joueur" dans la classe Player{} que j’ai crée. En tant que RectangleShape, tout Player{] peut se voir défini une position avec joueur.setPosition(int x, int y).

J’ai défini ensuite deux Players, Player joueur1 et Player joueur2, auxquels je veux attribuer spécifiquement une position (une position différente pour chaque instance).

Comment faire pour appliquer la fonction SetPosition() à joueur1 et joueur2?

Merci d’avance.

Salut,

Il va falloir être un peu plus précis et montrer la portion de code concerné, je ne comprends pas où se situe ton problème et donc quelle est la réponse que tu attends

Actuellement j’ai envie de dire :

Player p1;
Player p2;
p1.setPosition(2, 3);
p2.setPosition(5, 7);

Mais je ne crois pas que ce soit ce que tu cherches

Aussi, tu as l’air de sous-entendre que Player hérite de sf::RectangleShape, je ne pense pas que ce soit une bonne idée d’utiliser l’héritage pour ça et préférer la composition. Ton joueur n'est pas un rectangle, mais l'une de ses caractéristiques est sa forme rectangulaire.

+1 -0

Bonjour, Merci pour ta réponse, mais j’ai trouvé comment faire, via un accesseur, qui prend en paramètre la position voulue, et va directement la modifier dans les variables privées du joueur.

void Player::setPosition(sf::Vector2f pos){

    joueur->setPosition(pos);

}

Ah oui ok, je comprends ce que tu expliquais dans ton premier message

une forme de nom "joueur" dans la classe Player{}

Si je peux me permettre, je trouve que "joueur" est un mauvais nom pour la variable membre de type sf::RectangleShape, mais donc je vois que tu utilises bien la composition et pas l’héritage :)
Par cette confusion, j’ai cru que c’était l’instance de Player que tu avais appelé "joueur", d’autant que tu as vraiment appelé tes instances "joueur1" et "joueur2". Dans le code, c’est dans des contextes différents, mais dans un message de forum c’est vite fait de confondre.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte