Przygotowuję grę Checkers do zadania. Cała sprawa przebiega tak, jak powinna, z wyjątkiem jednej dziwnej rzeczy. Oto moja płyta:Gra w warcaby: Nie błąd sprawdzanie poprawnie?
przenieść dając wiersz źródłowy i kolumną, wówczas wiersz docelowy i kolumny.
move(int srcR, int srcC, int destR, int destC)
Mam wydrukować błąd, jeśli spróbuję przenieść element do nieprawidłowego miejsca (nie po skosie). Więc jeśli spróbuję przenieść element z 5 2 -> 4 2, otrzymuję komunikat o błędzie.
if(destR == srcR+1 || destR == srcR-1 &&
destC == srcC+1 || destC == srcC-1){
// code code code
}else
message = "Invalid Move! Can only move diagonally one space.";
Dla większości rzeczy, to działa, ale gdy próbuję przenieść bezpośrednio w dół o jedno miejsce (na przykład 2 3 -> 3 3) to rusza kawałek i nie daje mi komunikat o błędzie.
Utknąłem! Jakieś pomysły, dlaczego tak się dzieje? W razie potrzeby mogę dodać więcej kodu.
Czy ważne ruchy zależą od tego, który kolor się porusza? – arshajii
@ErikPragt, który nigdy nie zostanie zatwierdzony, ponieważ destR nie może równać się srcR +/- 1 w tym samym czasie. – Deactivator2
desrR nie może być == srcR + 1 && srcR-1 –