Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Duplication d'objet  (Lu 2612 fois)

0 Membres et 1 Invité sur ce sujet

Bonjour

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Duplication d'objet
« 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 :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Duplication d'objet
« Réponse #1 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 ?
Laurent Gomila - SFML developer

Bonjour

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re: Duplication d'objet
« Réponse #2 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.
« Modifié: Janvier 15, 2020, 02:05:18 pm par Bonjour »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Duplication d'objet
« Réponse #3 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(...);
Laurent Gomila - SFML developer

Bonjour

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re: Duplication d'objet
« Réponse #4 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 ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Duplication d'objet
« Réponse #5 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 ;)
Laurent Gomila - SFML developer