Salut darknife,
A priori, on est dans la même promo ^^ (Iut de Montpellier).
Donc pour passer des "coordonnées pixels en coordonnées tableau",
voilà ma fonction:
Code :
- function Pixel2Indice(coord:in integer) return integer is
- calc:integer:=((coord-GrilleBaseX)/GrilleLinesDim)+1;
- begin
- if calc in 1..9 then
- return calc;
- else
- return 0;
- end if;
- end Pixel2Indice;
|
où:
GrilleBaseX = décalage entre ta grille de sudoku et ton canvas (mon canvas fait 10 pixels de plus que ma grille)
GrilleLinesDim = dimension d'une case de ta grille (pour moi elles font 40x40 pixels)
Je n'ai qu'une seule procédure pour les coordonnées X et Y, mais il se peut que tu es besoin de 2, si jamais ta grille n'a pas le même décalage en X et Y par rapport au canvas, ou si tes cases ne sont pas carrées.
Donc après il te suffit de passer les coordonnées à cette fonction:
caseX:=Pixel2Indice(pt.x);
caseY:=Pixel2Indice(pt.y);
Et tu as ta case (penser à inverse pour ton tableau, ça sera la case Grille(caseY,caseX) de ton tableau).
Have fun!
Edit: j'oubliais ! Ca retourne 0 si le clic est dans le canvas mais en dehors de la grille de sudoku.
Message édité par FloBaoti le 02-06-2007 à 21:03:06