Home * Engines * LTChess

a didactic open source chess program written by Laurie Tunnicliffe in Pascal, started on January 2012. It may be compiled using either Turbo Pascal, Free Pascal or Virtual Pascal compilers [1] . LTChess uses a 0x88 board representation and applies alpha-beta with iterative deepening, Null move, Killer moves, LMR and transposition table. It features separate mutually recursive procedures for the main search and quiescence search for White and Black. Evaluation is done by piece square tables, with some positional features added in. Move ordering uses the PST and the History heuristic. The classic triangular array is used to return the PV. So far, LTChess has a simple text style user interface. LTChess 2, released in December 2016, changed to NegaMax, added piece-lists to 0x88, now using copy/make instead of make/unmake [2] .

Code Sample

GoToXY(51, 13);
Write('I''m Thinking.......');
FillChar(PV, SizeOf(PV), 0);
FillChar(HistoryTable, SizeOf(HistoryTable), 0);
FillChar(KillerMoves, SizeOf(KillerMoves), 0);
MaxDepth := 3; {-- do a 4 ply search first to fill history table etc }
TimesUp := False;
PVscore := 0;
Time := StopWatch(Start);
WHILE (MaxDepth < FixedDepth) AND NOT TimesUp AND (Abs(PVscore) < 30000) DO
    Inc(MaxDepth); {-- search the next ply...iterative deepening }
    ShufflePV(MaxDepth); {-- so the PV is the correct order for the next ply }
    SearchingPV := True; {-- we will search the PV moves first }
    PVscore := AlphaBetaMinMax(MaxDepth); {-- call the search }
    Time := StopWatch(Now);
{-- now return the best move from the PV array }
TheMove := PV[MaxDepth, MaxDepth];

Forum Posts

External Links


  1. ^ LTChess - Home
  2. ^ LTchess 2 by Laurie Tunnicliffe, CCC, December 03, 2016

What links here?

Up one level