fel
le

Várak

Készítsen kliens + szerver alkalmazást az alábbi problémára: a közösség egy várrendszert épít. 10 vár van. Minden várnak vannak tulajdonosai (induláskor senki, később akár több tulajdonosa is lehet). A várak felépítése N munkaóra (1000<=N<4000), ezen intervallumbeli random szám. A társaság loginol, és építi a várakat. Csak az tud építeni, aki valamely vár tulajdonosa már. Ő a saját várába nem tud építeni, csak másokéba. Minden vár nyilvántartja hol tart az ő építése (pl. 3200 munkaórás várba már 780 munkaórát beleépítettek, 24% kész), és mi az ő K szorzója (1<=K<=2 tört random). Ha egy várba beleépítettek M munkaórát, akkor a vár tulajdonosai M*K munkaórát beleépíthetnek mások váraiba. Tehát ha egy várba 780 munkaórát építettek már bele, és K=1.3, akkor a vár tulajdonosai összesen 1014 munkaórát építhetnek be mások váraiba. Ezen érték 10%-a a saját vár építésébe is beleszámít! A vár nyilvántartja, hogy a tulajdonosai mennyit építettek be mások váraiba. Induláskor minden vár megenged 50 munkaórát beleépíteni mások várába. Amelyik vár előbb elkészül, annak a tulajdonosai nyernek!

vár:

  • N értéke [1000,4000] random egész
  • K értéke [1,2] random tört
  • várbaÉpítettÓrákSzáma egész
  • várTulajdonosaiÁltalMásVárakbaÉpítettÓrákSzáma
  • tulajdonosokListája

A protokoll azt alábbiakból épül fel:

  • helyzet: kilistázza a 10 vár állapotát, vár sorszáma, tulajdonosok száma, vár készültségének százaléka (nem az N értéke csak a százalék!)
1|6|24%
  2|2|30%
  3|7|78%
  stb
 
  • login|<user>|<jelszó>: értelemszerű, a szerver fogadjon el most minden nevet és jelszót. ha a login tulajdonosa már valamelyik várnak, akkor a szerver válaszában jelezze ezt ki
OK|nem vagy tulajdonos még
  OK|3-as vár a tulajdonod
 
  • beszallok|<vár-id>: csak login után, és ha még nem vagy tulajdonos semelyik várban, így jelzed hogy melyik vár tulajdonosa kívánsz lenni
OK|innentől a 3-as vár tulajdonosa vagy
  ERR|már tulajdonosa vagy egy másik várnak
 
  • a-mi-várunk: csak login után, és ha már tulajdonosa vagy egy várnak, megtudhatod az összes információt (N értéke, K értéke, aktuális beépített órák száma, mások várába eddig beépített órák száma, tulajdonosok listája)
ERR|nem is vagy tulajdonosa egyik várnak sem
   OK|3200|1.3|780|650|lajos|gizi|peter|zozo
 
  • epit|<vár-id>|<órák-száma>: csak login után, és ha tulajdonos vagy. a tulajdonodban lévő vár N értéke szorozva K értéke plusz az első 50 ingyen óra, levonva az eddig mások várába épített órák száma => ennyit szabad építeni. ha az órák száma ennél kevesebb, akkor a parancs végrehajtható, különben error. A mások várába épített munkamennyiség 10%-a a saját vár építésébe is beleszámít! Nem lehet építeni, ha a másik vár már 100%-ban kész van, de szabad több munkát beleépíteni, mint amennyivel épp 100%-ban lenne kész (hiányzik még 20 óra, de szabad bele 300 órát építeni)
OK|építés kész
  ERR|ennyi órát nem építhetsz mások várába
  ERR|saját váradba nem építhetsz csak másokéba
 

A szerver egy időben több klienssel is tartsa a kapcsolatot. A klienseknek a logint csak egyszer kell beküldeni (logout parancs nincs).

Hernyák Zoltán
2013-04-30 08:40:53