Pas de problème, on a tous le droit à l'erreur !
Ok, là j'ai compris ton problème :D
Si tu as la valeur de dx et de dy, tu as juste besoin de décrire (c'est juste des équations de droites) un "motif élémentaire". Et alors, tu enlèves dx tant que tu peux, puis dy tant que tu peux (cad tant que tu restes dans la fenêtre). Et alors, tu te retrouves dans un rectangle élémentaire correspondant à cette image:
En fait, ce n'est pas exactement ça, ce rectangle n'est pas élémentaire car il est coupé en haut, il faut que tu fasses comme s'il se prolongeait comme ça :
Maintenant, s'il est dans le rectangle 0, c'est bon, si il est dans le coin en bas à droite, il est dans la cellule 15, si il est dans le coin en haut à gauche, tu rajoutes 1 dx et 1 dy pour le mettre dans la cellule 15, s'il est en bas à gauche, 1 dx et en haut à droite 1 dy. Ensuite, tu as juste à compter combien de dx et de dy tu as retranché en tout pour retrouver la cellule de départ !
Le mieux, c'est que tu n'as plus à gérer les "cas particuliers" de déplacement en diagonale, puisque tu es soit dans le réseau de 0, soit dans celui de 15 et tu n'as plus qu'à ajouter un nombre fixe (29 je crois) de cellId pour ajouter dy.