Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Bonjour le Janvier 14, 2020, 08:15:39 pm

Titre: Duplication d'objet
Posté par: Bonjour le Janvier 14, 2020, 08:15:39 pm
Bonjour bonsoir :)
J'ai découvert SFML depuis peu de temps et je ne trouve toujours pas comment utiliser plusieurs fois un même objet,
je m'explique, dans l'exemple d'un jeu pacman j'aimerais utilise le même objet, script etc pour faire les points.
Je ne trouve malheureusement toujours pas comment faire  :(
Merci de votre aide :)
Titre: Re: Duplication d'objet
Posté par: Laurent le Janvier 15, 2020, 08:08:23 am
C'est très très vague comme problème. Qu'as-tu déjà fait ? Sur quoi bloques-tu précisément ?
Titre: Re: Duplication d'objet
Posté par: Bonjour le Janvier 15, 2020, 01:32:17 pm
Merci de la réponse.
J'ai déjà crée l'objet par exemple un RectangleShape, je lui donne ses paramètres comme sa taille et un script,
mais plutôt que de faire 10 RectangleShape et 10 scripts, je voudrais utiliser le même objet, dans mon cas juste modifier la position du rectangle

Edit:
j'ai vu de gens dire
objet.setPosition(position1, position2);
window.draw()
objest.setPosition etc,
mais je ne trouve pas comment faire pour avoir les deux objets et leur hitbox (si je peux l'appeller comme ça) à deux endroit différent, puisque avec window.draw je le bouge tout l'objet mais sans le dupliquer.
Titre: Re: Duplication d'objet
Posté par: Laurent le Janvier 15, 2020, 02:37:03 pm
En effet tu pourrais dessiner plusieurs fois l'objet comme ça, mais ce n'est pas vraiment la solution "préférée". SFML utilise des objets dessinables (et non des fonctions de dessin) justement pour que chaque objet affiché ait sa propre existence et ses propriétés dans le programme.

Si tu veux juste factoriser l'initialisation d'une entité tu as deux façons très simples :

sf::RectangleShape r1;
//configure r1...

auto r2 = r1;
r2.setPosition(...);

auto r3 = r1;
r3.setPosition(...);

sf::RectangleShape makeRectangle(sf::Vector2f position)
{
    sf::RectangleShape r;
    // configure r...
    r.setPosition(position);
    return r;
}

auto r1 = makeRectangle(...);
auto r2 = makeRectangle(...);
auto r3 = makeRectangle(...);
Titre: Re: Duplication d'objet
Posté par: Bonjour le Janvier 15, 2020, 07:54:50 pm
Désolé pour ma réponse tardive...
Et merci de la votre.
Je suis désolé de vous embêtez encore, mon script pour détecter les collisions est le suivant:

if (objet1.getGlobalBounds().intersect(objet2.getGlobalBounds()

Pensez-vous que mon script est bon et que je dois chercher dessus, ou faut-il un autre script ?
Titre: Re: Duplication d'objet
Posté par: Laurent le Janvier 16, 2020, 08:34:00 am
Première chose, avec les langages compilés comme le C++, on ne parle pas de script, mais de code ;)

Et... tu utilises la fonction sf::FloatRect::intersect, ok, que puis-je te dire d'autre ? Ca marche, tu en es content ? Ou bien il y a un souci ? Encore une fois, précise ta question.

Il ne faut pas avoir peur d'essayer des choses, d'écrire du code, de tester par toi-même. Le pire qui puisse arriver c'est que ça ne fonctionne pas, et que tu apprennes des choses en te corrigeant ;)
Titre: Re: Duplication d'objet
Posté par: maicleusa le Avril 01, 2024, 04:58:25 am
This post is a very detailed review of an important topic. I feel like I have improved my knowledge after reading it. fnf (https://fnfgo.io)