Copyright: Filip Hőfer, 2002


Šachy

Pravidla Hry

Ovládání

Zápis tahů

O Algoritmu

Filip Hőfer, 2002

This help file was created with HelpScribble.


Algoritmus

Program Šachy je určen pro 32-bit Windows a je psán s důrazem na objektové pojetí.

První šachy jsem napsal v roce 1999 v Borland Pascalu pod názvem Microchess. Ve vývoji tohoto programu jsem s přestávkami pokračoval do roku 2001, kdy jsem přešel na Free Pascal. Až do verze 5 včetně se jednalo o aplikace pro 16-bit reálný režim DOS, program Microchess 6 již běžel v chráněném 32bit režimu DOS.

Výpočtové jádro programu Šachy (tcpu) používá následující algoritmy:

minimax	výběr tahu	vyvíjený postupně od roku 1999

quickbestattack	hledání klidové pozice	poprvé v Microchess 6

fastgeneratemove	generátor tahů	nově v programu Šachy

Reprezentace šachovnice má následující složky:

status	stav kamenů (hodnota, typ...)	poprvé v Microchess 6

board	vlastní šachovnice	od Microchess 1

math-graph	bitmapa útočných vazeb	poprvé v Microchess 6

pohyb	bitmapa možností pohybu	nově v programu Šachy

comprattack	seznam útočných vazeb	nově v programu Šachy

comprmov	seznam možností pohybu	nově v programu Šachy

a další

Vlastnosti generátoru tahů:

optimalizace pořadí figurek,

optimalizace pořadí cílových polí,

3 úrovně priorit: okamžitá reakce, ostatní útok, neútočné tahy.

Počítač počítá následovně: spočítá všechny možné kombinace tahů do hloubky zadané pro hlavní výpočet a pro každou z těchto kombinací spustí ohodnocovací funkci, která hledá klidovou pozici. Hledání klidové pozice spočívá ve zvažování všech možných výměn až do zadané hloubky.

Hlavním hodnotícím kritériem je co nejrychlejší šachmat, poté zisk materiálu (tj. zajetí co nejvíce soupeřových kamenů a minimalizace vlastní ztráty) a nakonec poziční kritéria. Některá poziční kritéria nejsou zachycena v ohodnocovací funkci, ale uplatňují se díky předvýběru na úrovni generátoru tahů.

Další informace o algoritmu jsou v tématu Ovládání (odstavec Výpočet) a v tématu Obtížnost.

Filip Hőfer, 2002

This help file was created with HelpScribble.


Pravidla Hry

Šachy jsou desková hra pro 2 hráče. Každý hráč má na začátku 16 různých kamenů, jejichž počáteční rozestavení je pevně dáno. Hru zahajuje hráč s bílými kameny a pak se hráči pravidelně střídají.

Každý tah znamená přemístění jednoho svého kameme na pole, které je buď prázdné nebo obsazené kamenem soupeře (v tomto případě je tento odstraněn z desky). Zvláštním tahem je rošáda.

Kameny při svém pohybu nesmí překročit obsazené pole. Výjimka platí pouze u koně (kdykoli) a u věže při rošádě.

Pohyb kamenů

Pěšák (pěšec)

Tento kámen se smí pohybovat pouze dopředu (tj. ze základního postavení směrem k opačné straně šachovnice). Jestliže se pěšák přesunuje z pole, na kterém stál před zahájením hry, může ho hráč podle vlastní vůle posunout buď o dvě, nebo o jedno volné pole přímo vpřed, tj. ve stejném sloupci polí. Například z b2 na b4, nebo z b2 na b3. Poté, co opustili svoje výchozí pole, mohou pěšci postupovat jen o jedno pole vpřed. Pěšák, který bere soupeřův kámen, se nepřesune přímo vpřed, ale o jedno pole vpřed doprava nebo doleva úhlopříčným směrem. Například z b2 na c3, nebo z b2 na a3.

Braní en passant (braní mimochodem)

Pěšák, který ohrožuje pole, přes které přešel soupeřův pěšák ze svého základního postavení bez zastávky (tj. šel o dvě), smí tohoto soupeřova pěšce vzít, jako kdyby postoupil jen o jedno pole. Toto "braní mimichodem" musí být provedeno ihned, jako odpověď na soupeřův postup o dvě pole.

Kůň (J, jezdec)

