Wieso orientierst du dich bei deiner Arbeit nicht an die eigentlichen Schachkoordinaten.
So hast du es viel einfach die Züge zu berechnen.
Nehmen wir als Beispiel, folgender Koordinatenaufbau eine Schachbrettes:
A8 / B8 / C8 / D8 / E8 / F8 / G8 / H8
A7 / B7 / C7 / D7 / E7 / F7 / G7 / H7
A6 / B6 / C6 / D6 / E6 / F6 / G6 / H6
A5 / B5 / C5 / D5 / E5 / F5 / G5 / H5
A4 / B4 / C4 / D4 / E4 / F4 / G4 / H4
A3 / B3 / C3 / D3 / E3 / F3 / G3 / H3
A2 / B2 / C2 / D2 / E2 / F2 / G2 / H2
A1 / B1 / C1 / D1 / E1 / F1 / G1 / H1
Weiß steht auf den Linien 1 und 2 - Läufer auf C1 und F1.
Nehmen wir den Läufer auf C1 und der Bauer auf D2 macht ihm Platz. Egal wie er nun zu H6 vorrückt, es ändern sich die Buchstaben in alphabetischer Reihenfolge C/D/E/F/G/H
und die Zahlen 1/2/3/4/5/6.
Die Zahlen oder Buchstaben werden also gleichermaßen erhöht, oder heruntergesetzt.
Außer bei folgenden Beispiel:
Schwarzer Läufer auf C8 möchte bei freier Bahn auf H3 ziehen. Die Zahlen werden heruntergesetzt 8/7/6 ..., aber die Buchstaben alphabetisch hochgezählt. Im Prinzip in zwei gegengesetzte Richtungen.
Mit dieser Ansicht kannst du Programmiertechnisch auch viel anfangen, denn du würdest damit sicher gut hinkommen, wenn du die Zähler in der Programmierung nutzt.
Ich weiß zwar nicht, was für eine Programmiersprache du nutzt, aber bei C++ könnte ein Teil so aussehen:
Hier zählst du z.B. den weißen Läufer von C1, dessen Zug auf H6, mittels Zähler zur auf 6. Z ist in dem Fall der Zähler und h das Ziel, also die 6.
Natürlich brauchst du noch mehr Programmcode, um den Zug zu definieren, aber wenn du dich der Herausforderung gestellt hast, bringst du bestimmt das nötige Wissen mit. Und dein Thread sieht mir auch eher aus, als suchtest du anstatt einer Programmierlösung nach einer logischen Falllösung.