питон: проверка шахматных ходов - PullRequest
5 голосов
/ 18 мая 2010

Кто-нибудь знает, есть ли где-нибудь бесплатная функция проверки шахматных ходов питона?

Что мне нужно. У меня есть диаграмма, хранящаяся в виде строки, и переместить кандидата. Что мне нужно, так это проверить, подходит ли кандидат на перемещение для диаграммы.

Было бы очень интересно увидеть примеры, если это возможно.


Строка выглядит так:

ememememememememememememememememememembbememwpemememememememwpemembkememememememememememememememememwbembrememememwkemememememem

Я понимаю, что это может показаться глупым, но я считаю, что проще всего так закодировать положение. Перемещение кандидата для меня - это просто еще одна такая позиция (которая произошла после следующего хода, я думаю, что это поведение может измениться)

Ответы [ 5 ]

5 голосов
/ 19 мая 2010

Вам не хватает информации, например, чей ход, ход каждого ли короля (означает, что рокировка запрещена), статус «en passant» каждой пешки. Кроме того, было бы очень поучительно написать собственное упражнение, используя не очень сложное представление доски, такое как массив из 10x12 элементов, описанный здесь (за исключением того, что вы линеаризуете его до Массив из 120 элементов).

4 голосов
/ 20 декабря 2013

Я знаю, что это довольно старый вопрос, но мы с братом искали одно и то же, и мы столкнулись с этим удивительным маленьким модулем Python под названием Chessnut .

Вот пример его использования:

#!/usr/bin/python
from Chessnut import Game

chessgame = Game(fen="rnbq1rk1/ppppp1bp/5np1/5p2/2PP4/2NBPN2/PP3PPP/R1BQK2R b KQ - 4 6")
print chessgame  

print chessgame.get_moves()

# apply a move 
chessgame.apply_move(chessgame.get_moves()[1])

print chessgame

и вот сгенерированный вывод:

rnbq1rk1/ppppp1bp/5np1/5p2/2PP4/2NBPN2/PP3PPP/R1BQK2R b KQ - 4 6
['b8a6', 'b8c6', 'd8e8', 'f8e8', 'f8f7', 'g8h8', 'g8f7', 'a7a6', 'a7a5', 'b7b6', 'b7b5', 'c7c6', 'c7c5', 'd7d6', 'd7d5', 'e7e6', 'e7e5', 'g7h8', 'g7h6', 'h7h6', 'h7h5', 'f6e8', 'f6d5', 'f6e4', 'f6g4', 'f6h5', 'g6g5', 'f5f4']
r1bq1rk1/ppppp1bp/2n2np1/5p2/2PP4/2NBPN2/PP3PPP/R1BQK2R w KQ - 5 7

Отлично! :) Спасибо cgearhart !

3 голосов
/ 18 мая 2010

Просто используйте исходный код одной из программ Python Chess, например PyChess или Python Chess

В частности, действительные ходы для пичесс: https://code.google.com/p/pychess/source/browse/lib/pychess/Utils/lutils/validator.py

1 голос
/ 19 мая 2010

Не мешало бы взглянуть на некоторые из связанных ответов на стороне: Библиотека проверки хода шахмат и https://stackoverflow.com/questions/1239913/smallest-chess-playing-program выделяются для меня.

Хотя лично я за создание своего.

0 голосов
/ 26 июля 2010

Выезд Шахматная доска .

К сожалению, у него есть некоторые недостатки:

  • похоже, что от него отказались, потому что ошибки, о которых сообщалось более года назад в комментариях, похоже, не исправлены
  • код на самом деле не соответствует PEP-8
  • некоторые методы очень уродливые и большие, не у всех методов есть строки документации
  • модульных тестов нет, поэтому копаться в этом коде может быть проблемой (я уже пробовал его хотя бы дважды и не смог)

Хорошо, что код GPL, поэтому вы можете играть с ним, пока вы придерживаетесь этой лицензии.

...