La funzione invalid dovrebbe adeguare i valori che trovi nella definizione di access.
Se per esempio la regina è piazzata in questo modo
00000001
11111112
00000011
00000101
00001001
00010001
00100001
01000001
la access[0][0] che ha valore 22 dovrebbe essere diminuito per i valori che interseca in orizzontale, verticale ed obliquo e come lui tutti gli altri dovrebbero essere adeguati allo stesso modo. In questo caso dovrebbe diventare 22-1(oriz)-1-1-1(obl)-1(vert) = 17.
Ebbene, alcuni valori mi tornano, altri no.