Положение фигуры на шахматной доске описывается двумя числами — номером горизонтали и номером вертикали. На доске две фигуры, одна из которых — ладья. Ладья умеет ходить по любым прямым линиям — вертикалям и горизонталям — на любое количество клеток. Напишите программу, в которой предусмотрен ввод с клавиатуры координат ладьи (x, y) и координат другой фигуры (m, n). Программа должна проверить, находится ли фигура под ударом.
Так как ладья может ходить либо вертикально, либо горизонтально на любое количество клеток, то вторая фигура будет под ударом, если у обеих фигур совпадает либо первая координата (x и m), либо вторая (y и n). Условимя, что первой будем вводить координату вертикали (буквенную), второй — координату горизонтали (числовую). Также в самом начале добавим проверку правильности введения координат — не стоят ли фигуры на одной клетке, или не находится ли какая−либо фигура за пределами поля.
Первым очень емким условием будет проверка нахождения обеих фигур в пределах поля. Если числовые координаты мы можем сравнить с 1 и 8 (y и n должны быть в диапазоне от 1 до 8), то буквенные координаты должны быть одной из представленных букв (a или b или c или ... или h). Таким образом у нас должно выполняться три условия в одном — x соответствует одной из 8 букв, m соответствует одной из 8 букв, y и n находятся в пределах от 1 до 8.
Далее проверим не находятся ли фигуры на одной клетке. Для этого проверим два равенства: x == m и y == n. В этом случае выведем соответствуещее сообщение.
Если фигуры находятся в пределах поля и не на одной клетке, проверим равенства x == m и y == n с оператором or. Если какая−либо из координат у обеих фигур совпадает — вторая фигура находится под ударом. Иначе фигура в безопасности.
В конце необходимо не забыть добавить сообщение, если не выполнено самое первое условие и фигуры находятся за пределами поля.
Код программы:
print('Введите координаты ладьи:')
x=input()
y=int(input())
print('Введите координаты второй фигуры:')
m=input()
n=int(input())
if (x=='a' or x=='b' or x=='c' or x=='d' or x=='e' or x=='f' or x=='g' or x=='h') and (m=='a' or m=='b' or m=='c' or m=='d' or m=='e' or m=='f' or m=='g' or m=='h') and (y>=1 and y<=8 and n>=1 and n<=8):
if x==m and y==n:
print('Фигуры не могут находиться на одной клетке!')
else:
if x==m or y==n:
print('Фигура находится под ударом!')
else:
print('Фигура в безопасности!')
else:
print('Фигуры не могут находиться за пределами поля!')
Вид программы с отступами:
Проверим несколько возможных вариантов, чтобы убедиться, что все условия работают верно:
Программа верно определяет, если вторая фигура находится под ударом ладьи как по вертикали, так и по горизонтали.
Программа верно определяет, если фигуры находятся в пределах поля, но на одной клетке.
Программа верно определяет, если одна или несколько координат находятся за пределами поля.
Пожауйста, оцените решение