Vanilla Chess

From Chessprogramming wiki
Revision as of 00:28, 28 November 2018 by GerdIsenberg (talk | contribs)
Jump to: navigation, search

Home * Engines * Vanilla Chess

Vanilla chess checkerboard cookies [1]

Vanilla Chess, (Vchess)
a WinBoard compliant open source chess engine by Shaun Press, written in C. It features a 0x88 board and an offset move generator with its nested loops over pieces, directions, and for sliding pieces, from the closest to the farthest target square per direction. Its search is vanilla plain alpha-beta with iterative deepening, aspiration windows, history heuristic and transposition table, according to its author, the evaluation is a bit messy. Vanilla Chess has been around since 1996, participating in all NC3 events.

Source Code

[2]

Header

/*************************************/
/*                                   */
/* Program: Vanilla Chess V2.6       */
/* Author: Shaun Press               */
/* Date: February 1997               */
/* ...                               */
/* Very simple chess program that    */
/* plays legal chess.                */
/* Now has transposition tables      */
/* search windows, move ordering     */
/* (History Heuristic)               */
/*                                   */
/*PS Don't look at the eval function */
/*                                   */
/*************************************/

Move Generation

Sample move generation routine for bishops, also used for diagonal queen moves:

void bishopmoves(int mover, struct movelisttype * movelist, int nsquare) {
   int loop, otherp;
   int bishopdir[4] = {0xf, 0x11, -0x11, -0xf};
   struct movetype pmove;

   otherp = opponent[mover];
   pmove.startsq = nsquare;
   pmove.piece = board.square[nsquare].piece;
   pmove.special = EMPTY;
   for (loop = 0; loop < 4; loop++) {
      pmove.endsq = nsquare + bishopdir[loop];
      pmove.capture = nocapture;
      while (!(pmove.endsq & 0x88) && (board.square[pmove.endsq].colour == EMPTY)) {
         addmove(mover, &pmove, movelist);
         pmove.endsq += bishopdir[loop];
      }
      if (!(pmove.endsq & 0x88) && (board.square[pmove.endsq].colour == otherp)) {
         pmove.capture = board.square[pmove.endsq].piece;
         addmove(mover, &pmove, movelist);
      }
   }
}

Selected Games

NC3 2003, round 1, VChess - Kanguruh [3]

[Event "NC3 2003"]
[Site "RedHill, Canberra, Australia"]
[Date "2003.07.22"]
[Round "1"]
[White "VChess"]
[Black "Kanguruh"]
[Result "1-0"]

1.Nc3 e5 2.Nf3 Nc6 3.e4 g6 4.Bc4 Bg7 5.O-O Nge7 6.Ng5 O-O 7.d3 Na5 8.Bxf7+ Rxf7 
9.Nxf7 Kxf7 10.Be3 Kg8 11.Qd2 Nac6 12.Rae1 d6 13. Bg5 Bg4 14.a4 Nb4 15.f3 Be6 
16.f4 exf4 17.Rxf4 c5 18.Ref1 Qd7 19. Ne2 Nbc6 20.c3 Bb3 21.Nc1 Bxa4 22.b4 Kh8 
23.bxc5 dxc5 24.Rf7 Re8 25.Qa2 c4 26.Qxa4 cxd3 27.Qa2 Qd6 28.Rxg7 Qc5+ 29.Kh1 
Nd5 30.Rff7 Rxe4 31.Nxd3 Qd6 32.Bh6 Qxh2+ 33.Kxh2 Rh4+ 34.Kg1 Rxh6 35.Qxd5 Rh5 
36.Qd7 Rh1+ 37.Kxh1 Ne7 38.Rxh7+ Kg8 39.Qe8+ 1-0

See also

Forum Posts

External Links

Chess Engine

Misc

References

Up one Level