Vanilla+Chess

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.|| toc =Source Code=
 * Home * Engines * Vanilla Chess**
 * [[image:vanillachesscookies.jpg width="240" link="http://test.zhaoxinpeng.com/viewjy.php?id=a948d651b34ca30a2dcd2e18"]] ||~ || **Vanilla Chess**, (Vchess)
 * Vanilla chess checkerboard cookies ||~ ||^ ||

Header
code format="cpp" /*************************************/ /*                                  */ /* 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 */ /*                                  */ /*************************************/ code 

Move Generation
Sample move generation routine for bishops, also used for diagonal queen moves: code format="cpp" 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); }  } } code

=Selected Games= NC3 2003, round 1, VChess - Kanguruh code [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 code

=See also=
 * Fencer
 * Food

=Forum Posts=
 * [|Re: cheaper search ?] by Shaun Press, rgcc, April 28, 1997 » Copy-Make, KnightCap
 * [|Vanilla Chess by Shaun Press (1997) resurrected] by Jim Ablett, Winboard Forum, September 13, 2006

=External Links=

Chess Engine

 * [|NC3 2003 - List of Entries]
 * [|NC3 2004 - List of Entries]
 * [|NC3 2005 - List of Entries]
 * [|chessexpress: Tridge] by Shaun Press, July 23, 2007 » KnightCap, Andrew Tridgell
 * [|Index of /chess/engines/Norbert's collection/Vanilla Chess (Compilation)] by Norbert Raimund Leisner, hosted by Kirill Kryukov » Jim Ablett, Dann Corbit

Misc

 * [|Vanilla (disambiguation) from Wikipedia]
 * [|Vanilla from Wikipedia]
 * [|Vanilla (genus) from Wikipedia]
 * [|Tahitian Vanilla Beans from Papua New Guinea]
 * [|Chess pie from Wikipedia]
 * [|How do vanilla chess checkerboard cookies?]
 * [|Vanilla software from Wikipedia]

=References= =What links here?= include page="Vanilla Chess" component="backlinks" limit="40"
 * Up one Level**