Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: How do you represent chess boards in your chess programms

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.