Projekty

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