Как не выйти за рамки шахматной доски?
Решаю задачку про коня на шахматной доске. Цель задачи - узнать, может ли конь совершить ход в прописанную клетку или нет.
Сам код рабочий, хоть пока еще не красивый (скидывать не буду), но осталась проблема в границах поля. На данный момент компилятор выдает false, если конь пошел на клетку, номер которой больше 8.
Но нужно еще сделать так, чтобы на выходе был false, если клетка не будет находиться в диапазоне букв a-h. Например, когда я пишу h1-i3 (текущая клетка и следующая), - то программа считает, что такой ход возможен, потому что конь пошел буквой Г, но не учитывает, что i находится за пределами поля.
Если же прописать, например, a8-b10, то здесь программа понимает, что вышли за пределы.
Вопрос, как ограничить символы, также как и цифры? Делаю этот кусок кода таким образом:
return ((horizontal < 'a'|| horizontal > 'h')|| (vertical < 1 || vertical > 8));
Может кто-то подскажет?
Ответы (1 шт):
Вроде бы у вас сравнение char-ов должно работать. У меня получилось так:
private static boolean isLegalChessMove(String move) {
if (move.length() != 2) {
return false;
}
char horizontal = move.charAt(0);
char vertical = move.charAt(1);
return isSymbolBetween(horizontal, 'a', 'h') &&
isSymbolBetween(vertical, '1', '8');
}
private static boolean isSymbolBetween(char symbol, char firstBorder, char secondBorder) {
return symbol >= firstBorder && symbol <= secondBorder;
}