Spróbujmy przełożyć zasady tego zadania na język komputera. Rolę szachownicy w naszym programie będzie pełniła tablica pole (10). Posiada ona — podobnie jak nasza szachownica — 11 pól o numerach: 0, 1, 2, 3,... 10. Wartości wprowadzone do odpowiednich elementów tablicy symbolizują piony. I tak, wartość 1 oznacza pion biały, -1 — pion czarny, -0 — puste pole. Dodatkowo wprowadzamy jeszcze jedną, identyczną szachownicę koniec (10). W niej zostanie zapisane docelowe ustawienie pionów. W pierwszym fragmencie programu (linie 10-70) znajdują się deklaracje opisanych tablic i następuje wypełnienie ich odpowiednimi wartościami zapisanymi w linii danych (linia 70). Tablica pole (10) zawiera sytuację początkową, natomiast koniec (10) — końcową.
Główna pętla naszego programu (linie 100-140) składa się wyłącznie ze skoków do podprogramów. Taka konstrukcja często bardzo ułatwia zachowanie przejrzystości i czytelności programu, gdyż umożliwia łatwe analizowanie każdego z podprogramów osobno. Pierwszy ze skoków skierowany jest do podprogramu rysunek planszy (linie 1000-1100), który sprawdza kolejno zawartość poszczególnych elementów tablicy pole (10) i rysuje szachownicę, wypełniając ją odpowiednio znakami O symbolizującymi piony białe lub * symbolizującymi piony czarne (rysunek 2). Drugim z wykonywanych podprogramów jest koniec gry? (linie 2000-2050), czyli sprawdzenie czy przypadkiem sytuacja na szachownicy nie jest już taka, jaką chcieliśmy osiągnąć. W tym celu porównywane są zawartości odpowiednich elementów tablic pole (10) i koniec (10).
Jeśli zawartość obu tablic jest identyczna następują gratulacje i koniec gry.
Kolejny podprogram, to wybór ruchu (linie 3000 - 3070). Decyzja grającego wprowadzana jest do komputera przy użyciu instrukcji INPUT. Następnie — w zależności od wybranego ruchu — zmienna pion otrzymuje wartość 1 (jeśli wybrano białe) lub -1 (czarne).
Najważniejszym i równocześnie najbardziej złożonym podprogramem jest ruch (linie 4000-4170). Wymaga on też nieco dokładniejszego omówienia. Pierwsze linie (4000-4020) to sprawdzenie, które z pól szachownicy pozostaje puste. Numer tego pola przypisany zostaje wartości i. W następnej kolejności sprawdzane jest, czy można przesunąć pion na wolne pole z pola sąsiedniego (linie 4030 i 4040) lub przeskakuje przez inny pion (linie 4050 i 4060).
Ciekawe, że w tym podprogramie znajdują się dalsze podprogramy. Jeśli ruch jest niemożliwy, następuje skok do „podprogramu” drukującego na ekranie komunikat Ruch niemożliwy!!! (linie 4070 i 4090). „Podpodprogramy” w liniach 4100-4130 i 4140-4170 przestawiają wartości w tablicy pole (10) w przypadku ruchu — odpowiednio — na sąsiednie pole lub z przeskokiem.
Analizując kolejne instrukcje warunkowe — możecie to potraktować jako zadanie domowe — dojdziecie może do wniosku, że wartości 1, -1 i 0 symbolizujące sytuację poszczególnych pól szachownicy nie zostały wybrane przypadkowo. Spróbujcie odpowiedzieć sobie dlaczego. Spróbujcie także zastanowić się nad samą grą. Na przykład, czy można wykorzystać w niej dłuższą szachownicę i więcej pionów, oraz jak wpłynie to na strategię gry.
Roman Poznański
