slt a tous !!
je dois dans le cadre d'une embauche faire un puzzle en delphi et je suis un peu perdu !!
quelqu'un peut il m'aider ??
merci d'avance !!
Version imprimable
slt a tous !!
je dois dans le cadre d'une embauche faire un puzzle en delphi et je suis un peu perdu !!
quelqu'un peut il m'aider ??
merci d'avance !!
Donc, en gros, on te demande de savoir manipuler un TBitmap, qui sera ton image complête.
Et plusieurs autres qui seront des bouts de ton premier, découpés en morceaux carrés ou rectangulaires.
Il va falloir que tu te penches donc sur l'utilisation de leur propriété Canvas , qui possède une méthodes, pour copier une partie d'image dans une autre image.
Bonjour,
Vrai puzzle découpé ou quadrillage de petits rectangles ?
un vrai puzzle !! de plus on me demande de gerer la rotation des images ainsi que la detection du puzzle fini !!
merci d'avance !!
c'est pour une embauche à très haut niveau, ou c'est juste pour te décourager ?
Pas simple, pour un test d'embauche !!!Citation:
Envoyé par kader78190
8O
Et puis tu peux te mettre à prier pour que les gars qui t'on proposé ce test ne scrutent pas le forum :mrgreen:
merci pour les encouragements les gars !! lol !!
tu sais je ne m'inquiete pas pour ça j'ai ete suffisement honete avec eux en leur disant bien que je n'etais pas un expert delphi !!et je pense que tous les moyens sont bons pour arrivé a faire cette apli ! le tout et de la faire !!
Bonjour,
En fait, le problème n'est pas tellement Delphi (quand on connait), mais il faut d'abord définir l'algorithme avant d'implémenter.
Je suggèrerai pour avoir des pièces qui se déplacent et qui tournent :
- de définir les pièces comme des polygones,
- de déterminer leur pseudo-centre gravité (calculé comme la moyenne des cood des points pondérés par la longueur des 2 cotés de par et d'autre du point)
- d'associer au sommet leur coordonnées polaires par rapport à ce centre de gravité.
- de mélanger les piéces en les disposant aléatoirement dans une grille avec une rotation aléatoire.
Ensuite, on doit pouvoir déplacer la pièce pour la poser sur la table, la faire tourner puis valider sa position.
C'est là que ca se corse : il faut soit interdire la superposition ou, de préférence, marquer les pièces qui se supperposent (par exemple par une croix rouge sur le centre de gravité de la pièce.
Pour determiner la superposition de 2 pièces A et B, on vérifiera que chacun des sommets de la pièce A n'est pas à l'intérieur de la pièce C (on peut trouver l'algorithme pour déterminer si un point est dans un polygone sur des posts du forums).
Comme il faut faire attention aux effets dues aux erreurs de précision, je recommanderai de calculer la superposition, non pas sur les coordonnées des sommets, mais sur une pièce homothétique (ce qui est facile avec les coordonées polaires) représentant 95% de la pièce initiale faux, voir post plus bas. Après tout, c'est comme si on forçait un peu.
Il faut aussi faire des corrections automatiques d'orientation et de position :
1) détecter si la pièce posé est bien orientée : si moins de 2 ou 3° d'écart par rapport à l'orientation de départ on réoriente (les ptits malins pourront se servir de cette fonctionnalité pour détecter l'orientation de la pièce:( .
2) ajuster les positions relatives des pièces voisines correctement jointes : Là c'est moins évident parce que les ajustements peuvent se propager ....
Si l'algo correspond au problème, il faudra éventuellement faire des posts plus spécifiques pour l'implémentation en Delphi des rotations et du déplacement d'une image au-dessus d'une autre avec une partie transparente.
Rebonjour,
Si on affiche dès le départ dans le puzzle à réaliser les contours des pièces, c'est déjà beaucoup plus simple puisque la position de la pièce déplacée pourra être automatiquement être confondues avec la position réelle : donc, plus de problème d'ajustement des positions.
ReRe,
j'ai écrit :
L'homothétie est une mauvaise solution pour des pièces biscornues. Il faut juste admettre qu'il n'y a superposition que si :Citation:
Comme il faut faire attention aux effets dues aux erreurs de précision, je recommanderai de calculer la superposition, non pas sur les coordonnées des sommets, mais sur une pièce homothétique (ce qui est facile avec les coordonées polaires) représentant 95% de la pièce initiale faux, voir post plus bas. Après tout, c'est comme si on forçait un peu.
- un des sommets Si de A est à l'intérieur de B,
- la distance de Si au contour de B est supérieure à une marge.
merci !!
je m'etais justement dirigé vers cette voie car comme tu me le fais remarquer c'est plus simple de travaillé avec des contours predefinie !!
je suis justement entrain de decoupé une image avec photoshop !!
et de realisé un calque avec les contours des pieces !!