Pexeso

(Ročníkový projekt I)

Základní popis a ovládání programu

Program Pexeso je určen pro dva až čtyři hráče pexesa.

Po spuštění se objeví hrací plocha se zakrytými kartičkami a čtyřmi zelenými panely hráčů v rozích okna. Jak praví jednořádková nápověda na spodu okna, v tuto chvíli se ještě nehraje. Uživatelé, budoucí hráči pexesa, zadají svá jména do textových políček na čtyřech panelech. Hraje-li méně než plný počet hráčů, je třeba u nepoužitých panelů políčka vymazat.

Volbou Začít hru z nabídky Hra se hra spouští. Počítač zamíchá kartičky pexesa, skryje nepotřebné panely hráčů a zvýrazní panel prvního hráče, který hru zahajuje. Hráč klepnutím zvolí dvě kartičky, prohlédne si je a dá stejnou příležitost i protihráčů a pak je opět přiklopí. Automaticky se zvýrazní panel druhého hráče a hráči se tak pravidelně střídají.

Jakmile hráč narazí na dvě stejné kartičky, přemístí se kartičky z hrací plochy na hráčův panel a hráči se přičte jeden bod. V souladu s pravidly pexesa má pak právo odkrývat kartičky ještě jednou.

Hra končí vyčerpáním všech kartiček na hrací ploše. Jakmile k tomu dojde, počítač hru sám formálně zakončí vyhlášením výsledků. Předčasně lze hru ukončit volbou z nabídky Hra, kdy počítač navíc odkryje všechny zbylé kartičky na hrací ploše, a samozřejmě též ukončením celého programu.

Po skončení hry mají uživatelé opět možnost zadat do panelů jména hráčů a hru spustit, kartičky se samozřejmě zamíchají jinak.

Pexeso pod kapotou

Program Pexeso byl napsán v prostředí Delphi 3, jeho jádrem je jediný formulář s připravenými panely, řádkovou nápovědou, nabídkami a rovněž skrytým seznamem obrázků kartiček. Po spuštění se navíc na rací ploše vytvoří 64 kartiček pexesa - komponent typu TImage.

Pro celou hru pexesa je klíčová vlastnost stav celého formuláře. Její čtení představuje obyčejné čtení z tajné proměnné, při zápisu do této proměnné se však vyvolá procedura, která kromě změny hodnoty interní proměnné provede též všechny potřebné úpravy hrací plochy - zvýrazní jiného hráče, upraví řádkovou nápovědu, zkontroluje, jestli poslední dvě odkryté kartičky nenesly stejný obrázek a předá je v takovém případě úspěšnému hráči, případně zakončí celou hru vyhlášením výsledků.

Vlastnost stav nabývá několika povolených hodnot. Hodnota -1 je nastavena, pokud se právě nehraje. Vyšší hodnoty pak indikují, který hráč je právě na tahu a stav mod 4 udává, v jaké fázi tahu je: 0, má-li odkrýt první kartičku, 1, má-li odkrýt druhou, 2, jsou -li již obě kartičky odkryty a 3, čeká-li počítač na zakrytí druhé kartičky.

Všechny kartičky reagují na klepnutí myši stejnou metodou kartickaClick, v níž zároveň ověřují, zda je podle pravidel přípustné jejich otočení (jestli např. nejsou již dvě kartičky odkryty). Vlastnost tag každé kartičky udává v absolutní hodnotě číslo obrázku, který byl kartičce při míchání přiřazen, znaménko této vlastnosti pak říká, zda je kartička právě zakryta nebo odkryta. Otočení kartičky tedy představuje jen kontrolu stavu hry, změnu obrázku kartičky, negování jejího tagu a zvýšení stavu hry o jednu fázi. O vše ostatní se postará správce vlastnosti tag.

Za povšimnutí stojí ještě modifikovatelná velikost kartiček. V prostředí Delphi stačí změnit příslušné vlastnosti v seznamu obrázků a načíst nové obrázky (musí být uloženy s přadovými čísly 1 až 32, číslo 0 je vyhrazeno pro obrázek rubu kartiček), o velikost kartiček na hrací ploše se již postará program sám při jejich vytváření.

Ke stazeni

K dispozici je zde zdrojovy projekt pro Delphi 3. Soucasti baliku je i kompilovany spustitelny soubor, ale pochybuji, ze bude na vasem pocitaci opravdu spustitelny... Mam sve zkusenosti s Deplhi. Navic si muzete stahnout balik pouzitych obrazku a pripadne si projekt prekompilovat s vetsimi nebo mensimi kartickami. Staci zmenit velikost ImageListu a karticky znovu nacist. Hned po nacteni doporucuji zvolit Stretch a prepsat transparentni barvu na clNone, jinak se karticky importuji pitome.

Ondřej Bojar, obo@cuni.cz
http://www.cuni.cz/~obo/
2.6.1998