sirky

Transkript

sirky
Úloha č. 1 – RMI
Herní server pro hru 'sirky'
Zadání:
Implementujte server, který nabídne klientovi možnost hrát hru 'sirky'. Pravidla hry jsou následující: 2 hráči
si určí počet sirek, se kterými budou hrát, pak si zvolí kolik sirek budou moci odebrat při jednom tahu a kolik
sirek může zbýt. V průběhu hry se střídají v odebírání sirek. Každý musí odebrat 1 až předem dohodnutý
počet sirek. Na koho zbude určený minimální počet sirek, ten prohrál.
V našem případě budeme automaticky předpokládat, že se může brát maximálně 5 sirek (včetně) a že
prohrává ten, kdo sebere poslední sirku.
Server by měl poskytovat možnost výběru z více současných her – funkce list, create a join.
Hra je identifikována názvem partie (= jméno hry, id hry). Hra získává informace o tazích od klienta a
ukládá je do svého logu a mění svůj vnitřní stav (počet sirek, hráč na tahu, status hry). Hra se může nacházet
v následujících stavech – ready, played, ended.
Klient má možnost přihlásit se k serveru, vybrat/založit hru a poté odesílat posloupnost jednotlivých tahů (za
oba hráče).
Vnitřní struktury
Hra musí ukládat svůj průběh do logovacího souboru. Každá hra má svůj logovací soubor.
Např.:
0;2;30
tah#;hráčID;počet_sirek
Úvodní řádek má formát: 0;pocet_hracu;pocet_sirek
Dávkové zpracování
./server [IP_adresa] [cislo_portu]
, kde IP_adresa a cislo_portu specifikuje, kde má server naslouchat
./client IP_adresa cislo_portu konf_soubor
, kde IP_adresa a cislo_portu specifikují, kde je potřeba hledat server a v souboru je posloupnost příkazů pro
klienta. Příkazy mohou mít jeden z následujících tvarů:
list
join game_id
create game_id num_of_matches
turn player_id num_of_matches
Návrh implementace:
(pouze nezávazný návrh)
class Server
Game[] list()
void create(game_id, num_of_matches)
Game join(game_id)
class Game
Status turn(player_id, num_of_matches)
Status getStatus()
Ukázkový výstup:
Obsah souboru konf_soubor
list
create pokus1 25
list
create pokus2 10
list
join pokus2
turn 1 4
turn 2 1
turn 1 4
turn 2 1
Výstup z klientské aplikace
>> list
<< Games:
>> create pokus1 25
<< Game 'Pokus1' (25) created
>> list
<< Games: Pokus1
>> create pokus2 10
<< Game 'Pokus2' (10) created
>> list
<< Games: Pokus1;Pokus2
>> join Pokus2
<< Game 'Pokus2' joined
<< Game 'Pokus2' status: player
>> turn 1 4
<< Game 'Pokus2' status: player
>> turn 2 1
<< Game 'Pokus2' status: player
>> turn 1 4
<< Game 'Pokus2' status: player
>> turn 2 1
<< Game 'Pokus2' status: Player
1 turn, 10 matches left
2 turn, 6 matches left
1 turn, 5 matches left
2 turn, 1 matches left
1 wins

Podobné dokumenty

altera

altera řádky , tj. v DOSu nebo konzoli WIN typu NT. Příkladem čísla HD je např. 3043-0FF6 . Na základě registrace zašle ALTERA na naši e-mailovou adresu soubor licence.dat. Tento soubor nakopírejeme do ně...

Více

Seznam podporovaných služeb v protokolu P4 fy. Elvis

Seznam podporovaných služeb v protokolu P4 fy. Elvis Zformátuje paměť FLASH. Vymaže všechna oprávnění a všechny záznamy. Používejte opatrně!!! Při nenulové hodnotě dat navíc paměť vyplní hodnotami FF (kromě sektorových značek). Smaže naposledy odesla...

Více

Zahájení disciplinárního řízení č. 13

Zahájení disciplinárního řízení č. 13 Červená karta během zápasu, Druhé napomenutí během utkání, 2.ŽK + ČK Nesportovní chování bezohledné podražení protihráče ze strany v souboji o míč v nepřerušené hře. 1.ŽK za projevy nespokojenosti ...

Více

Řád DC Brno - Master Internet

Řád DC Brno - Master Internet probíhá prostřednictvím logovacího portálu v prohlížeči zadáním zákaznického ID a hesla pro podporu) či nainstalované ethernetové zásuvky na zdech.

Více

Money - Zoner InShop

Money - Zoner InShop 3.1 Co je převod agendy Pro pochopení převodu agendy, je nutné pochopit základní logiku datové výměny v inShopu 4. Ta je postavena na tom, že každý záznam (zákazník, objednávka, výrobek atd.) má un...

Více

1. test z PJC Jméno studenta: Pocet bodu

1. test z PJC Jméno studenta: Pocet bodu ukončený znakem '\0' (prohodí první znak s posledním, druhý s předposledním atd.) a vrátí ukazatel na začátek tohoto řetězce. Korektně ošetřete případ, kdy zadaný řetězec je prázdný. char *strrev(c...

Více

Starý bysnys Sociální byznys Reach Engage Discover Act

Starý bysnys Sociální byznys Reach Engage Discover Act  Nechte zaměstnance, ať si sami udržují svůj profil  Nechte vzniknout přirozeným komunitám napříč firmou

Více

Logování - Robotomie.cz

Logování - Robotomie.cz Tato konfigurace nejprve definuje appender A1 typu XMLFileAppender a XMLLayout. Appender určuje, kam budou data z logování ukládána, v tomto případě do souboru. V případě, že logování probíhá do ob...

Více

Honeywell

Honeywell OPTIMALIZACE VYUŽITÍ FOTOTERMICKÉ ENERGIE U SOLÁRNÍHO SYSTÉMU PRO PŘÍPRAVU TUV V diplomové práci [1] bylo zjištěno že měřený fotoremický solární systém není schopen přijmout veškerou prakticky využ...

Více