Síťový mariáš se sestává ze dvou základních částí – serveru a klienta. Klientské části je věnována převážná část tohoto dokumentu. Obě části pro svou kompilaci a spuštění vyžadují OS unixového typu.
Rozbalte soubor MariasServer-<číslo verze>.tar.gz do libovolného adresáře (např. /usr/src). Přejděte do adresáře se soubory (např. /usr/src/MariasServer<cislo verze>). Pomocí následujících příkazů program zkompilujete a nainstalujete.
# ./configure
# make
# make install
Pokud chcete program pouze přeložit, a neinstalovat, nespouštějte instalaci příkazem make install. Po úspěšném překladu příkazem make najdete v adresáři <cesta ke zdrojovým souborů>/src přeložený program mariasserver.
Vlastní instalace probíhá stejně jako v případě serveru. Navíc je ovšem potřeba mít v systému nainstalovány tyto knihovny:
knihovna GTK+ (testováno ve verzi 2.4.x) – www.gtk.org
rozhraní C++ pro knihovnu GTK+ - knihovna GTKMM (testováno ve verzi 2.2.x) - www.gtkmm.org
pkgconfig, make, překladač g++
ostatní závislosti potřebné k instalaci výše zmíněných knihoven a nástrojů
Všechny knihovny by měly být nainstalovány včetně vývojových (*-devel) verzí.
Klienta spustíte příkazem ./simplemarias v adresáři projektu (<cesta k projektu>/src), nebo, pokud jste po překladu provedli také instalaci, příkazem simplemarias.
Pro zahájení hry se nejprve připojte k hernímu serveru. V hlavním menu vyberte Hra > Připojit. Objeví se dialog pro připojení k serveru. Vyplňte Vaše uživatelské jméno (tím budete identifikování při hře), a napravo od seznamu serverů klikněte na „Přidat“, a dialogu vlastností serveru vyplňte tyto údaje: jméno serveru (pouze pro vaši potřebu), adresa serveru a port (tyto údaje zjistíte od provozovatele serveru, ke kterému se chcete připojit). Po úspěšném připojení se objeví upozornění.

Obrázek
I: Dialog pro připojení k serveru

