Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: bungee le Février 13, 2013, 01:27:00 pm

Titre: Clic souris sur un RectangleShape
Posté par: bungee le Février 13, 2013, 01:27:00 pm
Bonjour  :)

Je suis assez novice en c++ et SFML, mais pour m’entraîner un peu, j'ai décidé de développer un démineur  ::)

Après avoir initialiser ma grille avec des mines placées au hasard, j'en viens à la gestion des clic souris sur mes cases.
J'ai utilisé des RectangleShape pour représenter mes cases et je voudrais connaitre le meilleur moyen de savoir quelle case a été cliquée.

Dois-je récupérer les coordonnées du clic et parcourir mes cases jusqu'à trouver les coordonnées qui correspondent ?

N'y-a-t-il pas un moyen plus simple ? comme lié l'event directement au RectangleShape ?

Je vous remercie d'avance pour vos conseils !  ;D
Titre: Re : Clic souris sur un RectangleShape
Posté par: Laurent le Février 13, 2013, 01:58:52 pm
Encore plus simple : puisque tes cases forment une grille régulière et alignée sur les axes, tu as l'indice X et Y de ta case directement avec une simple division.

int x = position_souris.x / taille_case_x;
int y = position_souris.y / taille_case_y;

case_cliquee = tableau_de_cases[x][y];

Bien entendu c'est du pseudo-code, pour te montrer l'idée. Il faut maintenant que tu adaptes ça à ton propre code.

Sinon, pour répondre à ta question, "lier un évènement à une entité" c'est vraiment pas le genre de fonctionnalité que SFML va te fournir. Ce n'est pas un moteur de jeu, juste une boîte à outils multimédia.
Titre: Re : Clic souris sur un RectangleShape
Posté par: bungee le Février 13, 2013, 02:55:21 pm
Ha !

J'ai parfaitement saisi. Cette division me permet d'accéder directement aux indices de mes cases !
Super pratique  8)

Merci Laurent !