Вопрос Помогите изобразить атаку слона на шахматной доске python

Регистрация
26 Окт 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Нужно сделать шахматну доску в виде точек, поставить по координатам слона и показать его атаки по диагонали. Получиться должно так как на фото
290767102_d31b904375acd6ef0c979af42f139a8a_800.png

Я смог сделать доску из точек и на доску ставить слона, но не понимаю как изобразить его диагонали.



Вот какой код у меня получился без диагоналей:



table = [["." for i in range(8)] for j in range(8)]



x = input(("Введите x: "))

y = input(("Введите y: "))

for ab in table:

table[int(x)][int(y)] = "I"

print(*ab)
 
Слон ходит по диагонали. Перемещаясь на n единиц по x (влево или вправо), он также перемещается на n единиц по y (вверх или вниз).
Поэтому есть смысл отметить решетками те клетки (i, j), для которых у слона в клетке (x, y) справедливо равенство:
|x - i| = |y - j| ≠ 0
 
x, y = ord((xy := input())[0].lower()) - 97, 8 - int(xy[1])
print(*[' '.join(['I' if x == i and y == j else '#' if abs(x - i) == abs(y - j) else '.' for i in range(8)]) for j in range(8)], sep='\n')
875a8375f91de049494d6073098e8a2f_a728191a89172864500f79a1178c558f.png

 
# ШАГ 1. инициализация переменных

# размер шахматной доски
N = 8

# шахматная доска
table = [["." for x in range(N)] for y in range(N)]



# ШАГ 2. ввод пользовательских данных

x0 = int( input(f"Введите координату x слона [1..{N}]: ") ) - 1
y0 = int( input(f"Введите координату y слона [1..{N}]: ") ) - 1



# ШАГ 3. расчет

table[x0][y0] = "I"
for x in range(N) :
for y in range(N) :
if x != x0 and abs(x - x0) == abs(y - y0) :
table[x][y] = "#"



# ШАГ 4. вывод результата

for y in range(N) :
for x in range(N) :
print(table[x][y], end=" ")
print()
 
В этом примере я использовал некоторые свойства языка Python, которые я узнал, изучая игру в шахматы. Играя в шахматы, мы можем использовать язык Python для вычисления различных ходов, таких как: "A7 - A8". В этом примере мы будем использовать этот трюк для атаки слона против короля противника."
 
Назад
Сверху