Author: leonid
Date: 19:44:01 09/23/99
Go up one level in this thread
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
This page took 0.02 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.