Tento kámen se přemisťuje zvláštním způsobem - o jedno pole v té řadě nebo sloupci, kde právě stojí, a bez zastávky pokračuje v pohybu o jedno pole úhlopříčným směrem. Při této druhé části tahu se musí od svého původního stanoviště vzdálit, nesmí se k němu pohybem po úhlopříčce vracet. Bylo už zmíněno, že mu v přesunu nepřekáží vlastní ani cizí kámen stojící na prvním poli, přes které se jezdec (jak se kůň nazývá podle šachové terminologie) přenáší. Zjednodušeně řečeno: pohybuje se "do elka".

Střelec (S)

Střelec se přesunuje po úhlopříčkách, na kterých právě stojí. Smí postoupit vždy jedním směrem přes jakýkoli počet volných polí. Střelci umístění na začátku na světlých polích se pohybují po celou dobu hry po světlých polích, střelci z tmavých jen po tmavých.

Věž (V)

Věž může postoupit přes libovolný počet volných polí buď vodorovně, nebo svisle - tedy v té řadě či v tom sloupci polí, kde právě stojí.

Dáma (D)

Dáma smí postoupit přes jakýkoli počet volných polí kterýmkoli směrem - vodorovně, svisle i úhlopříčně. Musí se však přesunout vždy přímo, nesmí tyto směry v jednoum tahu kombinovat.

Král (K)

Král smí postoupit kterýmkoli směrem (vodorovně, svisle, úhlopříčně) jen na sousední pole, které není ohroženo žádným soupeřovým kamenem. Jediná výjimka platí při rošádě:

Rošáda

Je to zvláštní druh tahu, při kterém smí hráč přesunout současně dva kameny - krále a jednu z věží. Počítá se však jako tah králův. Král se přesune ze svého základního pole o dvě pole směrem k věži stejné barvy, která dosud stojí na svém výchozím poli. Pak je přemístěna i věž, k níž se král přiblížil, a když se přenese přes krále, zůstane stát za ním na sousedním poli ve stejné řadě.

Rošáda smí být provedena jen za těchto okolností:

1. Král ani věž, kterými ji chceme provést, nesměli ještě zahájít hru, to znamená, že s nimi dosud nebyl proveden žádný tah.

2. Pole, kde král stojí, pole přes které má přejít, a pole, na němž se má po uskutečněné rošádě zastavit, nesmí být ohroženo soupeřovým kamenem.

3. Všechna pole mezi králem a věží, s nimiž bude rošáda provedena, musí být prázdná.

Povýšení kamenů

Pěšák, který dojde do poslední řady na opačné straně desky, je ihned proměněn podle výběru hráče v dámu, věž, střelce nebo koně.

Šach

Král je v šachu, jestliže pole, na kterém stojí, ohrožuje nejméně jeden soupeřův kámen, to znamená, že tento kámen by mohl v příštím tahu vstoupit na královo pole. O kamenech ohrožujících soupeřova krále říkáme, že mu dávají šach. Král, který se ocitl v šachu, musí této hrozbě uniknout v bezprostředně následujícím tahu. Buď tím, že se přesune na jiné, bezpečné, pole nebo tím, že zajme soupeři kámen, který dává jeho králi šach, nebo tím, že zruší šach kamenem postaveným mezi krále a šachující soupeřovou figuru.

Mat

Nedokáže-li hráč zlikvidovat svým nejbližším tahem ohrožení svého krále a král zůstane dál v šachu, hra končí jeho porážkou. Podle ustálené zvyklosti se říká, že dostal mat.

Zakončení hry

Vítězství

Kdo dá soupeři mat, vyhraje. Pokud hráč považuje svou situaci za beznadějnou a nechce dál mařit čas, může partii ukončit; vítězem se pak stává jeho soupeř, aniž by musel dát králi mat.

Remíza

Pat

Když hráč, který je právě na řadě, nemůže provést žádný tah a jeho král přitom není v šachu, hra končí nerozhodně. Tato situace se nazývá pat.

Výsledek hry je nerozhodný také tehdy, pokud ani jeden z hráčů nemůže dosáhnout vítězství. Zejména v případech:

1. dva osamělí králové,

2. král se střelcem stojí proti osamělému králi,

3. král s koněm stojí proti osamělému králi,

4. král se střelcem stojí proti králi a střelci a oba střelci jsou na polích stejné barvy,

5. několikrát se opakuje tatáž pozice (podle oficiálních pravidel třikrát).

Filip Hőfer, 2002

This help file was created with HelpScribble.


Ovládání

První kroky

Základní funkce programu jsou dostupné v menu Hra. Zde máte možnost začít novou hru (příkaz Nová...), načíst uloženou hru (příkaz Otevřít...), uložit hru (příkazy Uložit a Uložit jako...). Příkaz Nastavení stran... umožňuje nastavit, kterými kameny hraje počítač a kterými člověk.

