Escrevendo um Engine para Xadrez – Parte 11 – Mais Bitboards, Xeques e Escapadas
Olá pessoal, tudo certo!? Hoje vou tratar de dois aspectos importantes de nossa engine: Gerar listas de movimentos de ataque ao rei (o Xeque); Gerar listas de movimentos para escapes do rei (fugir do xeque). Todo o código foi escrito e coberto por uma boa quantidade de testes. Em um primeiro momento, me preocupei em… [Read more…]
Escrevendo um Engine para Xadrez – Parte 10 – PieceSet, Side, AttackMoves, Rays e Otimizações
Olá pessoal, tudo certo? Temos um bocado de coisas para apresentar hoje! O código de nosso engine cresceu um bocado. Resumindo, nossas atividades foram: Criamos PieceSet, uma representação para as posições e os possíveis movimentos de um conjunto de peças do mesmo tipo. Por exemplo, as torres brancas; Criamos Side, uma representação para todas as… [Read more…]
Escrevendo um Engine para Xadrez – Parte 9 – Refactoring e Redesign
Olá pessoal, tudo certo? Nessa série, estamos escrevendo códigos desafiadores em um design que está em constante evolução. A cada post, na exata medida em que avançamos na “cobertura” do nosso objetivo, temos a sensação de compreender mais sobre o domínio (e, consequentemente, sobre nosso objetivo). Na medida em que escrevemos mais código percebemos que … [Read more…]
Escrevendo um Engine para Xadrez – Parte 8 – Bispo e Dama
Olá pessoal, tudo certo? Hoje vou demonstrar como “calcular” os movimentos para bispos e damas. O bispo se move nas diagonais, nunca muda de “cor-de-casa”, e não pode “pular” peças. Uma dama combina os movimentos de uma torre e de um bispo. Essas duas peças se encaixam também na categoria de Sliding Pieces. Ou seja,… [Read more…]
Escrevendo um Engine para Xadrez – Parte 7 – O movimento da torre
Olá pessoal, tudo certo? Hoje pretendo demonstrar como “calcular” o movimento da torre. Torre, Bispo e Dama são peças relativamente complicadas para calculo do movimento. A razão para isso é que não é fácil criar um repositório de movimentos pré-calculados pois, diferente do que acontece com as outras peças, essas têm seus movimentos limitados pelas… [Read more…]
The Magic Bitscan
Olá pessoal, tudo certo? O post de hoje é uma diversão! Se você não trabalha com sistemas de alto-desempenho, que manipulem estruturas de dados fundamentadas em mapas de bits, provavelmente não encontrará aplicação prática para o conceito que demonstrarei hoje. Por outro lado, se gosta de computação, encontrará aqui um “prato cheio”, instrutivo e divertido.… [Read more…]
Escrevendo um Engine para Xadrez – Parte 6 – O movimento dos peões
Olá pessoal, tudo certo? Hoje pretendo demonstrar como calcular os movimentos que podem ser feitos por peões. Calcular o movimento para os peões é um pouco mais complicado do que para cavalos e reis. É assim por algumas razões: Peões brancos e pretos se movem em direções opostas (sempre para frente); Cada peão pode avançar… [Read more…]
Escrevendo um Engine para Xadrez – Parte 5 – O movimento do Rei
Olá pessoal, tudo certo? Depois de organizar a casa (refactoring do @juanplopes), é hora de avançar no desenvolvimento de nosso engine. Hoje implementaremos o cálculo de movimento do Rei. Não serão abordados o roque, e nem serão consideradas as posições invalidadas por ataque de outras peças (rei entrando em cheque). O que vamos implementar é… [Read more…]
Escrevendo um Engine para Xadrez – Parte 4 – Tempo para Refactoring
Olá pessoal, tudo certo? Esse é um projeto vivo, com código vivo, testes e tudo mais. Então, nada mais normal que, escrito algum código, fazer algum refactoring. Ontem fiz a publicação do que já havia escrito no GitHub (você tem acesso para esse código nesse commit). Meu amigo Juan Lopes foi um dos primeiros a… [Read more…]
Escrevendo um Engine para Xadrez – Parte 3 – O movimento do cavalo
Olá pessoal, tudo certo? Depois de introduzirmos o conceito de bitboards (parte 1) e enfatizarmos a relevância de antecipar processamento (parte 2), começamos a trabalhar com um dos elementos cruciais de uma boa engine de xadrez: a geração dos movimentos válidos para uma dada posição. Esse assunto é crítico pois está envolvido em todas as… [Read more…]
janeiro 27, 2011
2