Changes

Jump to: navigation, search

LTChess

3,168 bytes added, 17:47, 30 December 2019
Created page with "'''Home * Engines * LTChess''' '''LTChess''',<br/> a didactic open source chess program by Laurie Tunnicliffe, written in Pa..."
'''[[Main Page|Home]] * [[Engines]] * LTChess'''

'''LTChess''',<br/>
a didactic [[:Category:Open Source|open source chess program]] by [[Laurie Tunnicliffe]], written in [[Pascal]]. The development started in January 2012.
LTChess may be compiled using either [[Pascal#TurboPascal|Turbo Pascal]], [https://en.wikipedia.org/wiki/Free_Pascal Free Pascal] or [https://en.wikipedia.org/wiki/Virtual_Pascal Virtual Pascal] compilers <ref>[https://ltchess.weebly.com/ LTChess - Home]</ref>.
LTChess uses a [[0x88]] board representation and applies [[Alpha-Beta|alpha-beta]] with [[Iterative Deepening|iterative deepening]], [[Null Move Pruning|NMP]], [[Late Move Reductions|LMR]] and [[Transposition Table|transposition table]].
It features separate mutually recursive procedures for the main [[Search|search]] and [[Quiescence Search|quiescence search]] for White and Black. [[Evaluation]] is done by [[Piece-Square Tables|piece square tables]], with some positional features added in.
[[Move Ordering|Move ordering]] uses the PST, [[Killer Heuristic|killer heuristic]] and [[History Heuristic|history heuristic]].
The classic [[Triangular PV-Table|triangular array]] is used to return the [[Principal variation|PV]]. So far, LTChess has a simple text style [[User Interface|user interface]].
LTChess 2, released in December 2016, changed to [[Negamax|NegaMax]], added [[Piece-Lists|piece-lists]] to 0x88, now using [[Copy-Make|copy/make]] instead of [[Make Move|make]]/[[Unmake Move|unmake]] <ref>[http://www.talkchess.com/forum/viewtopic.php?t=62365 LTchess 2] by [[Laurie Tunnicliffe]], [[CCC]], December 03, 2016</ref> .

=Code Sample=
<pre>
ClearPVDisplay;
GoToXY(51, 13);
Write('I''m Thinking.......');

FillChar(PV, SizeOf(PV), 0);
FillChar(HistoryTable, SizeOf(HistoryTable), 0);
FillChar(KillerMoves, SizeOf(KillerMoves), 0);
InitTT;

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
BEGIN
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);
WriteInfoToScreen;
END;
{-- now return the best move from the PV array }
TheMove := PV[MaxDepth, MaxDepth];
</pre>

=Forum Posts=
* [http://www.open-chess.org/viewtopic.php?f=3&t=2491 New open source chess program] by [[Laurie Tunnicliffe|lauriet]], [[Computer Chess Forums|OpenChess Forum]], November 03, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=49972 New Chess Program in Pascal] by [[Laurie Tunnicliffe]], [[CCC]], November 07, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=62365 LTchess 2] by [[Laurie Tunnicliffe]], [[CCC]], December 03, 2016

=External Links=
* [https://ltchess.weebly.com/ LTChess - Home]

=References=
<references />
'''[[Engines|Up one level]]'''
[[Category:Open Source]]
[[Category:Pascal]]
[[Category:PC]]
[[Category:X86]]
[[Category:Chess Suffix]]

Navigation menu