Files
gui-chess/README.md
T

78 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
- 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.
## 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:
```text
+-------------------------------------------------------------+
| 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] | |
| +---------------------------+ +------------------------+ |
+-------------------------------------------------------------+
```
### 4.4 UML
![UML diagram](assets/UML.svg)