Szachy AI (Python + Pygame)

W ramach udziału w konkursie Motorola Science Cup razem ze znajomymi stworzyliśmy własną grę w szachy. To nie tylko zwykła planszówka – gra ma kilka trybów, autorski styl graficzny, dźwięki nagrywane własnym mikrofonem i działa przez sieć! W tym wpisie dzielę się tym, jak to zrobiliśmy i z czego jesteśmy najbardziej dumni.
🔧 Technologie, które nas niosły
Całość oparta jest na Pythonie z biblioteką Pygame – to ona ogarnia cały interfejs i wrażenia wizualne. Z kolei backend sieciowy to Go, który odpowiada za API, WebSockety i hostowanie całej gry oraz dokumentacji.
Podzieliliśmy projekt na dwa foldery:
client– interfejs użytkownika (granie, klikanie, cieszenie się),server– cała infrastruktura sieciowa i komunikacja między graczami.
📊 System Elo po naszemu
Stworzyliśmy własną, uproszczoną wersję systemu Elo, który ocenia umiejętności graczy. Działa na bazie różnicy ratingów i wyniku meczu:
- wygrana daje od 15 do 25 punktów,
- przegrana odbiera od 15 do 25,
- remis to +5 / 0 / -5, w zależności od różnicy poziomów.
🎨 Grafika i dźwięk – DIY style
Wszystkie grafiki i dźwięki to nasza robota:
- figury zaprojektowane w Krita, GIMP, Inkscape, Pixel Art Studio,
- dźwięki nagrane w Audacity,
- muzyka w tle skomponowana w FL Studio.
🕹️ Tryby gry
Gra oferuje kilka trybów rozgrywki:
- Gracz vs Gracz (lokalnie) – klasyczna rozgrywka na jednym komputerze.
- Gracz vs Komputer – AI oparte na algorytmie MinMax + alfa-beta pruning.
- Gracz vs Arcymistrz – AI najpierw sprawdza ruchy z archiwalnych partii mistrzów (.pgn), a potem przechodzi w tryb MinMax.
- Gracz vs Gracz (online):
- LAN – lokalne P2P bez serwera.
- Internet – pełna obsługa przez nasz serwer, z pokojami publicznymi/prywatnymi, rankingiem i kontami graczy.
✨ Podsumowując…
Projekt to efekt wielu wieczorów spędzonych na kodzeniu, projektowaniu i testowaniu – i mimo że to “tylko” gra w szachy, czujemy, że zrobiliśmy coś fajnego i działającego. I co najważniejsze – wszystko śmiga, a sieciówka działa bez problemów!
Działającą grę można pobrać tutaj:
https://drive.google.com/file/d/1OJJbFxG2Plwv6cWQ5OxgIjOyIFA48Ni3/view?usp=sharing