Шахматы. Определить, допустим ли указанный ход конем в заданной корректной шахматной позиции - C (СИ)
Формулировка задачи:
задача поставлена так:Определить, допустим ли указанный ход конем в заданной корректной шахматной позиции.
Я написал кусок кода,где проверяется может ли конь сделать указанный ход.При этом подглядел где-то на форуме условия на а,b,c,d.Но не пойму почему они именно такие.А еще,что значит (int) перед а в условии(int)a < 65?
Дальше,я так полагаю,я должен задать позиции фигур и проверить стоит ли на месте,куда "хочет" походить мой конь другая фигура.
вопрос:как задавать цвета фигур и как определить есть ли на данной клетке фигура?
#include <stdio.h>
int main(void) {
char a,b,z;
char c,d;
scanf("%c %c %c %c %c",&a,&c,&z,&b,&d);
if(z != '-' || ((int)a < 65 || (int)a > 72) || ((int)b < 65 || (int)b > 72)
|| (int)c < 49 || (int)c > 56 || (int)d < 49 || (int)d > 56) {
printf("ERROR");
}
else {
if((a - 1 == b && c + 2 == d) || (a - 1 == b && c - 2 == d) ||
(a + 1 == b && c + 2 == d) || (a + 1 == b && c - 2 ==d )||
(a - 2 == b && c + 1 == d) || (a - 2 == b && c - 1 == d) ||
(a + 2 == b && c + 1 == d) || (a + 2 == b && b - 1 == d)) {
printf("YES");
}
else {
printf("NO");
}
}
return 0;
}Решение задачи: «Шахматы. Определить, допустим ли указанный ход конем в заданной корректной шахматной позиции»
textual
Листинг программы
for(i=0; i<8; i++) for(j=0; j<8; j==) d[i][j] = 0;
Объяснение кода листинга программы
- Создается двумерный массив d размером 8x8, где все элементы инициализируются значением 0.
- Задается начальная позиция коня, например, для белого игрока, и обозначается как (x,y).
- Проверяется, является ли указанный ход конем (т.е. проверяется, что текущая позиция коня отличается от его начальной позиции на 2 клетки по горизонтали и на 1 клетку по вертикали или наоборот).
- Если указанный ход конем допустим, то программа продолжает работу, иначе выводится сообщение об ошибке.
- В случае допустимого хода, программа выполняет ход конем, перемещая его на соответствующую клетку на доске (например, d[x+2][y+1] = d[x][y]; d[x][y+1] = d[x+2][y]; d[x+2][y] = d[x][y+1]; d[x][y] = 0;).
- После выполнения хода, программа продолжает работу с обновленной позицией на доске.