menu Hra

Nová...

Tento příkaz otevře dialog Nastavení stran... Po potvrzení tlačítkem OK program rozestaví figurky do základního postavení a může se začít hrát.

Otevřít...

Otevře dříve uloženou hru (soubor s příponou .sch nebo .txt).

Uložit

Uloží hru pod jejím stávajícím názvem (tato volba je dostupná jen pro hry, které byly načteny z disku pomocí příkazu Otevřít...nebo uloženy pomocí příkazu Uložit jako...).

Uložit jako...

Otevře dialogové okno pro uložení hry, kde zadáte název, pod kterým se hra uloží.

Nastavení stran...

Otevře dialog Nastavení stran.

Konec

Ukončí aplikaci.

Průběh hry

Hru začíná bílý (viz Pravidla Hry). Tahy se zobrazují v okně Historie (vpravo nahoře). Průběh hry se odměřuje v počtu odehraných půltahů (tj. za tah se považuje dvojice půltahů bílý-černý), poslední provedený půltah má nejvyšší číslo. Je-li okno Historie prázdné, neprobíhá žádná hra. V okně Výpočet (vpravo dole) je zobrazeno, zda právě probíhá výpočet tahu. Pokud probíhá výpočet, je na tahu počítač a jeho tah bude proveden ihned po dokončení výpočtu (výjimkou je výpočet na základě příkazu Poradit tah). V opačném případě je na tahu člověk a je třeba provést tah:

Provádění tahů

Myší klikněte na figurku, se kterou chcete táhnout a pak na pole, na něž chcete táhnout. Je-li tah legální (tj. podle pravidel), je ihned proveden, v opačném případě je zobrazena chybová zpráva v okně Výpočet. Jestliže je pak na tahu počítač, okamžitě po provedení se spustí výpočet tahu. Tah lze rovněž zadat z klávesnice.

menu Obtížnost

Kdykoli během hry je možné nastavit stupeň obtížnosti (tj. herní síly počítače). Herní síla počítače je závislá na tom, kolik půltahů dopředu počítá. Můžete si vybrat jeden z přednastavených stupňů obtížnosti (Nejnižší, Nízká, Střední, Vysoká) nebo vytvořit vlastní pomocí volby (Upřesnit...). Tato volba otevírá dialogové okno Obtížnost.

Pokročilé funkce

Historie

Pomocí okna Historie a tlačítek Zpět a Vpřed je možné prohlížet celou partii a případně vracet tahy. Stisknutím jednoho z těchto tlačítek se partie posune o jeden půltah. Přesun o více půltahů může být realizován přímo kliknutím na položku v seznamu půltahů. Chcete-li pokračovat ve hře od vybrané pozice, pak postupujte následovně podle toho, kdo je na tahu:

1. na tahu je počítač: to poznáte podle aktivního tlačítka Pokračuj od zvolené pozice - stiskněte toto tlačítko.

2. na tahu je člověk: to poznáte podle neaktivního tlačítka Pokračuj od zvolené pozice - proveďte tah obvyklým způsobem.

Historii lze procházet i během výpočtu tahu, nelze však provádět tahy (rovněž tlačítko Pokračuj od zvolené pozice je až do dokončení výpočtu stále neaktivní nezávisle na vybrané pozici). Po dokončení výpočtu se automaticky provede přesun na aktuální pozici a provede se tah počítače.

Výpočet

V okně výpočet je zobrazován průběh výpočtu tahu počítače a důležitá hlášení programu. Postup výpočtu je zobrazován v procentech. Je-li zobrazeno Prosím čekejte, pak počítač kalkuluje svůj první tah, který si předvypočítal při minulém výpočtu (toto neplatí pro nejnižší obtížnost) a inicializuje minimaxový algoritmus s alfa-beta odsekáváním (jedná se o urychlené prohledávání výpočtového stromu, které rapidně snižuje exponenciální růst). V průběhu výpočtu program vybírá vhodné tahy a zobrazuje aktuální volbu ve výpočtovém okně (např. "vybrán tah: a7-a6 (0)"). Hodnota v závorce udává, jak si počítač cení svou pozici po provedení tohoto tahu (např. hodnota 0 znamená, že si myslí, že ani jeden z hráčů nebude mít výhodu; hodnota -1 znamená, že považuje svoji pozici za mírně nevýhodnou; hodnota -998 zamená, že asi ztratí pěšáka, ale získá menší poziční výhodu).

Vysvětlení bodování

