3. Formální specifikace
Zde jsou ve zkratce body, které ve formální specifikaci budeme popisovat pro přesnou a korektní následnou realizaci programu. Všechny body pak jsou popsány podrobněji.
3.1. Úvod programu a získání základních údajů od uživatele:
Obrazovka bude rozdělena na dvě shodné
části pro každého hráče zvlášť. Do každé kolonky se
lze přepnou kliknutím myši nebo lze použít i klávesu zvanou
"tabelátor".
V každé části se volí tyto parametry:
3.1.1. kolonka pro zápis jména:
Do této kolonky uživatel zapíše své jméno. Standardně bude v této kolonce nastaveno Hráč 1 (respektive Hráč 2) nebo něco podobného.
3.1.2. výběr soupeře:
V této kolonce volíme jednu ze dvou možností:
Standardně je v této kolonce zvoleno počítač.
3.1.3. výběr obtížnosti:
Tato kolonka bude zpřístupněna pouze
v případě, že v kolonce výběr soupeře
bude zvoleno počítač.
Pak lze zvolit jednu z následujících možností:
Standardně zde bude vybráno normální.
3.1.4. výběr barvy figur:
Zde je možnost vybrat si barvu figur ze
dvou barev používaných ve hře šachy a tím vlatně určit,
která strana začne. Změněním barvy v této kolonce se projeví
i změna v té samé kolonce u druhého hráče na barvu opačnou.
Barvy pro výběr jsou tyto:
Standardně má Hráč 1 předvolenou barvu jako bílou a Hráč 2 černou.
3.1.5. výběr možnosti ovládání hry:
V této kolonce si může uživatel
zvolit ovládání hry. Tato kolonka je zpřístupněna pouze v případě,
že v kolonce výběr soupeře je nastaven člověk.
Možnost výběru je tento:
Standardně je zde zvoleno ovládání pomocí myši.
ovládání figur pomocí
myši:
Nad příslušnou figuru, kterou chceme přemístit, umístíme
kurzor myši, levým tlačítkem chytneme a bez toho, abychom
toto tlačítko pustili, přemístíme figuru na námi určené
políčko (o korektnost pohybu figur se postará program - viz níže).
ovládání figur pomocí klávesnice:
Vybereme si figuru, kterou chceme přemístit, a zadáme její
souřadnice. Poté zadáme cílové souřadnice (o korektnost
pohybu figur se postará program - viz níže). Souřadnice figur
se budou zadávat ve formátu písmeno a za písmenem hned číslo.
Takže například. b5, e8, a4,...
Nebude-li se na první souřadnici vyskytovat žádná figura,
program to zahlásí a vyzve uživatele k zadání nové souřadnice,
na níž se figura už vyskytuje.
3.1.6. výběr měření času hry:
V této kolonce se vybere,
zda má počítač měřit délku tahů každáho hráče či
nikoliv.
Standardně je zde zvoleno, že ano. (Tato položka lze vypnout i
v průběhu hry.)
3.2. Tvar šachovnice a rozmístění figur
pro bílé figury dole a černé figury nahoře | pro černé figury dole a bílé figury nahoře |
![]() |
![]() |
vysvětlivky:
p - pěšec
V - věž
J - jezdec
S - střelec
D - dáma
K - král
3.3. V průběhu hry:
3.3.1. hlídání korektnosti tahů a jaké jsou korektní tahy:
Program bude hlídat
korektnost tahů figurami v souladu s pravidly šachu. Program
nahlásí nepřípustný tah, vrátí figuru na své původní místo
a vyzve uživatele k opakovanému provedení tahu. Samozřejmě,
že program nahlásí další situace, které nastaly.
Tyto situace jsou:
Korektní tahy:
Tyto tahy lze provést jen v případě, nestojí-li v cestě žádná jiná figura (ani vlastní ani soupeřova), jinak lze provést tah až tam, kde se figura dostane bez přeskočení jiné (výjimku tvoří jezdec), nebo, je-li to soupeřova figura, lze ji odstranit ze hry a na její místo postavit svou vlastní figuru (výjimku u odstraňování figur ze hry tvoří pěšec).
pěšec -
tato figura se může pohybovat pouze směrem k soupeřově
straně a to ob jedno políčko, pokud s ním ještě
nebylo pohnuto. Jinak se může pohybovat pouze o jedno
políčko směrem k soupeřově straně.
Ohrožuje-li figura soupeřovu ze šikma, může provést
pohyb ze šikma o jedno políčko s tím, že je soupeřova
figura odstraněna ze hry a nahrazena vlastní figurou.
Doputuje-li pěšec až k soupeřovu okraji šachovnice,
přemění se na dámu a po celou hru už z něj je dáma.
Pohyby pěšce jsou patrny z následujícího obrázku.
![]() |
věž - tato
figura putuje po šachovnici ve sloupcích nebo řádcích
a je jedno, o kolik políček se posune.
Pohyby věže jsou patrny z následujícího obrázku.
![]() |
jezdec -
tato figura se pohubuje do tzv. "L"-ka, tzn.
nejprve o dvě políčka a pak o jedno políčko kolmo k
předchozím dvěma, nebo o jedno políčko a pak o dvě
políčka kolmo k předcházejícímu jednomu políčku.
Tato figura tvoří výjímku. Může figury přeskakovat.
Pohyby jezdce jsou patrny z následujících obrázků.
![]() |
![]() |
střelec -
tato figura putuje po šachovnici ze šikma a je jedno, o
kolik políček se posune.
Pohyby střelce jsou patrny z následujícího obrázku.
![]() |
dáma - tato
figura simuluje pohyby věže a střelce.
Pohyby dámy jsou patrny z následujícího obrázku.
![]() |
král - tato
figura se pohybuje libovolným směrem vždy o jedno políčko
(výjímku tvoří rošáda). Král se nesmí svým tahem
nebo i tahem jiné figury úmyslně dostat do šachu. Důsledkem
toho je, že se vedle sebe nesmí postavit dva králové.
Král také nemůže sebrat figuru, která jej ohrožuje.
Může buď ujet nebo sebrat figuru, která jej ohrožuje,
jinou figurou.
Je-li král v šachu, je povinnost hráče libovolným
tahem libovolnou figurou krále šachu zbavit .
Pohyby krále jsou patrny z následujícího obrázku.
![]() |
Některé další tahy a pojmy:
garde - ohrožení dámy libovolnou figurou
rošáda -
pohyb věží a králem současně (obě figury se nesměly
před provedením rošády pohnout a mezi věží a králem
se nesmí nacházet žádná další figura) a to následovně:
Malá rošáda se provádí králem a věží,
která je ke králi blíže, a to tak, že se král
posune o dvě pole směrem k věži a věž se posune směrem
ke králi také o dvě pole, čímž jej přeskočí (viz
obrázek).
Před provedením malé rošády | Po provedení malé rošády |
![]() |
![]() |
Velká
rošáda se provádí králem a věží, která je
od krále dále, a to tak, že se král posune o dvě
pole směrem k věži a věž se posune směrem ke králi
o tři pole, čímž jej přeskočí (viz obrázek).
Před provedením velké rošády | Po provedení velké rošády |
![]() |
![]() |
Rošáda
je povolena provést pouze jedenkrát za hru u každé
strany.
Ovládání figur u rošády bude následnovné: myší
chytneme krále a posuneme jej o dvě políčka směrem
ke věži a věž již automaticky krále přeskočí.
Použijeme-li klávesnici, tak nejprve zadáme souřadnice
krále, a pak číslo pole, kam se má král přemístit
a věž provede automatický tah na pole vedle krále (přeskočí
jej).
3.3.2. možnost vypnutí měření času hry:
Program umožní vypnutí času i v průběhu hry, čímž se přestane započítávat čas tažení každého hráče. Tento čas už nelze znovu zapnout, neboť výsledky z něj získané by byly nekorektní a zkreslené.
3.3.3. možnost vrácení tahu:
Program bude umožňovat
vracení tahu zpět. Z tohoto poznatku plyne, že je možno vrátit
všechny tahy postupně, čímž vlastně může uživatel hrát
znova.
Možnost vrátit tah bude pouze ve dvou případech a to ve hře
člověka proti počítači nebo ve hře člověka proti člověku.
3.3.4. možnost nápovědy:
Nápovědu může použít uživatel v případě, že neví, jak má dále táhnout. Na tuto možnost bude vyhrazena speciální klávesa (např.: "F1"), kdy po stisku této klávesy provede počítač jeden tah za uživatele (samozřejmě, že tento tah bude tím nejlepším tahem). Pokud se uživateli nebude příslušný tah líbit, má možnost jej vrátit!!!!
3.3.5. hlídání konce hry a jaké mohou nastat konce hry:
Program hlídá situaci, kdy hra bude končit. V případě, že dojde k situaci, která bude naznačovat konec hry, program tuto skutečnost nahlásí a hru ukončí.
Možné konce hry:
mat - tento
konec hry nastává v případě, že je ohrožován král,
který nemá možnost se už nijak vyhnout, aniž by byl
znova ohrožován a byl v šachu. A příslušný hráč
nemá ani figuru, kterou by zabránil šachu.
Tento konec hry je teda vítezným koncem hry pro jednoho
z hráčů.
pat - tento konec hry nastává v případě, že jeden hráč druhému nemůže dát mat (tj. oba hráči mají tak málo figur, se kterými už nelze dát mat, nebo některý z hráčů nemůže táhnout, aniž by se dostal do šachu). Tento konec hry je vlastně remízou a žádný z hráčů nevyhrál.
V každém případě hra končí ať už vítězstvím nebo remízou.
3.4. Konec hry:
3.4.1. vypsání vítěze:
Počítač vypíše jméno hráče, který vyhrál, a oznámí jeho barvu. V případě, že hra zkončila patem, program tuto skutečnost zahlásí.
3.4.2. vypsání času každého hráče a celkového času:
Program dále vypíše čas,
po který každý z hráčů táhl figurama, pouze v případě,
že tato možnost nebyla v úvodu nebo v průběhu hry vypnuta.
V každém případě program vypíše čas, po který doba hry
trvala.
3.4.3. vypsání nejlepších hráčů:
Program dále umožňuje vypsání a zaznamenání nejlepších výsledků podle doby trvání času tahu hráče (myslím si, že je tento bod zbytečný a neobjektivní, ale vyřazovat jej z této dokumentace nebudu).
3.4.4. možnost začít hru znova:
Dále program umožňuje začít hru znova, což znamená, že se musíme vrátit na začátek, teda k "Úvodu programu a získání základních údajů od uživatele".
V tomto momentě končí formální specifikace....