Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
krouzek:uloha:sachy1 [2023/10/17 20:09] – vytvořeno admin | krouzek:uloha:sachy1 [2023/11/15 20:54] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 4: | Řádek 4: | ||
- vytvořte funkci která pro zadanou pozici detekuje šach | - vytvořte funkci která pro zadanou pozici detekuje šach | ||
- pozice kdy je šach a všechny tahy vedou do šachu => šach mat (konec hry) | - pozice kdy je šach a všechny tahy vedou do šachu => šach mat (konec hry) | ||
+ | - pozice kdy není šach, ale všechny tahy vedou do šachu => pat (remíza) | ||
- omezte vygenerované kombinace z 1 = nepovolte žádné tahy, které vedou do šachu | - omezte vygenerované kombinace z 1 = nepovolte žádné tahy, které vedou do šachu | ||
- | - nechte počítač hrát proti počítači, | + | - nechte počítač hrát proti počítači |
+ | * Jsou všechny tahy platné? Pokud ne, opravte. | ||
+ | * Končí hra vždy výhrou nějaké strany? | ||
+ | |||
+ | ==== Architektura programu ==== | ||
+ | * Můžete svůj program dělat v NodeJS - textový vstup a výstup. | ||
+ | * Můžete svůj program dělat v klasické stránce - výstup můžete rovnou " | ||
+ | |||
+ | **Nejrobustnější**: | ||
+ | Tímto komplikovanějším řešením umožníme budoucí síťovou hru více hráčů proti sobě. Také nás to donutí striktně oddělit logiku (v nodejs projektu) od zobrazení a UI (ve stránce) | ||
+ | |||
+ | Zajímavou možností pak je rozdělit práci bez problémů na dva programátory = jeden dělá zobrazovadlo a klikadlo, druhý implementuje pravidla šachů - a shodnete se na nějakém rozhraní. | ||
+ | |||
+ | Vygenerovaný příklad takového klient-server rozhraní najdete na konci stránky. | ||
+ | |||
+ | ==== Data Structures ==== | ||
+ | |||
+ | <code json> | ||
+ | - **Game State Object**: | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <code json> | ||
+ | - **Active Game List Object**: | ||
+ | { | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | This is a basic outline of a RESTful API for a multiplayer chess game. You may need to expand on this depending on your specific requirements, | ||
Řádek 150: | Řádek 201: | ||
</ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Client/ | ||
+ | > Create an interface for a multiplayer chess game between the client (visualizing the game, allowing the players to select next move) and the server (implementing the chess game logic). RESTApi | ||
+ | |||
+ | Poznámky: | ||
+ | * Všimněte si, že návrh vlastně neřeší že hrajeme šachy, ale věnuje se spíš správě herních sessions | ||
+ | * Pravděpodobně by podobná šablona šla použít na libovolnou tahovou hru | ||
+ | * Není řešena autentizace uživatelů, | ||
+ | * Problém který není řešen: endpoint //GET / | ||
+ | |||
+ | ==== Endpoints ==== | ||
+ | |||
+ | 1. **Create a New Game** | ||
+ | - Endpoint: `POST /api/games` | ||
+ | - Description: | ||
+ | - Request: None | ||
+ | - Response: `{" | ||
+ | |||
+ | 2. **Get Game State** | ||
+ | - Endpoint: `GET / | ||
+ | - Description: | ||
+ | - Request: None | ||
+ | - Response: Detailed game state JSON | ||
+ | |||
+ | 3. **Make a Move** | ||
+ | - Endpoint: `POST / | ||
+ | - Description: | ||
+ | - Request: `{ " | ||
+ | - Response: `{" | ||
+ | |||
+ | 4. **List Active Games** | ||
+ | - Endpoint: `GET /api/games` | ||
+ | - Description: | ||
+ | - Request: None | ||
+ | - Response: List of active game objects | ||
+ | |||
+ | 5. **Join a Game** | ||
+ | - Endpoint: `POST / | ||
+ | - Description: | ||
+ | - Request: `{ " | ||
+ | - Response: `{" | ||
+ | |||
+ | 6. **Resign from the Game** | ||
+ | - Endpoint: `POST / | ||
+ | - Description: | ||
+ | - Request: None | ||
+ | - Response: `{" | ||