Author: Vincent Diepeveen
Date: 10:56:29 09/25/99
Go up one level in this thread
We should compare speeds. What i do after 1.e4,e5 2.d4,d5 is generate the move list a few million times (n times). Then i divide the time by (n * #semi legal moves). #nodes a second generated at a PII450 for diep is 15.5M Haven't seen anyone faster so far, though most are not reveiling their speed. Note that if we have a merced within say 5 years that i can implement bitboards for a few eval terms within a day by then. No need for rotated bb of course as i keep my current generator and makemove. Majority of code is not faster using bitboards even at 64 bits machine. On September 24, 1999 at 10:22:09, Robert Hyatt wrote: >On September 24, 1999 at 01:12:06, Christophe Theron wrote: > >>On September 23, 1999 at 23:12:48, Normand M. Blais wrote: >> >>>On September 23, 1999 at 22:44:01, leonid wrote: >>> >>>>On September 23, 1999 at 14:11:57, Normand M. Blais wrote: >>>> >>>>>On September 22, 1999 at 15:30:36, Brian Nielsen wrote: >>>>> >>>>>> >>>>>>Hi >>>>>> >>>>>>My name is Brian, i was thinking about writing a chess engine for fun. >>>>>>I am pretty experienced programmer/developper(c++,delpie), but have not been >>>>>>programming games, thoug i have made a packman clone a couple years ago. >>>>>> >>>>>>I have done a little research myself to get the principles in making a chess >>>>>>engine/program, and i think i now have basic understanding in how to(i hope :-)) >>>>>> >>>>>>i am curious in how you chessgame programmers represent the chessboard, I have >>>>>>seen 4-5 different examples/ways in how to do it, how do you do it and why ?? >>>>>> >>>>>>Second how long time does it take to make a basic engine! from scratch >>>>>>provided that i am a experienced programmer. >>>>>> >>>>>>Best regards >>>>>> >>>>>>Brian Nielsen >>>>> >>>>> >>>>>Hi, >>>>> >>>>>I'm not using C/C++ (yet) but I thought I could share the idea that I use for >>>>>my chess program. It is probably not new but I've nerver seen it mentionned any- >>>>>where. It is easy to understand and to implement. So, just for the record, here >>>>>it is. >>>>> >>>>> >>>>> >>>>>preliminary notes: The lower bound for array indexing is 1 (not 0) in the >>>>> explanation below. >>>>> >>>>>1- The board is represented by an array of 64 integers. >>>>> >>>>> >>>>> >>>>> 1 2 3 4 5 6 7 8 - 8 >>>>> 9 10 11 12 13 14 15 16 - 7 >>>>> 17 18 19 20 21 22 23 24 - 6 >>>>> 25 26 27 28 29 30 31 32 - 5 >>>>> 33 34 35 36 37 38 39 40 - 4 >>>>> 41 42 43 44 45 46 47 48 - 3 >>>>> 49 50 51 52 53 54 55 56 - 2 >>>>> 57 58 59 60 61 62 63 64 - 1 >>>>> >>>>> A B C D E F G H >>>>> >>>>> >>>>>2- A 64 by 8 integer array is used for the piece movements. For each square, >>>>> 8 directions is recorded: >>>>> >>>>> >>>>> NW(8) N(1) NE(2) >>>>> \ | / >>>>> W(7)--- ----E(3) >>>>> / | \ >>>>> SW(6) S(5) SE(4) >>>>> >>>>> For a given square and a given direction, the index of the adjacent square >>>>> is stored. If there is no square (case of a border square), 0 is stored. >>>>> >>>>> directions: 1 2 3 4 5 6 7 8 >>>>> --------------------------------------- >>>>> square(1) = 0, 0, 2,10, 9, 0, 0, 0 >>>>> square(2) = 0, 0, 3,11,10, 9, 1, 0 >>>>> . >>>>> . >>>>> . >>>>> square(64) = 56, 0, 0, 0, 0, 0,63,55 >>>>> >>>>> >>>>>3- The movement of the pieces are defined in term of directions: >>>>> >>>>> Rook --> 1 to 7 by 2 >>>>> Bishop --> 2 to 8 by 2 >>>>> Queen --> 1 to 8 by 1 >>>>> King --> 1 to 8 by 1 >>>>> >>>>> Knight --> {1,1,2},{1,1,8},{3,3,2},{3,3,4}, >>>>> {5,5,4},{5,5,6},{7,7,6},{7,7,8} >>>>> White: >>>>> pawn move one --> 1 >>>>> pawn move two --> {1,1} >>>>> pawn captures --> 2,8 >>>>> >>>>> Black: >>>>> pawn move one --> 5 >>>>> pawn move two --> {5,5} >>>>> pawn captures --> 4,6 >>>>> >>>>>4- Enhencements. >>>>> >>>>> A 64 by 8 array can be generated for the knight where the squares stored >>>>> for a given direction is the end square of a knight move. Then the knight >>>>> movement can be defined this way: >>>>> >>>>> Knight --> 1 to 8 by 1 >>>>> >>>>> >>>>> >>>>>Best Regards, >>>>> >>>>>Normand M. Blais >>>> >>>>This is pretty fascinating for me to find your description of the chess >>>>board. It had nothing to do with mine. My question to you is: Do your >>>>representation of the board is usual? >>>> >>>>Thanks, >>>>Leonid. >>>>boad represention is usual one or something >>> >>>The way I represent the chess board is not new. What's particular is the way I >>>generate the moves using an intermediary array to represent directions. I was >>>able to build a movegenerator in a short time. I compare it to TSCP move >>>generator and it is as fast if not faster. I know that the bitboard is the way >>>to go but I'm using an interpreted language that don't have 64bits unsigned >>>integer data type. I'm programming for fun only. >>> >>>NMB >> >>If somebody tells you bitboards are the way to go, don't believe him. >> >> >> Christophe > > >When IA64 is a reality, bitboards are the way to go. > >:)
This page took 0.01 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.