pěšák 1000

kůň 3000

střelec 3100

věž 5000

dáma 9000

šach mat 60000

(okamžitý šach mat = 60000, šach mat ve dvou půltazích = 59998, ve čtyřech = 59996 atd.)

tlačítko Přerušit výpočet

Ukončí výpočet tahu počítače bez toho, aniž by byl tah proveden. Na tahu je stále počítač, je možné měnit veškerá nastavení programu, posunout se v historii, případně znovu spustit výpočet tlačítkem Pokračuj od zvolené pozice.

menu Pozice

Zadat tah

Příkaz Zadat tah z menu Pozice umožňuje zadání tahu z klávesnice. Otevře se dialogové okno Zadat tah.

Rychlý tip

Okamžitě vypíše tah, kterým je podle výpočtů počítače vhodné pokračovat (tah vychází z minulých výpočtů).

Poradit tah

Tato volba je dostupná, jen je-li na tahu hráč. Po jejím zvolení se spustí výpočet tahu jako by byl na tahu počítač, ovšem po vypočtení tahu se tento neprovede, ale pouze se vypíše jako doporučení uživateli. Tato funkce je silnější než rychlý tip, ale její vyhodnocení trvá déle.

Počet možných tahů

Zobrazí, kolik legálních tahů má k dispozici hráč, který je právě na tahu (užitečné zejména, když je král v šachu).

Editační režim

Zaškrtnutím této volby se dostáváte do módu, kde jsou povoleny téměř jakékoli tahy, tak aby bylo možné kameny rozestavět do určité pozice. Zrušením této volby začíná hra od takto vytvořené pozice.

menu Zobrazit

Vyhozené figurky

Zobrazí kameny, které byly během hry odstraněny z šachovnice.

Zvýraznění posledního tahu

Je-li tato volba zaškrtnuta, pak se vždy po provedení tahu (červeně) zvýrazní pole, ze kterého bylo táhnuto, a cílové pole.

Vizualizace průběhu výpočtu

Je-li tato volba zaškrtnuta, pak se vždy při výpočtu tahu spolu s hláškou "Vybrán tah" tento graficky naznačí na šachovnici (modře). Tato volba je vhodná především pro delší výpočty.

Obnovit

Překreslí šachovnici.

Filip Hőfer, 2002

This help file was created with HelpScribble.


Zadat tah

Zadejte souřadnice výchozího a cílového pole (bez mezer). Pokud je tah legální, provede se po kliknutí na tlačítko OK nebo po stisku klávesy Enter. Zaškrtnete-li políčko "Zobrazit tento dialog i pro příští tah", pak se tento dialog dialog objeví pokaždé, když bude na řadě člověk.

Filip Hőfer, 2002

This help file was created with HelpScribble.


Nastavení stran

Program Šachy umožňuje libovolnou ze čtyř kombinací protihráčů: člověk proti počítači (člověk hraje býlími kameny nebo počítač hraje bílými kameny), člověk proti člověku a počítač proti počítači. Zde se provede volba výběrem jedné z možností (člověk, počítač) pro každou barvu (ty jsou reprezentovány bílým a černým králem). Pomocí volby "Nahoru hraje" lze nastavit orientaci šachovnice.

Filip Hőfer, 2002

This help file was created with HelpScribble.


Obtížnost

Zde zadáváte počet dopředu počítaných půltahů v hlavním výpočtu a v ohodnocovací funkci. Počítač počítá následovně: spočítá všechny možné kombinace tahů do hloubky zadané pro hlavní výpočet a pro každou z těchto kombinací spustí ohodnocovací funkci, která hledá klidovou pozici. Hledání klidové pozice spočívá ve zvažování všech možných výměn až do zadané hloubky. Celkem tedy např. pro nastavení 4 v hlavním výpočtu a 6 v ohodnocovací funkci počítač zvažuje i situace, které mohou nastat až za 10 půltahů (toto nastavení odpovídá střední obtížnosti). Hlavní výpočet zahrnuje všechny tahy, ohodnocovací funkce jen výměny (tj. útočné tahy).

Filip Hőfer, 2002

This help file was created with HelpScribble.


Uložit jako

V tomto dialogu máte možnost uložit hru v jednom ze dvou formátů:

·	Šachová pozice (sch) - uloží pouze aktuální pozici a nastavení stran. Při načtení pozice není možné procházet předchozí tahy

·	Šachová partie (txt) - uloží všechny tahy z okna Historie do textového souboru. Po načtení partie je možné procházet všechny tyto tahy.

Filip Hőfer, 2002

