4.4 KiB
Sakk alkalmazás (gui-chess)
Programozás alapjai 3 – Nagy házi feladat specifikáció
1. Célkitűzés
A projekt célja egy teljes körű sakkalkalmazás implementálása Java nyelven. A feladat alapját a „Programozás alapjai 2” tárgyban készült C++ sakkmotor adja, melynek logikáját átemelve, az objektumorientált elveket és a Java nyelvi sajátosságait kihasználva egy grafikus felhasználói felülettel (GUI) és parancssori réteggel is rendelkező szoftver készül.
2. Funkcionális követelmények
2.1 Játékszabályok és játékmódok
- Szabályrendszer: A standard sakk szabályainak teljes körű ellenőrzése és betartatása (szabályos lépések, sakk, matt, patt helyzetek detektálása, sáncolás, en passant és gyalogátváltozás).
- Játékos módok: Lokális kétfős játék (Hotseat mód), ahol a felek felváltva lépnek ugyanazon a felületen.
- Lépésvisszavonás és elemzés: Lehetőség a lépések visszavonására (Undo) és előreléptetésére.
2.2 Felhasználói felületek
- Grafikus felület (GUI):
- Interaktív sakktábla (kattintásos vagy drag-and-drop bábulépéssel).
- Vizuális visszajelzés az érvényes lépésekről és az aktuális sakkhelyzetről.
- Lépéslista (Move history) megjelenítése algebrai jelöléssel.
- Konzolos felület (CLI):
- A sakktábla kirajzolása terminálban szöveges karakterekkel.
- Lépések fogadása standard szöveges formátumban (pl.
e2e4).
2.3. Adatkezelés és perzisztencia
- PGN (Portable Game Notation) támogatás:
- Állásmentés (FEN): Az aktuális táblaállás gyors betöltése és exportálása FEN (Forsyth–Edwards Notation) karakterlánccal.
3. Nem funkcionális követelmények és architektúra
-
Választott architektúra (MVC):
-
Model: A sakktábla állapota, szabályellenőrzés, bábuk reprezentációja és lépésgenerálás. A motor teljesen független a megjelenítéstől.
-
View:
Java Swingkomponensek és a CLI kirajzoló modul. -
Controller: Eseménykezelők, amelyek a felhasználói beviteleket (GUI kattintás, CLI parancs) továbbítják a motornak.
-
-
Perzisztencia / Fájlkezelés: Szabványos Java I/O, kivételkezeléssel.
-
Tesztelhetőség: A játékmotor üzleti logikáját (speciális lépések, matt detektálás, PGN parser) lefedő JUnit egységtesztek.
4. Terv
4.1 Szereplők
- Játékos: Az a személy aki játszmát kezdeményez, lépéseket tesz, kezeli a játék felületét.
- Fájlrendszer: Másodlagos szereplő. PGN/FEN állományokat kezel.
4.2 Használati esetek (Use Cases):
- Új játszma indítása
- Lépés megtétele a táblán
- Lehetséges lépések megtekintése
- Lépés visszavonása
- Játszma mentése (PGN formátumban)
- Játszma betöltése és visszajátszása (PGN formátumból)
- Táblaállás betöltése/mentése (FEN formátumból/ban)
4.3 GUI váza:
+-------------------------------------------------------------+
| Menüsor: [Fájl (Új, Betöltés, Mentés)] [Nézet] [Segítség] |
+-------------------------------------------------------------+
| +---------------------------+ +------------------------+ |
| | | | Státusz / Soron lévő: | |
| | | | Fehér | |
| | | | Sakk jelzés: Nincs | |
| | | +------------------------+ |
| | | | Lépéstörténet: | |
| | SAKKTÁBLA | | 1. e4 e5 | |
| | (8 x 8) | | 2. Nf3 Nc6 | |
| | | | 3. Bb5 ... | |
| | | +------------------------+ |
| | | | Vezérlők: | |
| | | | [< Előző] [Következő >]| |
| | | | [Undo] | |
| +---------------------------+ +------------------------+ |
+-------------------------------------------------------------+