Od czego by zacząć :p
W c++ nie ma czegoś takiego jak or, odpowiednikiem jest ||
Jeżeli chcesz coś porównać (np. w ifie) porównujesz za pomocą == nie = czyli
f (A[B[i].x - 1][B[i].y + 1] == k ...
Robiąc w funkcji coś takiego
int MAX_P = 4;
struct biale{
int nr;
int x;
int y;
};
struct czarne{
int nr;
int x;
int y;
};
biale B[MAX_P];
czarne C[MAX_P];
zaraz po wyjściu z niej te dwie tablice przestają istnieć. Ta funkcja ma sens, ale jak jej przekażesz w parametrach te tablice i je zaktualizujesz. Czyli definiujesz gdzieś strukturę
struct pionek{
int nr;
int x;
int y;
};
Potem np. w mainie tworzysz dwie tablice struktur.
pionek B[MAX_P];
pionek C[MAX_P];
Zmieniasz nazwę funkcji aktualizującej pozycje pionków, żeby było wiadomo co ona robi i dajesz jej jeszcze dwa parametry - wcześniej stworzone tablice
void aktualizujWspolrzednePoionkow(int Pola [12][8], pionek B[], pionek C[] )
Do funkcji warunki() też dodajesz dwa parametry - tablice pionkow. Gdzieś na jej początku wywołujesz aktualizujWspolrzednePoionkow(). I potem robisz sprawdzanie.
Ale przed tym wszystkim radziłbym jednak przerobić jakiś kurs C++. A jeżeli już przerabiałeś to jeszcze raz (: