def getPositionVoisine(position, direction): """ Obtient une position voisine @param position la position sur le damier @param direction direction de mouvement en diagonale sur le damier vers: Haut à Gauche, Haut à Droite, Bas à Gauche, Bas à Droite @return la position voisine ou -1 si on est en bordure du damier """ # si le numéro de ligne est pair result = { Direction.HAUT_GAUCHE: position - PositionsDamier.colonnes, Direction.HAUT_DROITE: position - PositionsDamier.colonnes + 1, Direction.BAS_GAUCHE: position + PositionsDamier.colonnes, Direction.BAS_DROITE: position + PositionsDamier.colonnes + 1, }[direction] # si le numéro de ligne est impair, une correction est necessaire numeroLigne = PositionsDamier.getNumeroLigne(position) if (Outils.estImpair(numeroLigne)): result = result - 1 # si la position est en déhors du damier, retourner -1 if (PositionsDamier.estPositionInvalide(result)): return -1 # calculer le numéro de la ligne voisine numeroLigneVoisine = PositionsDamier.getNumeroLigne(result) offsetLigne = numeroLigneVoisine - numeroLigne # la ligne de la position voisine valide se trouve une ligne # plus haut (offsetLigne = -1) # ou plus bas (offsetLigne = 1) # en bordure du damier (offsetLigne = +/- 2) if ((offsetLigne != 1) and (offsetLigne != -1)): result = -1 return result