Predstavitev pozicij
Predstavitev šahovske igre vključuje predstavitev pozicij in potez. Pozicije predstavljajo stanja igre, poteze pa operatorje, ki spreminjajo eno pozicijo v drugo pozicijo. Obe predstavitvi morajo biti sposobne izvajati naslednje operacije:
- naredi potezo
- vrni potezo
- ustvarei seznam vseh možnih potez
- ustvari seznam potez jemanja
- ovrednoti pozicijo
- shrani poteze
- primerjava pozivcij
- nastavi pozicijo
- preverjanje ali se je pozicija ponovila tri krat
- preverjanje pravila 50 potez
- preverjanje ali je kralj v šahu
Vse naštete operacije morajo biti časovno zelo učinkovite, kajti uporabljamo jih znotraj iskalnega algoritma. Tako se učinkovitost predstavitve šahovske igre prenese tudi na učinkovitost šahovskega programa.
Najbolj učinkovito predstavitev predstavlja Bitboard. Ta predstavitev vsebuje množico 64 bitnih celih števil. Oba igralca imata 6 števil za vsak tip figure. Npr. spodnja pozicija ima naslednjo bitno predstavitev kmetov:
0 0 0 0 0 0 0 0 |
64-bitna predstavitev omogoča zelo hiter generator potez in ocenitveno funkcijo. Npr. izraz (BeliKmeti << 8) & ~VsaFigure se uporablja za izračun vseh ciljnih polj belih kmetov, katere lahko premaknemo za eno polje naprej. Poglejmo ta izraz podrobneje. Najprej predstavitev belih kmetov premaknemo za 8 bitov oz. premaknemo kmete za eno polje naprej. Nato z negacijo predstavitve vseh figur dobimo predstavitev praznih polj. Na koncu z bitno operacijo IN med dobljenima predstavitvama dobimo predstavitev polj na katera lahko postavimo bele kmete, če jih premikamo za eno polje naprej. Podobno lahko izračunamo vse možne poteze za kmete, skakače, in kralja. Za drseče figure, pa moramo uporabiti še dodatno tehniko, ki je predstavljena v naslednjem poglavju.
Rotacija bitne predstavitve
Predstavljena bitna predstavitev je nekoliko počasnejša v primeru drsečih figur (lovec, trdnjava in dama). Pohitritev bitne predstavitve v primeru drsečih figur, omogoča rotiranjm bitne predstavitve. Bitno predstavitev rotiramo za 45, 90 in 135 stopinj. Rotacija za 45 in 135 stopinj se uporablja za izračun diagonalnih potez in rotacija za 90 stopinj za izračun vertikalnih potez. Pohitritev bitne predstavitve glede na druge predstavitve je v ustvarjanju potez in odkrivanju napadenih polj brez uporabe programskih zank.