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++.