sexta-feira, 6 de março de 2009

Refactoring

Acho que a minha primeira tentativa de criar uma engine de xadrez foi no meio do ano retrasado. Estava usando o C++ Builder, da Borland, e tinha noções (a maioria muito incorretas) de como o processo devia funcionar.

As coisas acabaram ficando paradas até o início do ano passado, quando consegui ter uma versão que funcionasse razoavelmente bem. Agora o Hal era realmente uma engine, e não um jogo completo (ou seja, era um motor de jogo, sem se preocupar com interface) compatível com xboard. Eu tinha recomeçado o programa do zero, e consegui implementar nele bitboards, busca quiescente, static exchange evaluation, algumas reduções, etc, etc.

Depois de algum tempo, as coisas chegaram em um ponto em que eu não conseguia mais manter o meu próprio código. O design ficou cada vez cheio de penduricalhos, cada vez mais confuso. A idéia de ter começado em C++ se revelou não muito boa.

Mas o que motivou mesmo recomeçar o código do zero foi a total impossibilidade de adicionar algumas reduções no mecanismo de busca. O null move não funcionava nem com reza brava.

Recomecei há mais ou menos um mês atrás. Estou usando o Eclipse e fazendo tudo em C. Ontem estava debugando para conseguir fazer funcionar o básico do alpha-beta; quando a engine estiver funcionando pelo menos como um 'resolvedor' de problemas de xadrez (mate em 3, mate em 5) vou ter mais tranquilidade para continuar a partir de uma base estável.

Nenhum comentário:

Postar um comentário