Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Introducing, a brand new project....maybe

Author: Michel Langeveld

Date: 09:40:45 02/15/05

Go up one level in this thread


On February 15, 2005 at 08:46:30, Andrew Wagner wrote:

>Well, after CCT7 I've got the chess programming bug in my blood again. But I
>have no desire to go back to working on Trueno, mostly because I think I proved
>my point with it. A competitive chess engine CAN be written in a VB-type
>language.
>
>Anyway, my idea now is to create an engine with parts that are as generic as
>possible. The idea being that I want to be able to easily swap out, say, an
>alphabeta search, and replace it with a mini-max search. Or switch from
>bitboards to 0x88 easily. The minimum goal of the project would be to be able to
>write all my own parts and have them function interchangeably. Ideally, I'd like
>to really make things generic and re-usable to the extent that I could swap in
>parts from other engines, eventually. So if I want to compare the speeds of
>Fruit's eval() with that of Crafty, I can do it with minimal code changing,
>regardless of whether or not they use the same board representation or type of
>search, or whatever. I think I'd like to write it in Perl, too, just for grins
>and giggles. Not something you hear much of.
>
>Anyway, thoughts? Suggestions? Accusations of sheer dementia? Bring 'em on!

I see possibilities ... and I see problems.

1) I think it is possible to make an eval() function that computes according to
the current board position an evaluation. Where the evaluation score is exactly
like Fruit or Crafty.

I can make such a function for you that evals like Nullmover ..... but it
depends largely what kind of powerfull functions are in the board class.

2) It is possible to switch with one define from alphabeta to minimax. With
multiple defines it is possible to to let the search work minimax and the
qsearch work alphabeta ... or viceversa.

3) The eval function can work very powerfull if the board representation class
is powerfull like: king_in_check(), x_ray_attack(), blocked_pawn() ....
Generating moves with a engine that is bitboarded goes totally different than an
engine that is 0x88. So you want to make gen_moves() part of the board class?

Also setting up attackboards .... or attackboards can be build incremental or at
every eval() request when needed ....

how will your board class look like?

with methods:
* color getColorToMove()
* pieceType getPiece(field)
* pieceArray allBishops(color)
* bool isBishopPairPresent(color)
* field[] passerPawns(color)
* void generateMoves(color)
* void generateCaptures(color)
* bool isInCheck(color)

Michel



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.