Witam. Próbuję napisać program do gry w warcaby (w dev c++). Generuję tablicę char plansza[8][8], wyświetlam ja na ekran, ale w algorytmie ruchu pionka zaczyna sie problem, z którym nie mogę sobie poradzić ani w C ani w C++. Dokładniej chodzi o funkcję:

void ruch(char plansza[8][8])
{
   powtorka:
   char cp; 
   int pp;
   puts("Podaj który pionek chcesz ruszyć: (np. g 4)");
   scanf("%c", &cp);
   scanf("%d", &pp);       /*probowałem również w jednym scanfie i cin w C++*/
  
    if(plansza[(int)cp-97][pp-1]!=(char)1)    /*gdzie (char)1 to znak na planszy oznaczajacy pionka w ASCII*/
    {puts("Nie wybrales swojego pionka!");goto powtorka;}
.
.
.
.
.
}

Problem jest nastepujacy: wszystko działa poprawnie dopoki wpisujemy poprawne dane.
Jednak kiedy wpisze dane, które uruchamiają if'a, wynik programu jest taki: (a2 jest złe, g4 dobre)

Podaj który pionek chcesz ruszyć: (np. g 4)
a
2
Nie wybrales swojego pionka!
g
Nie wybrales swojego pionka!
4
Nie wybrales swojego pionka!
I funkcja dopiero idzie dalej, tylko nie jestem pewien czy z dobrze wczytanym cp i pp.

Czyli póxniej tak jakby nie czytał jednego scanfa po powtorce. Próbowałem z do...while ale problem ciągle się powtarza.
Ktoś ma jakieś sugestie jak zrobić to dobrze, ewentualnie najlepiej w C, jednak może być też w C++.