Updated readme to represent requirements
This commit is contained in:
1 parent
52e9baabae
commit
a3b8a267e8
1 file changed
+37
-2
@@ -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.
|
## 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.
|
||||||
Reference in new issue
Block a user