Hlavní navigace

Něco pro karbaníky: Ferbl nejen pod Linuxem

11. 1. 2001
Doba čtení: 5 minut

Sdílet

Chtěl bych vás seznámit s první karetní hrou z našich luhů a hájů, která běží nejen pod Linuxem či jiným OS, ale můžete si ji třeba zahrát i s partičkou kamarádů. Hra se jmenuje Ferbl, ale znát ji můžete i pod jiným názvem, takto jí říkáme v Horoměřicích v hospodě na hřišti.

Pokud znáte hru Prší, což platí určitě o 90% populace u nás, tak vám nebude úplně cizí ani Ferbl, protože právě z Prší vychází. Hrají ho dva až čtyři hráči. Na začátku hry jeden z hráčů zamíchá karty a rozdá je každému po čtyřech. Poslední otočí na stůl a zbytek odloží tak, aby se z něj mohly lízat karty. Stejně jako v Prší vyhazujete kartu stylem hodnotu na hodnotu, barvu na barvu. Pokud nemáte co vyhodit musíte se líznout.

Svršek je měnič barvy, když ho odhodíte musíte oznámit barvu, na jakou měníte. Můžete ho vyhodit kdykoliv, nezáleží na kartě, která je na stole, ale nesmí to být eso nebo sedma. Vyhodit ho však nemůžete v případě, kdy je hodnota změněna na jinou hodnotu než svršky. Měnit hodnotu na kterou se hraje, je možné spodkem. Pokud je změněno na svršky a hráč má svrška, musí ho vyhodit, ale pokud má spodka, může ho vyhodit místo něj. Podobně jako u svrška, musíte určit hodnotu na kterou se bude hrát.

Esa se nepřebíjí jako v Prší. Hráč stojí a musí počkat než na něj přijde řada. Na sedmu se lížou dvě karty a také se nepřebíjí. Dále jsou zde dvě karty, které mají zvláštní význam. Na zeleného krále si musíte líznout pět karet a červená desítka způsobuje, že ostatní hráči si líznou po jedné kartě a vy dál pokračujete ve hře.

Vyhrává ten hráč, který jako svou poslední kartu odhodí svrška. Pokud už nemáte žádné karty v ruce, tak v Prší byste vyhráli, ale ve Ferblu si musíte líznout kartu a pokračovat. Uzavřít hru je možné pouze svrškem. Ostatní hráči mohou ve hře pokračovat nebo se pořadí určí ze score v kartách. Hra však může skončit i jinak, než že jeden hráč uzavře hru svrškem. Pokud si už nemůžete nalízat karty z balíčku, hra končí a o vítězi rozhoduje bodové ohodnocení v kartách neboli score.

Tabulka č. 95
karta význam ve hře score
sedma hráč líže dvě karty 7 bodů
osma obyčejná karta 8 bodů
devítka obyčejná karta 9 bodů
desítka normální karta kromě červené 10 10 bodů
spodek měnič hodnoty 1 bod
svršek měnič barvy 20 bodů za červený 40
král normální karta kromě zeleného krále 2 body
eso hráč stojí 11 bodů

Ferbl jsem začal programovat v C++ někdy v létě roku 1999, ale udělal jsem jenom jádro hry s textovým ovládáním bez uvažováním počítače. Loni na podzim jsem tyto zdrojáky oprášil s tím, že to musím dotáhnout do konce. Co bylo trochu funkční jsem znovu přepsal a uvažoval v čem udělat grafické ovládání. GUI toolkitů pro X-window je nepřeberné množství, ale také jsem chtěl, aby si hru mohli zahrát i kamarádi, co Linux nemají a nechce se jim ho kvůli jedné hře instalovat.

Naštěstí jsem narazil na multiplatformní toolkit wxWindows který tyto problémy řešil. Má jednotné API v C++ , takže můžu mít jeden zdrojový text a přeložit ho pro Linux (GTK nebo Motif) nebo pro MS Windows či dokonce pro Mac. Více o této knihovně a vývoji aplikací v ní najdete v článku, který už na ROOTovi vyšel.

Díky dokumentaci, která není zbytečně rozsáhlá a člověk se v ní snadno orientuje, a také mnoha příkladům, nebyl problém začít programovat. Nejprve jsem upravil jeden ukázkový příklad pro zobrazení karet, abych viděl jak budou vypadat při hře. Potom jsem vytvořil funkci, která na základě kliknutí myší zjistila kterou kartu chci odhodit. Nakonec jsem přidal sadu funkcí pro popis hry napsané v normálním céčku, udělal menu a bylo to hotové. Musel jsem ale vyřešit ještě jeden problém, než jsem se naplno pustil do programování Ferblu, a to kde sehnat obrázky karet. Nejdříve jsem si říkal „to bude práce je nascanovat a upravit“, ale nakonec jsem to vyřešil jednoduše díky nápadu, „že se to musí dát někde sehnat na webu“.

screen shot Ferblu

Ferbl si můžete stáhnout z mé stránky http://www.h-tech.cz/ferbl , kde naleznete zdroják pro přeložení wxFerbl-0.1.tar.gz a nebo hotové RPMko wxFerbl-0.1–1.i386.rpm Pro ty co mají jenom windoze, je zde ještě ferbl.exe 

Přeložit Ferbl pro Linux není složité. Musíte si nejprve sehnat někde wxWindows, nejlépe wxGTK, a nainstalovat balíky wxGTK a wxGTK-devel. Poté rozbalíte tarball, skočíte do adresáře wxFerbl-0.1 a spustíte gcc. Pokud zadáte ještě parametr -DDEBUG, budou se vám vypisovat debugovací hlášky.

tar xvzf wxFerbl-0.1.tar.gz
cd wxFerbl-0.1
gcc wxFerbl.cpp -Wall  `wx-config --libs --cflags` -o wxFerbl

Doufám, že si Ferbla zahrajete nejenom u počítače, ale také s kamarády, protože naprogramovat uvažování počítače, aby věděl, kdy co vyhodit, kdy si kterou kartu ponechat a kdy je lepší si líznout, bylo asi nejobtížnější. Samotná funkce player_computer() zabírá 310 řádek z 2474 programu, a to ještě není uděláno, aby si po otočení balíku počítač zapamatovával, co si lížete a podle toho hrál. Tohle bych chtěl dodělat a dále přeložit Ferbl i s pravidlama do angličtiny, aby si ho mohli zahrát hráči nejen u nás.

ict ve školství 24

Další verze by měla podporovat multiplayer a pro ten je nutno napsat server. Zatím jsem u jednoduchého serveru, kam se přihlašují klienti, zvolí si své jméno a řeknou, že chtějí hrát. Jestli bude, to záleží na tom, jak se hra chytne a jaký bude mít ohlas.
Škoda, že neexistují žádné veřejné servery, kde by se daly hrát karty stejně, jako se již dnes dají hrát šachy. Pokud by se mohlo hrát o peníze a malá provize za hru by šla provozovateli, byl by to možná velice ziskový podnik. Nehledě na možnost mít nějaký jednoúčelový terminál v každé hospodě.


Poznámka redakce: Máte také nějaký svůj zajímavý projekt (hru, aplikaci) a chcete se o ní podělit s ostatními? Napište nám a my rádi info zveřejníme. Získáte tak potenciální uživatele, případně i spolupracovníky pro další vývoj.

Autor článku