This help file was created with HelpScribble.


Výběr figurky

Pěšák, který došel až na konec šachovnice je povýšen na dámu, věž, střelce, nebo koně (viz pravidla hry). Výběr provedete kliknutím na jednu z figurek nebo stiskem klávesy:

·	D pro dámu

·	V pro věž

·	S pro střelce

·	J pro koně neboli jezdce

Filip Hőfer, 2002

This help file was created with HelpScribble.


Zápis tahů

Program Šachy používá následující zápis:

Px0_y0[D|V|S|J|ep][+]

kde P je prefix označující figurku, se kterou se pohybuje, x0 a y0 jsou souřadnice na šachovnici (tedy např b2 b4), znak _ zastupuje - nebo x ( - znamená, že při tahu nebyla zajata soupeřova figura, x znamená, že ano), + znamená, že po tomto tahu je soupeřův král v šachu, ep značí braní en passant a D, V, S či J značí povýšení pěšáka na dámu, věž, střelce nebo koně (jezdce).

nebo

O-O[-O]

O-O znamená malou rošádu

O-O-O znamená velkou rošádu

Prefixy

žádný prefix pro pěšáka

prefix J pro koně neboli jezdce (knight)

prefix S pro střelce (bishop)

prefix V pro věž (rook)

prefix D pro dámu (queen)

prefix K pro krále (king)

Příklady

 d2-d4 	pěšák jde z d2 na d4

Dd1-d2 	dáma jde z d1 na d2

Jd4xf3+ 	kůň jde z d4 na f3, bere soupeřův kámen a soupeřův král se ocitá v šachu

 c7xb8D	pěšák jde z c7 na b8, bere soupeřův kámen a je povýšen na dámu

 d4xc3ep	pěšák jde z d4 na c3 a bere soupeřova pěšáka na c4 en passant.

Filip Hőfer, 2002

This help file was created with HelpScribble.


Editační režim

Zaškrtnutím této volby se dostáváte do módu, kde jsou povoleny téměř jakékoli tahy, tak aby bylo možné kameny rozestavět do určité pozice. Zrušením této volby začíná hra od takto vytvořené pozice.

Filip Hőfer, 2002

This help file was created with HelpScribble.


HelpScribble

HelpScribble is a help authoring tool developed and published by JGsoft.  This help file was created with the evaluation version of HelpScribble, which is why you can read this ad. Once the author of this help file is so honest to buy the software he or she uses, you will not see this ad again in his help files.

Recompiling the help project with the full version is all it takes to get rid of this ad and the little footers below each topic.

HelpScribble is a stand-alone help authoring tool. It does not require an expensive word processor.  You can download a free evaluation version at http://www.helpscribble.com/download.html

Here are some of HelpScribble's features:

•	The Setup program will properly install and uninstall HelpScribble and all of its components, including registry keys.

•	Create, edit and navigate through topics right in the main window. No need to mess with heaps of dialog boxes.

•	All topics are listed in a grid in the main window so you won't lose track in big help projects. You can even set bookmarks.

•	Use the built-in Contents Editor to create Windows 95-style contents files. Works a lot better than Microsoft's HCW.

•	Use the built-in Index Editor to easily maintain the Index of your help file.

•	Use the built-in Browse Sequence Editor to easily create browse sequences.

•	Use the built-in Window Editor to change the look of your help window and create secondary windows.

•	No need to mess with Microsoft's SHED: use the built-in SHG Editor to create hotspot bitmaps. Draw your hotspots on the bitmap and pick the topic to link to from the list.

•	With the built-in Macro Editor you can easily compose WinHelp macros whenever needed. It will tell you what the correct parameters are and provide information on them.

•	If you have a problem, just consult the online help. The help file was completely created with HelpScribble, of course.

These options are very interesting for Delphi and C++Builder developers:

•	If you are a component writer, use the Delphi Parser to build an outline help file for your component. Just fill in the spaces and you are done. HelpScribble can also extract the comments from your source file and use them as the default descriptions.

•	If you are an application writer, HelpScribble provides you with a property editor for the HelpContext property. You can select the topic you need from a list of topic titles or simply instruct to create a new topic. No need to remember obscure numbers.

•	The property editor also provides a tree view of all the components on your form and their HelpContext properties. This works very intuitively. (Much nicer than those help tools that simply mess with your .dfm files.)

•	HelpScribble can perform syntax highlighting on any Delphi source code in your help file.

Feel free to visit http://www.helpscribble.com/ for more information, or download your own free evaluation copy from http://www.helpscribble.com/download.html