Obsazování území ================ API --- Odpověď na libovolný dotaz muže být HTTP error ve tvaru: ``` { status: "error" description: # Popis chybové události (toto chceme vytisknout!) http-code: http-name: # Jméno chybového kódu } ``` Parametry: - token: Identifikuje uživatele, zjistí z hlavní stránky webu - game: S jakou hrou (popř. týmem ve hře) se chtějí bavit - Pro naše potřeby: - `main` - Hlavní hra - `test_{0,1,..}` Testovací hra daného uživatele (číslo je jako který tým hrají) - round_id: To zjistí z otazu na stav - min_round: Validní odpovědi pouze pokud je tento nebo pozdější tah, jinak "too_early" Stav: GET na `/api/state?game=&token=&min_round=` ```json { status: "ok" round: # Kolikáté je aktuální kolo (na počátku 0) team_id: teams_count: time_to_response: # None v případě, že ho neznáme state: { world: [[{ home_for_team: occupied_by_team: protected_for_team: hill: members: [{ type: "soldier" # Pro budoucí rozšiřování team: id: # Unikátní číslo v rámci týmu remaining_rounds: # vždy > 0 }] }]] } } nebo { status: "working" nebo "too_early" # Server počítá následující stav nebo je některý z předchozích tahů, klient má počkat wait: # Jak dlouho má klient čekat, než se zeptá znovu } ``` Je zaručeno, že domeček mají uprostřed mapy Tah: POST na `/api/action?game=&token=&round=` ```json { members: [ id: action: # None -> čekej # "left", "right", "up", "down" ] } ``` Odpověď na tah: ``` { status: "ok" } # Vše v pořádku nebo { status: "warning" members: [ # seznam osob s chybou/varováním id: description: ] } # Tah jako celek se provede, chyba jen u některých osob nebo { status: "error" description: } # Chyba celého tahu (např. nevalidní json, obsahuje povinné hodnoty ...) nebo { status: "too-late" } ``` Požadavek na krok: POST na `/api/step?game=&token=` Odpověď: ``` { status: "ok", } nebo { status: "too_early" wait: 5 } ``` Interní reprezentace ==================== Metadata ``` { # statické pro celou hru teams_height: # Počet týmů v mřížce teams_width: height_per_team: # vzdálenosti startovních ploch width_per_team: # S možnou změnou initial_remaining_rounds: # Parametry k počtu nových vojáků # Pomyslná cena *nového* vojáka spawn_price: # Na kolik nových spawnů bude stačit obnos "peněz" v posledním kole last_spawn: } ``` Stav: { world: << jako v API >> }