Obrázek
II: Dialog vlastností serveru
Hra probíhá pomocí textových příkazů, které klient přijímá od serveru, nebo je naopak serveru odesílá. Po připojení se server pošle příkaz serv connAccepted, pokud se připojení zdařilo a na serveru není připojeno dost klientů (<= 3), nebo serv connRefused, pokud je již připojeno příliš mnoho klientů. Další příkazy pro hru najdete v seznamu příkazů.
Karty jsou reprezentovány jako dvojice barva:výška, oddělené mezerou. Barva je některá z následujících: cervene, kule, zaludy, zelene. Výška má některou z následujících hodnot: 7, 8, 9, 10, spodek, svrsek, kral, eso. Všechny identifikátory jsou psány malými písmeny.
Servisní příkazy slouží výměně informací o hráči a serveru, informací o spojení a podobně
|
Příkaz |
Odesílatel |
Popis |
|
serv connAccepted |
Server |
Připojení bylo přijato |
|
serv connRefused |
Server |
Připojení bylo odmítnuto – pro příliš mnoho hráčů |
|
serv badCmd [popis] |
Server |
Hráč odeslat špatný nebo neznámý příkaz, nepovinným argumentem je popis chyby |
|
serv newClient <jméno_hráče> |
Server |
Byl připojen nový hráč, parametrem je jeho jméno |
|
Serv newClient <jméno_hráče> |
Hráč |
Hráč oznamuje serveru svoje jméno |
|
serv discClient <jméno_hráče> |
Server |
Hráč <jméno_hráče> se odpojil |
|
serv changeName |
Server |
Hráčovo jméno už je použito, a tak server žádá o změnu přezdívky |
|
Serv changeName <jméno_hráče> |
Hráč |
Hráč odesílá serveru změněnou přezdívku v reakci na požadavek changeName od serveru |
Informační příkazy slouží k zjišťování informací o hře, připojených hráčích, jejich celkovém skóre a podobně.
|
Příkaz |
Odesílatel |
Popis |
|
info stych |
Hráč |
Hráč žádá server o seznam karet v aktuálním štychu – odpověď je buď seznam karet, nebo serv badCmd, pokud se nehraje |
|
info stych <seznam_karet> |
Server |
Server posílá hráči seznam karet ve štychu |
|
info skore |
Hráč |
Hráč žádá server o informace o skore jednotlivých hráčů |
|
info skore hrac1:skore1 … hracN:skoreN |
Server |
Seznam skóre jednotlivých hráčů – seznam ve tvaru <přezdívka>:skóre oddělený mezerami |
|
info trumf |
Hráč |
Hráč se ptá, jaká je barva trumfu |
|
Info trumf <barva> |
Server |
Server posílá informaci o barvě trumfu |
|
Info hraci |
Hráč |
Hráč se ptá, jací hráči jsou aktuálně připojeni |
|
Info hraci hrac1 hrac2 hrac3 |
Server |
Seznam aktuálně připojených hráčů |
|
Info cards |
Hráč |
Hráč se ptá, jaké má karty v ruce |
|
Info cards <barva1:vyska1> … <barvaN:vyskaN> |
Server |
Odpověď – seznam karet, které má hráč v ruce |
|
info leader <jméno_předáka> |
Server |
Který z hráčů je předákem |
Herní příkazy slouží k vlastní hře – například k odložení karty do štychu, výběru trumfů atd.
|
Příkaz |
Odesílatel |
Popis |
|
game start |
Server |
Server čeká na hráčovo potvrzení, že může začít hra |
|
game start |
Hráč |
Hráč potvrzuje, že je připraven ke hře |
|
game leader |
Server |
Hráčovi je sděleno, že se stal předákem |
|
game repeat <jméno_příkazu> |
Server |
Server žádá hráče, aby zopakoval naposledy požadovaný příkaz, například proto, že v hráčově příkazu nebylo něco v pořádku |
|
game cards <seznam_karet> |
Server |
Server rozdal hráčovi karty |
|
game trumf |
Server |
Server žádá od hráče volbu trumfu – hráč může odpovědět rovnou game barva spatna, pokud chce hrát betla nebo durcha |
|
game trumf <karta_trumfu> |
Hráč |
Hráč posílá serveru informaci o zvoleném trumfu |
|
game trumf <barva_trumfu> |
Server |
Server oznamuje ostatním hráčům, jak byly zvoleny trumfy |
|
game talon |
Server |
Server žádá hráče, aby odhodil karty do talonu |
|
game talon barva1:vyska1 barva2:vyska2 |
Hráč |
Hráč odesílá karty, které hodil do talonu |
|
game talon barva1:vyska1 barva2:vyska2 |
Server |
Server předává hráčovi karty v talonu, pokud se hráč rozhodne hrát betla nebo durcha |
|
game barva |
Server |
Předák se ptá, jaká je barva |
|
game barva [ dobra | spatna ] |
Hráč |
Jaká je barva |
|
game gameType |
Server |
Jakou hru chce hráč hrát |
|
game gameType [ normal | sto | sedma | stosedma] |
Hráč |
Předák oznamuje, jakou hru chce hrát |
|
game gameType [ normal | sto | sedma | stosedma] |
Server |
Server posílá ostatním informaci, pro jakou hru se předák rozhodl |
|
game betlType |
Server |
Server se ptá předáka, jakou vyšší hru chce hrát (betla/durcha) |
|
game betlType [ betl | durch ] |
Hráč |
Hráč se rozhodl pro betla/durcha |
|
game vys |
Server |
Server se ptá hráče, zda si dá flek – hráč může odpovědět také game gameType sedma, pokud chce hrát sedmu proti |
|
game vys [yes / hra | no | sedma | sedmaHra ] |
Hráč |
Hráč odpovídá, jestli si dá flek na hru/sedmu/oboje |
|
game put |
Server |
Server se ptá hráče na kartu do štychu |
|
game put barva:vyska |
Hráč |
Hráč odhazuje kartu do štychu – pokud karta neodpovídá pravidlům, server oznámí game badCard |
|
game result [ lost | won ] |
Server |
Server oznamuje hráčům, zda předák prohrál (lost), či vyhrál (won) |
|
game rotate |
Server |
Otázka od serveru, kolik karet chce hráč sejmout |
|
game rotate <číslo> |
Hráč |
Hráč oznamuje, kolik karet sejmul |
Pomocí příkazů zprostředkovávajících informace o průběhu hry server informuje hráče o akcích jejich spoluhráčů, o změně fáze hry (začátek hry, nový štych...). Základní syntaxe je: ginf <jméno_hráče> <příkaz_který_hráč_provedl> [parametry]
|
Příkaz |
Odesílatel |
Popis |
|
ginf server newGame |
Server |
Začíná nová hra |
|
ginf <jméno_hráče> talon |
Server |
Hráč odhodil talon |
|
ginf <jméno_hráče> trumf |
Server |
Hráč odhodil trumfy |
|
ginf <jméno_hráče> barva [ dobra | spatna ] |
Server |
Hráč odpověděl barva dobrá/špatná |
|
ginf <jméno_hráče> betlType [ betl | durch ] |
Server |
Jakou vyšší hru zvolil hráč |
|
ginf <jméno_hráče> vys [ hra | sedma | sedmaHra | no ] |
Server |
Hráč si dal flek na hru/sedmu/obojí, nebo nedal flek |
|
ginf <jméno_hráče> gameType [ normal | sedma | stoSedma ] |
Server |
Hráč zvolil typ hry |
|
ginf server newTrick |
Server |
Server oznamuje hráčům, že |
|
ginf <jméno_hráče> put barva:vyska |
Server |
Hráč odhodil kartu do štychu |
|
ginf server endTrick |
Server |
Štych skončil |
Pro ukončení hry použijte položku menu Hra > Odpojit. Pokud se odpojí některý z vašich spoluhráčů, budete odpojeni rovněž, předtím Vám ovšem bude zasláno serverem konečné skóre hry. Pro další hru (s novými spoluhráči) se musíte opět připojit.
Server má tyto volby
-p portNum – server poběží na portu portNum (výchozí je port 2902)
-d – server poběží jako démon na pozadí