Chess for Mac 2011 je šach pre dvoch hráčov. Základnym prvkom programu je 2D šachovnica, ktorá má v základnom režime po spustení programu rozmery 600 x 600 pixelov na šírku a na výšku. Figúrky sú štandardne rozmiestnené, pričom svetlý hráč má figúrky hore a tmavý dole. Hráči sa po každom ťahu striedajú, pričom počítač inteligentne vyhodnocuje priebeh hry. Hra sa ovláda kurzorom (myš, touchpad,..) klikaním na figúrky a ich presúvaním (kliknem - presuniem - pustím).
Figúrky majú dovolený pohyb podla oficálnych pravidiel šachu, ako sú napríklad kôň do L-ka, strelec do kríža a podobne, ale program taktiež ovláda ťahy ako možné dva kroky vpred pre pešiaka (pri prvom ťahu), rošáda (výmena kráľa s vežou), ale aj výmena pešiaka za figúrku pri prejdení na opačnú stranu šachovnice.
Program vie inteligetne vyhodnotiť, kedy je král ohrozený, či náhodou svojim ťahom nemôže krála ohroziť, alebo či už nedal jeden z hráčov šach mat. V týchto prípadoch dáva hráčom oznámenie a inteligetne im ruší ťah.
Ďalším dôležitým prvkov programu je menu. To pozostáva z troch kategórií: Hra, Nastavenia a Nápoveda.
Časť Hra ponúka hráčom kedykoľvek za behu programu si zvoliť novú hru, uložiť aktuálne rozohratú hru, alebo načítať už v minulosti rozohratú hru. Pri novej hre vie program vyhodnotiť, či je rozohratá hra uložená a ak nie, upozorní na to. Ukladať si môžu hráči koľko len chcú hier, keďže sa hry ukladajú do .txt súborov s ľubovoľne zvoleným názvom. Načítanie hry si pamätá presný stav predošlej hry, čo zahŕňa rozloženie figúrok, vyhodené figúrky, ale aj hráča na ťahu. Všetky tieto tri úkony majú aj klávesovú skratku pre ulahčenie ich výberu.
Časť nastavenie ponúka hráčom možnosť výmeny grafického vzhľadu pozadia, kde je na výber klasické a čiernobiele. Taktiež je možné zmeniť rozmery hry - na výber sú 600 a 400 pixelov na šírku.
Nápoveda zahŕňa stručné informácie o programe.
Program sa skladá z piatich Unit-ov: Uni1.pas, Unit2.pas, Unit3.pas, BoardUnit.pas a ChessUnit.pas
Unit1 pokrýva Form1, kde sa vykresluje celá hra. Nosnou časťou sú procedúry ImageMouseDown, ImageMouseMove a ImageMouseUp, ktoré vykonávajú presúvanie figúrok. V Unit1 je inicializované menu (objekt TMainMenu) so svojimi položkami. Unit1 tiež pracuje s dialógmi, čo umožňuje ukladanie a načítavanie hry. Tento Unit je ako jediný napojený na všetky ostatné Unit-y a ovláda ich. Väčšina procesov je vlastne vyvolávaná práve cez Unit1. Pri výbere novej hry som na vyskakovací dialóg o možnosti uloženia rozohratej hry použil funkciu Application.MessageBox s možnosťami Áno a nie.
Grafická plocha šachovnice je objekt TBoard v BoardUnit.pas. Vyvoláva sa vždy, keď treba nakresliť plochu nanovo (takže prakticky stále :)).
Najdlhším Unitom v hre je ChessUnit.pas. Sú v ňom uložené všetky figúrky aj samotní hráči. V tomto Unite-e sa vyhodnocujú pravidlá, správnosť ťahu (či ide figúrka na dovolené políčko), správnosť hráča (aby nešiel jeden hráč viackrát po sebe), či je král ohrozený, koniec hry a podobne. Hra funguje na princípe, že každý hráč si v ChessUnit-e pamätá, aké má figúrky a samotné políčka šachovnice sú smerníky na tieto figúrky (respektíve nil). Každá trieda THrac si pamätá svoju farbu a pole 16 smerníkov na samostatné triedy TFigurka. Každá figúrka si pamätá svoje súradnice na šachovnici (0..7, 0..7), svoj typ (pešiak, veža,..), svoju bitmapu, či je v hre, či už vykonala prvý ťah a či nie je práve posúvaná. Ukladanie a načítavanie hry je taktiež napojené nie len na Unit1, ktorý procesy vyvoláva, ale aj ChessUnit, ktorý procesy vykonáva.
Zvyšné dva Unit-y sú chudobnejšie, keďže sa jedná o vyskakovacie okná. Unit2 obsahuje informácie o programe (logo a základný text) - to je Nápoveda (prístup cez menu). Unit3 je okno s ponukou figúrok na výmenu za pešiaka, keď pešiak prejde na opačnú stranu šachovnice (viď. obrázok vyššie). Pri Unit3 sa okna zatvára pri výbere figúrky, teda splnení podmienok v ImageMouseDown. Tam sa uložia informácie o vybratej figúrke (podľa X-ovej súradnice), odošlú sa do Unit1 a ten ich interpretuje ChessUnit-u (keďže rozohratá hra beží pod Unit1).
Celý program si pamätá cestu ku programu, čo zamedzuje problému pri výmene adresára a následnom prekreslení obrázkov.