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

Auteur Sujet: Propriété :hover sur une tile  (Lu 3467 fois)

0 Membres et 1 Invité sur ce sujet

Bilt

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Propriété :hover sur une tile
« le: Juillet 05, 2014, 10:21:53 pm »
Bonjour à tous et à toutes, j'ai réussi à réaliser une petite grille pour un éditeur de map à présent je souhaiterai effectuer une propriété similaire à un :hover en css. Pour cela j'ai imaginé une méthode dans la class Tile présent dans le fichier joint.
Merci de votre aide à tous :)
Amicalement Bilt

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Propriété :hover sur une tile
« Réponse #1 le: Juillet 05, 2014, 10:28:03 pm »
Et ta question / ton problème est.... ?
Laurent Gomila - SFML developer

Bilt

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Re : Propriété :hover sur une tile
« Réponse #2 le: Juillet 05, 2014, 10:30:52 pm »
Je ne sais pas comment mettre en place ces propriétés avec mon architecture j'excelle pas en programmation C++ ^^"

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Propriété :hover sur une tile
« Réponse #3 le: Juillet 05, 2014, 10:50:26 pm »
Et donc il faut qu'on télécharge ton code, qu'on le décompresse, qu'on le regarde en détail, qu'on le comprenne, et qu'on te ponde une solution sur mesure ? Les fourms c'est pas vraiment fait pour ça...

Décris-nous précisément ce qui te pose problème, ce que tu as déjà essayé, voire, si c'est pertinent et faisable, un code complet et minimal qui synthétise tout ça. En tout cas en nous jetant à la tête ton code agrémenté d'un "je veux implémenter X, merci" tu n'auras pas grand chose en retour ;)
Laurent Gomila - SFML developer

Bilt

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Re : Propriété :hover sur une tile
« Réponse #4 le: Juillet 05, 2014, 10:58:02 pm »
Je vais tenter de schématiser le fonctionnement de l'application.
La fonction main contient deux lignes comme dans le livre "SFML GAME DEVLOPMENT" soit donc :
MapEditor mapEditor; // Ici on fait une instance de l'éditeur de map
mapEditor.exec(); // On démarre l'éditeur de map
 
La classe MapEditor contient une classe Map qui elle même se charge pour le moment juste de l'affichage d'une map à partir d'un tableau à deux dimensions de Tile (une classe qui hérite de RectangleShape).
Mon problème est comment faire le lien pour détecter quel tile on survole avec la souris ?
Je sais réellement pas où placer la méthode qui serait charger de cela.
Voilà j'ai vraiment tout détaillé :)
Bilt

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re : Propriété :hover sur une tile
« Réponse #5 le: Juillet 05, 2014, 11:56:20 pm »
Il te suffit de faire un calcul tout bête pour savoir où se trouve ta souris par rapport aux tuiles.

rayX = worldPos.x / TAILLETUILE;
rayY = worldPos.y / TAILLETUILE;

Tu récupères la position de la souris que tu divises par la taille de ta tuile et tu obtiens l'ID de ta tuile ;)

Bilt

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Re : Propriété :hover sur une tile
« Réponse #6 le: Juillet 06, 2014, 01:42:46 am »
Je travaille dans un tableau à deux dimensions je vois pas comment mettre en place ton système.
Sinon de mon côté j'ai avancé et j'ai trouvé :)
void Map::hover(sf::RenderWindow& window){
    for(int i=0;i< 5;i++){
        for(int j=0;j<5;j++){
            if(sf::Mouse::getPosition(window).x >= tiles[i][j].getPosition().x && sf::Mouse::getPosition(window).y >= tiles[i][j].getPosition().y && sf::Mouse::getPosition(window).x <= tiles[i][j].getPosition().x+64 && sf::Mouse::getPosition(window).y <= tiles[i][j].getPosition().y+64)
                tiles[i][j].setFillColor(sf::Color::Cyan);
        }
    }
}
 

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Propriété :hover sur une tile
« Réponse #7 le: Juillet 06, 2014, 09:16:13 am »
Là tu testes toutes tes tuiles alors que tu sais à l'avance laquelle se trouve sous la souris. Ca ne sert à rien.

En effet si tes tuiles sont organisées en une grille 2D régulière, et font 64x64, alors c'est la tuile tiles[souris.x / 64][souris.y / 64] qui se trouve sous la souris. Ce qui est très précisément la réponse qui t'a été donnée précédemment ;)
Laurent Gomila - SFML developer