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.