Wstęp
To jest nasza gra w szachy, zrobiona na konkurs Motorola Science Cup. Oferuje podstawowe tryby rozgrywki – możesz grać z drugim graczem albo zmierzyć się z komputerem. Ta dokumentacja zawiera opis techniczny, jak to wszystko działa, oraz wyjaśnienie dostępnych trybów gry. Nie jest to może arcydzieło, ale rozgrywka przez sieć śmiga, a projekt spełnia założenia konkursowe (tak myślimy).
Implementacja
Technologie
Do stworzenia gry wykorzystaliśmy język Python wraz z biblioteką
Pygame, która umożliwiła zbudowanie intuicyjnego interfejsu graficznego.
Infrastruktura sieciowa opiera się na serwerze napisanym w Go, który dostarcza
API do zarządzania rozgrywkami, obsługuje grę w czasie rzeczywistym dzięki WebSocketom, a także
hostuje stronę główną, z której można pobrać grę, źródła oraz przejść do tej dokumentacji. Z
tego powodu kod źródłowy podzieliliśmy na dwa
foldery: client
i server
.
System Elo
Nasz system Elo to uproszczona wersja klasycznego rankingu szachowego. Ocenia umiejętności graczy na podstawie różnicy ratingów między nimi i wyniku meczu. Jeśli gracz wygrywa, zyskuje punkty: 25, jeśli był słabszy (rating niższy od przeciwnika), 15, jeśli był znacznie silniejszy (różnica > 200), lub 20 w innych przypadkach. Przy przegranej traci odpowiednio: -25 (jako faworyt), -15 (jako dużo słabszy, różnica < -200) lub -20. Remis daje 5 punktów słabszemu (różnica < -100), odbiera 5 silniejszemu (różnica> 100) lub nie zmienia wyniku, jeśli gracze są na podobnym poziomie.
Zasoby
Wszystkie grafiki i dźwięki w grze stworzyliśmy sami. Figury szachowe zaprojektowaliśmy od podstaw w programach takich jak Krita, GIMP, Inkscape oraz Pixel Art Studio, co pozwoliło nadać im unikalny styl. Dźwięki ruchów pionków nagraliśmy samodzielnie w Audacity, a muzykę w tle skomponowaliśmy w FL Studio. Dzięki temu gra jest w pełni autorska.
Tryby gry
Gracz vs Gracz (lokalnie)
Klasyczna rozgrywka na jednym komputerze. Dwóch graczy siada przed ekranem, wybiera swoje figury i gra – bez zbędnych komplikacji. Interfejs jest prosty, a ruchy są sprawdzane lokalnie, więc wszystko działa płynnie i bez opóźnień. Idealne na szybką partię z kolegą obok.
Gracz vs Komputer
Tryb jednoosobowy, w którym mierzysz się z prostą sztuczną inteligencją. AI opiera się na algorytmie MinMax z przycinaniem alfa-beta, co sprawia, że decyzje są szybsze i bardziej efektywne. MinMax analizuje możliwe ruchy, szukając najlepszego, a alfa-beta odcina niepotrzebne gałęzie, oszczędzając czas. Nie jest to poziom mistrza świata, ale dla początkujących idealne wyzwanie.
Gracz vs Arcymistrz
Ten tryb różni się od "Gracz vs Komputer" sposobem działania. Algorytm najpierw sprawdza pliki .pgn z partiami mistrzów, szukając ruchu, który pasuje do Twojego zagrania. Jeśli nic nie znajdzie, korzysta z MinMax i alfa-beta – tak jak w trybie komputerowym. Dzięki temu masz szansę zmierzyć się z pomysłami największych szachowych głów, a przynajmniej ich zapisami.
Gracz vs Gracz (online)
Tu mamy dwa różne podejścia do gry sieciowej:
- LAN – Jeden gracz zostaje hostem i uruchamia grę na swoim komputerze. Drugi, będąc w tej samej sieci, wpisuje adres hosta i się łączą. To prosta rozgrywka P2P – bez pośredników, bez lagów, jeśli sieć daje radę.
- Internet – Grasz przez nasz serwer, tworząc pokój za pomocą HTTP API (publiczny lub prywatny), a następnie łączysz się przez WebSockety. Publiczne pokoje są widoczne na liście, prywatne wymagają 6-cyfrowego kodu. Serwer sprawdza każdy ruch i zdarzenie, zapisując je w bazie danych, co eliminuje oszustwa. Działa też system Elo, o którym wspominaliśmy, na podstawie którego tworzony jest ranking graczy. Aby grać online, musisz założyć konto – w trybie LAN nie ma tego wymogu.