Osztott rendszerek beadandó

Info

A programban feltételezhető, hogy minden adat helyesen szerepel, pl. a megadott nevű fájl létezik, megfelelő a tartalma, nincsen duplikált bejegyzés benne stb.

Főprogram

A feladat egy állatfuttató verseny szimulációját valósítja meg. A verseny lezajlását a verseny csomagban található Verseny osztály írja le.

A versenyen elindítható állatok adatait egy fájl tárolja, amelynek nevét a Verseny főprogramja parancssori paraméterként kapja meg. A második parancssori paraméter azt írja le, hány (szimulált) percig tart a futam. A harmadik parancssori paraméter a pálya hosszát adja meg.

A fájl első sora azt tartalmazza, hány állatfajta lesz, majd a következő sorok egy-egy állat adatait tartalmazzák a következőképpen. Az alábbi példában a sólymok meg tudják menteni a kutyákat és a macskákat, a macskák pedig el tudják fogni az egereket.

4
sólyom;20;MENT;kutya,macska
kutya;15;ELFOG;
macska;8;ELFOG;egér
egér;6;MENT;

A főprogram a 2018 porton indít egy szervert, és várja tetszőlegesen sok kliens beérkezését, amelyek egyszerre is lehetnek aktívak. A főprogram naplózzon minden (az alábbiakban részletezett) eseményt a sztenderd kimenetre.

A kliens működése

A kliens soronként küld üzeneteket a szervernek. A legelső sorban a kliens elküldi a nevét. A további sorokban az üzenetek az alábbi tartalmúak lehetnek; a nagybetűs részek paraméterek.

A rendszer állapota

A rendszer állapotát a következő formátumban írja ki a szerver a kliensnek:

talon:
    1 macska
    2 egér

pálya (30 méter):
    8 sólyom (Aladár)
    13 macska (Éva)
    14 macska (Aladár)
    15 egér (Aladár), kutya (Béla)

A legelső kiírás a talon tartalmát mutatja be, jelenleg három állat van benne. A további sorok a pálya tartalmát mutatják.

A játék működése

Amikor egy állat elindul a versenyen, bekerül a pálya elejére. Ezután a rendszer az állat sebességéből adódó tempóban lépteti az állatot a következő méterre. A leírásban szereplő szám azt adja meg, hogy 10 (valódi) másodperc alatt hány métert tesz meg az állat. Például a sólyom sebességértéke 20, ami azt jelenti, hogy a program fél másodpercenként fogja léptetni.

Amikor az állat eléri a pálya végét, kikerül a játékból, és a szerver egy szöveges üzenettel értesíti a kliensét erről. Ha a kliens már nincsen kapcsolatban a szerverrel ebben a pillanatban, akkor az állat a talonba kerül, és ingyen elindítható újra.

Amikor egy állat lép egyet, megvizsgálja, hogy milyen állatok tartózkodnak az új helyén. Ha az állat feladata más állatok elfogása (ELFOG típus), és tartózkodik a mezőn más játékosnak elfogható fajta állata, akkor a belépő állat elfogásba kezd, ami 5 másodpercig tart. Ha az elfogás sikeresen véget ért, akkor az elfogott állat bekerül a talonba.

Ha az állat feladata más állatok megmentése (MENT), akkor az új helyre lépéskor megvizsgálja, hogy zajlik-e ott éppen valamilyen saját állat elfogása. Amennyiben igen, és a belépő állat képes megmenteni az elfogottat, akkor az elfogás sikertelen: az elfogó állat kikerül a versenyből a talonba, az elfogás alatt álló és a megmentő állat pedig folytatja az útját.