Backgammon
O projekcie
Backgammon to pełna implementacja klasycznej gry planszowej dla dwóch graczy, napisana w C++. Projekt powstał pierwotnie na zajęcia w 2023 roku, ale tamta wersja była pisana proceduralnie i ciężko się ją rozwijało. Ta wersja to kompletny rewrite z porządną architekturą obiektową. Kod jest czytelny, łatwy do rozbudowy i przyjemny w utrzymaniu.
Architektura i OOP
Głównym celem rewritea było zastosowanie właściwych wzorców obiektowych.
Hierarchia graczy opiera się na klasie abstrakcyjnej Player, z której dziedziczą
konkretne implementacje:
- Real_player – sterowany przez człowieka, walidacja wejścia
- Rand_player – wybiera losowy ruch z dostępnych opcji
- AI_player – prosta strategia priorytetyzująca bicie i ochronę własnych pionków
Dzięki takiej strukturze dodanie nowego typu gracza sprowadza się do napisania jednej klasy
i nadpisania metody makemove(). Logika gry, renderowanie planszy i obsługa
wejścia są od siebie wyraźnie oddzielone.
Zasady gry
Gra implementuje pełne zasady backgammona:
- Standardowy ruch pionków zgodnie z rzutem kości
- Zbijanie pionków przeciwnika (przenoszenie na bar)
- Wchodzenie z bara – pionek musi wrócić do gry zanim gracz wykona inny ruch
- Dublet – cztery ruchy zamiast dwóch
- Zdejmowanie pionków z planszy (bearing off)
- Automatyczna walidacja legalności ruchów