A feladat egy egyszerűsített sakk játék elkészítése objektum-orientált szemlélettel. A program körönként kirajzolja a játéktáblát a hozzá tartozó sor- és vonaljelölésekkel, majd kér egy bemenetet a felhasználótól, melynek segítségével beolvasható az aktív játékos által végrehajtani kívánt lépés. A bemenet formátuma a következő:
([bábutípus])([kiindulás])[cél]([átalakulás])
bábutípus
(opcionális): A léptetni kívánt bábu angol algebrai jelölése (egy karakterrel).- Lehetséges értékek:
P
(pawn, gyalog)N
(knight, huszár)B
(bishop, futó)R
(rook, bástya)Q
(queen, vezér)K
(king, király)
- Alapértelmezett érték:
P
- Lehetséges értékek:
kiindulás
(opcionális): A léptetni kívánt bábu kiindulási koordinátái angol algebrai jelöléssel. Kötelező megadni, amennyiben acél
nem határozza meg egyértelműen.- Lehetséges értékek:
a1
-h8
- Alapértelmezett érték:
cél
által meghatározott, amennyiben egyértelmű
- Lehetséges értékek:
cél
: A léptetni kívánt bábu cél koordinátái angol algebrai jelöléssel.- Lehetséges értékek:
a1
-h8
- Lehetséges értékek:
átalakulás
: Gyalog 8. sorra érkezése esetén annak átalakítása vezérré, huszárrá, bástyává vagy futóvá.- Lehetséges értékek:
Q
,N
,R
,B
- Lehetséges értékek:
A feladat elkészítéséhez nem szükséges a sakk teljes szabályrendszerének implementálása (lsd.: sáncolás, ütés menet közben, patthelyzetek felismerése), elegendő a lényegesebb szabályok beépítése a programba:
- Bábuk léptetése a játéktáblán (ütések lehetőségével)
- Sakk, illetve matt felismerése
A megoldás elkészítéséhez STL tárolók is felhasználhatók. Az elfogadott bemenettípusok a fent leírtaktól kis mértékben eltérhetnek.
A program tesztelését a mellékelt tesztvektorok segítségével végeztem el, a memóriaszivárgás-mentességet pedig Valgrinddal ellenőriztem.