diff --git a/README.md b/README.md index 2c4a96d..7d25ec7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,38 @@ -# gui-chess +# Sakk alkalmazás (gui-chess) +Programozás alapjai 3 – Nagy házi feladat specifikáció -A programozás alapjai 3 nagyházi feladat; A programozás alapjai 2 nagyházi feladata átemelve JAVA környezetbe és GUI-val megvalósítva. \ No newline at end of file +## 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: + - Külső forrásból származó (pl. [Chess.com](https://chess.com), [Lichess](https://lichess.org)) standard `.pgn` formátumú játszmák beolvasása, elemzése és visszajátszása. + - Az aktuálisan játszott parti kimentése szabványos PGN fájlba a metaadatokkal (dátum, felek nevei, eredmény) együtt. +- Á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 Swing` komponensek é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.