C'est une technique d'encoder toutes les directions sous la forme de tableaux - chaque paire de di[i],dj[i]
est une direction différente.
Si nous nous imaginons que nous avons une pièce à un endroit x,y, et nous voulons ajouter sur son x et sa valeur y de le déplacer vers un emplacement situé à proximité, 1,0 pour l'est, -1,0 est à l'ouest, 0,1 sud, 0,-1 est au nord et ainsi de suite.
(Ici, je l'ai dit en haut à gauche est de 0,0 et en bas à droite est de 4,4 et montré ce que le déplacement de chaque index des tableaux fera à partir du point central, X, à 2,2.)
.....
.536.
.1X0.
.724.
.....
La façon dont il est mis en place, si vous n' ^1
(^
étant XOR au niveau du bit) sur l'index, vous obtenez la direction opposée - 0 et 1 sont opposés, 2 et 3 sont opposés et ainsi de suite. (Une autre façon de le configurer, c'est aller dans le sens horaire en commençant au nord - ensuite, ^4
vous obtient le sens inverse.)
Maintenant, vous pouvez tester toutes les directions à partir d'un point donné par boucler sur votre di
et dj
tableaux, au lieu de devoir écrire chaque direction sur sa propre ligne (huit au total!) (Il suffit de ne pas oublier de faire la vérification des limites :) )
diK
et djK
formulaire de tous les chevaliers des directions au lieu de toutes les directions adjacentes. Ici, ^1
va retourner le long d'un axe, ^4
donnera à l'opposé du chevalier de sauter le pas.
.7.6.
0...5
..K..
1...4
.2.3.