Browsing All posts tagged under »Bitboards«

Escrevendo um Engine para Xadrez – Parte 11 – Mais Bitboards, Xeques e Escapadas

janeiro 27, 2011

2

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

janeiro 23, 2011

2

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

janeiro 17, 2011

5

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

janeiro 12, 2011

3

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

janeiro 11, 2011

4

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

janeiro 9, 2011

5

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

janeiro 7, 2011

6

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

janeiro 7, 2011

7

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

janeiro 4, 2011

8

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

janeiro 2, 2011

8

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…]

Escrevendo um Engine para Xadrez – Parte 2 – A importância do Pré-processamento

dezembro 30, 2010

13

Olá pessoal, tudo certo? Antes de tudo, muito obrigado pelos feedbacks pelo primeiro post dessa série. Estou realmente muito animado com a possibilidade de escrever um grande software aqui. Ontem mostrei uma técnica para representação do tabuleiro. Hoje, pretendo introduzir outro conceito fundamental: Pré-processamento. As idéias apresentadas aqui são fundamentadas nos trabalhos do professor Dr… [Read more…]

Escrevendo um Engine para Xadrez – Parte 1 – Bitboards

dezembro 30, 2010

20

Olá pessoal, tudo certo? Depois de algum tempo escrevendo posts sem código, começo uma série que promete “tirar o atraso”. Vou construir e publicar, aqui no blog, um engine completo para um jogo de xadrez. Este código, naturalmente, não é trivial. Alguns elementos importantes de inteligência artificial serão necessários. Além disso, uma boa dose de… [Read more…]

Follow