Shatranj é um, Open-Source baseado em bitboard, módulo de programação de xadrez interativo que permite a manipulação de posições de xadrez e experimentação com algoritmos de busca e técnicas de avaliação. O objetivo da Shatranj é escrever um kit de ferramentas para auxiliar na implementação de programas de xadrez Shannon Tipo B.
Como tal, a velocidade de execução torna-se menos importante, em seguida, clareza de código e poder expressivo da linguagem de implementação. Tendo sido escrito em uma linguagem interpretada, este módulo permite que o programador de xadrez para manipular bitboards de uma forma natural, interativa bem como kits de ferramentas de processamento de sinais permitem que engenheiros de comunicação para manipular vetores de amostras de sons em MATLAB.
O módulo currenly implementa uma busca minimax recursiva simples com poda alphabeta, aprofundamento iterativo, usa a notação algébrica suma, trata de seleção repetição, ea regra dos 50 movimentos. Características que faltam são verificações quiescentes, mesas de transição, negascout e MTD pesquisa.
O kit de ferramentas de programação de xadrez está disponível sob a forma de um módulo Python chamado shatranj.py. Você também vai provavelmente precisar de abertura do livro, bem como algumas das tabelas de hash pré-construídos que são usados em todo o módulo (estes serão recalculadas se o módulo não pode encontrar o arquivo de dados).
Coloque todos os três arquivos no mesmo diretório e python simplesmente executar no módulo python ("shatranj.py python"). No que diz respeito necessidades, tudo o que é necessário é uma versão recente do interpretada, linguagem de alto nível chamado Python (nada após a versão 2.3 deve funcionar bem). Se você gostaria de um pouco de um impulso de velocidade, shatranj olha para o módulo Psyco e vai usá-lo se ele estiver instalado.
Até mais documentação se torna disponível, aqui está uma sessão de exemplo curto:
[Sam-Tannous-Computador: ~ / shatranj] estanho% python
>>> From importação shatranj *
... A leitura de dados de inicialização
... Tempo total para ler ,0774528980255 dados
... Encontrei o livro de abertura shatranj-book.bin com 37.848 posições
>>> Position = Posição ("r1bqk2r / pppp1ppp / 2N5 / 5N2 / 2B1n3 / 8 / PPP1QPPP / R1B1K2R")
>>> All_pieces = position.piece_bb ["b_occupied"] | position.piece_bb ["w_occupied"]
>>> Other_pieces = position.piece_bb ["b_occupied"]
>>> From_square = c4
>>> Wtm = 1
>>> Máscara = position.pinned (from_square, WTM)
>>> Ne_pieces = diag_mask_ne [from_square] & all_pieces
>>> Nw_pieces = diag_mask_nw [from_square] & all_pieces
>>> move = ((diag_attacks_ne [from_square] [ne_pieces] & other_pieces) |
... (Diag_attacks_ne [from_square] [] & ne_pieces ~ all_pieces) |
... (Diag_attacks_nw [from_square] [nw_pieces] & other_pieces) |
... (Diag_attacks_nw [from_square] [] nw_pieces & ~ all_pieces)) e máscara
>>>
>>> movimentos
1275777090846720L
>>>
>>> Tobase (movimentos, 2)
'100100010000101000000000000010100000000000000000000'
>>> exibição (movimentos)
--- --- + + + + --- --- --- --- + + + + --- --- +
8 | |. | |. | |. | |. |
--- --- + + + + --- --- --- --- + + + + --- --- +
7 |. | |. | |. | 1 |. | |
--- --- + + + + --- --- --- --- + + + + --- --- +
6 | 1 |. | |. | 1 |. | |. |
--- --- + + + + --- --- --- --- + + + + --- --- +
5 |. | 1 |. | 1 |. | |. | |
--- --- + + + + --- --- --- --- + + + + --- --- +
4 | |. | |. | |. | |. |
--- --- + + + + --- --- --- --- + + + + --- --- +
3 |. | 1 |. | 1 |. | |. | |
--- --- + + + + --- --- --- --- + + + + --- --- +
2 | |. | |. | |. | |. |
--- --- + + + + --- --- --- --- + + + + --- --- +
1 |. | |. | |. | |. | |
--- --- + + + + --- --- --- --- + + + + --- --- +
a b c d e f g h
>>> position.show_moves (1)
['Rg1', 'O-O', 'F3', 'a3', 'Rb1', 'f4', 'BA6',
'BH6', 'Bd3', 'Qg4', 'QE3', 'Ne7', 'BE6', 'NxG7',
'Qxe4', 'Ce3', 'B4', 'Ch4', 'B3', 'Be3', 'Bg5',
"G3 ',' KF1 ',' RF1 ',' NH6 ',' a4 ',' Cg3 ',' Qh5 ',
'KD1', 'H-4', 'H3', 'C3', 'Bxf7', 'ND6', 'Bb5',
'Nd4', 'QF3', 'g4', 'QF1', 'Bb3', 'QD1', 'QD3',
'QD2', 'BD5', 'Bd2', 'BF4']
>>>
>>> # Agora jogar um jogo!
>>> Play ()
Shatranj versão 1.10
g: lados do interruptor m: mostrar movimentos legais
n: novo jogo l: lista de registro de jogo
d: exposição placa b: mostrar movimentos de livros
profundidade de pesquisa alteração (2-16) default = 5: sd
q: quit
Shatranj: d
--- --- + + + + --- --- --- --- + + + + --- --- +
8 | r | n | b | q | k | b | n | r |
--- --- + + + + --- --- --- --- + + + + --- --- +
7 | p | p | p | p | p | p | p | p |
--- --- + + + + --- --- --- --- + + + + --- --- +
6 | |. | |. | |. | |. |
--- --- + + + + --- --- --- --- + + + + --- --- +
5 |. | |. | |. | |. | |
--- --- + + + + --- --- --- --- + + + + --- --- +
4 | |. | |. | |. | |. |
--- --- + + + + --- --- --- --- + + + + --- --- +
3 |. | |. | |. | |. | |
--- --- + + + + --- --- --- --- + + + + --- --- +
2 | P | P | P | P | P | P | P | P |
--- --- + + + + --- --- --- --- + + + + --- --- +
1 | R | N | B | Q | K | B | N | R |
--- --- + + + + --- --- --- --- + + + + --- --- +
a b c d e f g h
Detalhes de Software:
Comentários não encontrado