Ваша логика здорова, но ваше исполнение - нет.
- Половина ваших расчетов должна быть от
x
или y
до 0 (другая половина - от x
или y
до board_size
- Диапазоны не работают от больших значений к меньшим с шагом по умолчанию, поэтому вам нужно ввести шаг -1 для подсчета от
x
или y
до 0
- Вы должны использовать
zip()
для создания итерируемой коллекции кортежей.
Это будет работать:
right_up = zip(range(x + 1, board_size), range(y - 1, -1, -1))
right_down = zip(range(x + 1, board_size), range(y + 1, board_size))
left_up = zip(range(x - 1, -1, -1), range(y - 1, -1, -1))
left_down = zip(range(x - 1, -1, -1), range(y + 1, board_size))
for r in (right_up, right_down, left_up, left_down):
for new_x, new_y in r: # add coordinates to move list