Na moim blogu poruszałem już tematy związane ze sztuką, muzyką oraz kulturą. Kto jednak czytał mój post, w którym Wam się przedstawiałem, ten zapewne pamięta, że interesuję się również Internetem, programowaniem i technologiami oraz że studiuję elektroniczne przetwarzanie informacji na Uniwersytecie Jagiellońskim.
Warcaby angielskie online!
Przyszła pora poruszyć tutaj tematy dotykające tej ścisłej strony moich zainteresowań. Powodem tego jest także fakt, że muszę na zajęcia przygotować projekt gry online napisanej w języku Python. Postanowiłem w ramach tego projektu stworzyć aplikację umożliwiającą granie w tzw. warcaby angielskie (nazywane też czekersami, bo tak właśnie nazywają się po angielsku: checkers).
Postęp prac nad aplikacją i moje zmagania z nią będę opisywał właśnie w tej serii artykułów, którą nazwałem PyWarcaby: połączenie nazwy gry z początkiem nazwy języka Python. Serię planuję prowadzić także w języku angielskim pod tytułem PyCheckers.
O grze
Warcaby angielskie to jedna z wielu odmian warcabów. Rozgrywana jest na szachownicy o rozmiarze 8x8, której pola na przemian są koloru czarnego i białego. Z góry dodam, że nazwy tych kolorów są umowne, mogą to być dowolne inne barwy, przy czym najczęściej spotyka się także kolory czerwony i zielony.
Każdy gracz rozpoczyna rozgrywkę z 12 zwykłymi pionami ustawionymi na końcach obu stron planszy. Pomiędzy pionami obu graczy znajdują się wówczas dwa rzędy wolne, na które mogą się oni przesuwać po rozpoczęciu rozgrywki. Piony mogą poruszać się tylko po czarnych polach na szachownicy. Pion może poruszyć się tylko o jedno pole do przodu, przy czym z powodu zasady opisanej w powyższym zdaniu ruch ten jest wykonywany po ukosie. Zwykły pion nie może wykonać ruchu do tyłu, a jedynie do przodu – w stronę pionów przeciwnika. Gracz nie może nie wykonać żadnego ruchu w swojej turze.
Bicie
Jeżeli na trasie ruchu gracza znajduje się pion przeciwnika, a za pionem przeciwnika znajduje się wolne pole, wówczas gracz ma możliwość zbicia piona przeciwnika. Wykonuje wówczas ruch o dwa pola, przeskakując nad pionem przeciwnika i w ten sposób usuwając go z szachownicy. Jeżeli za pionem przeciwnika nie znajduje się wolne pole, ale inny pion (nasz lub przeciwnika), wówczas nie ma możliwości wykonania bicia – w warcabach angielskich nie występują tzw. długie bicia.
Co ważne, jeżeli gracz ma możliwość wykonania bicia, to musi je wykonać. W przypadku możliwych dwóch lub nawet większej ilości bić, gracz może dowolnie wybrać to, które chce wykonać. Jeżeli po dokonaniu bicia gracz ma możliwość wykonania kolejnego bicia, wówczas jego tura zostaje wydłużona i musi on dokonać kolejnego bicia. Jest to tak zwane bicie wielokrotne.
Pion, który dotrze do końca szachownicy po stronie przeciwnika, staje się królem. Król jest dokładnie takim samym pionem jak pion zwykły, jednak może dodatkowo poruszać się po szachownicy do tyłu (w stronę swojej bazy). Kiedy pion dociera do końca szachownicy i staje się królem, wówczas tura gracza zostaje zakończona – nawet gdyby jako król miał możliwość ruchem do tyłu zbić pion przeciwnika.
Wygrana
Wygrywa oczywiście ten gracz, który zbije wszystkie piony przeciwnika. Zdarzają się także sytuacje, w której jeden gracz nie zbił wszystkich pionów przeciwnika, ale zablokował im swoimi pionami możliwość ruchu. Taki gracz również wygrywa pojedynek, bowiem jego przeciwnik – chociaż posiada jeszcze piony – nie może wykonać już żadnego ruchu.
Remis
W warcabach angielskich o wiele łatwiej niż w innych odmianach warcabów może też dojść do remisu. Mecz kończy się remisem, kiedy gracze posiadają jeszcze piony na szachownicy, ale żaden z nich nie może już wykonać ruchu.
Trochę technicznych informacji
Jak wspomniałem, gra zostanie wykonania w języku Python 3.
Jest to wysokopoziomowy język programowania bardzo często wykorzystywany np. w analizie dużych zbiorów danych, przetwarzaniu ogromnych ilości tekstu czy uczeniu maszynowym. Nie ma jednak problemu z wykorzystaniem Pythona do stworzenia gry czy aplikacji internetowej, bo język łatwo dostosowuje się do różnych potrzeb i posiada ogromną bazę bibliotek domyślnych. Co ważne, Python zdobywa coraz większą popularność wśród programistów i coraz częściej pracodawcy poszukują osób znających właśnie ten język programowania.
Moja aplikacja będzie oparta o mikro-framework Flask, który ułatwia tworzenie aplikacji i witryn internetowych w języku Python. Flask oparty jest na paradygmacie MVC (Model-View-Controller) oraz udostępnia takie podstawowe funkcje jak system szablonów Jinja, silnik routingu i wiele innych.
Planuję stworzenie dwóch trybów rozgrywki: dla dwóch graczy oraz z komputerem.
Dla dwóch graczy
Aplikacja będzie umożliwiała rozegranie meczu warcabów dla dwóch graczy na osobnych komputerach. Wystarczy, że jeden gracz utworzy grę, aby inny gracz z dostępem do Internetu mógł do tej gry dołączyć. Po utworzeniu gry wystarczy wysłać osobie, z którą chcemy zagrać, link wygenerowany w aplikacji. Po otwarciu takiego linku od razu nasz przeciwnik rozpocznie z nami mecz.
Rozgrywka z komputerem
Drugą ważną funkcjonalnością mojej gry będzie możliwość rozegrania meczu z komputerem. To właśnie na tym polu czekają mnie największe trudności, a dla Was – najwięcej ciekawej treści. Będę musiał opracować algorytm, przy pomocy którego rozgrywka z komputerem będzie chociaż trochę wymagająca. Jestem jednak optymistycznie nastawiony!
Podsumowanie
To wszystko na dzisiaj. W tym wprowadzeniu opisałem zasady warcabów angielskich oraz szczegóły mojego projektu, bowiem bez tych informacji nie mogę wystartować.
W następnym artykule poruszę już bardziej techniczne kwestie:
- przygotuję techniczny opis reguł gry, który potem będę musiał przenieść do programu,
- opiszę dokładnie technologie, które wykorzystam,
- opiszę algorytm wykorzystywany podczas rozgrywki z komputerem.
Zapraszam do obserwowania tej serii wszystkie osoby zainteresowane programowaniem oraz technologiami komputerowymi i internetowymi. PyWarcaby to seria, która pomoże w nauce programowania i pozwoli zapoznać się z myśleniem algorytmicznym.
Zachęcam też do komentowania tego wpisu jak i przyszłych. Nie jestem wybitnym programistą, zapewne będę popełniał wiele błędów i niedopatrzeń. Jeżeli zauważysz taki błąd, masz jakąś propozycję albo po prostu chcesz o coś zapytać: pisz śmiało w komentarzach!
Dzięki za uwagę i do następnego artykułu!
Ja nie za bardzo lubię pythona, ale pomysł bardzo fajny i chętnie zobaczę kolejne posty.
Dzięki za odpowiedź. Widzisz, ja też za Pythonem nie przepadam :D Ale wyboru nie mam i to właśnie w Pythonie muszę wykonać grę. Ale traktuję to jako wyzwanie. Mam nadzieję, że następne wpisy cię nie zawiodą :) Do zobaczenia!
ja mam w głowie żeby zrobić tanki z nesa na 4 osoby
Masz na myśli Battle City? To byłoby fajne! A w jakim języku chciałbyś to zrobić?