Ready/Run
Takie sobie archiwum listingów ze starych magazynów komputerowych
- Język programu: Locomotive Basic
- Platforma: Amstrad
- Kod zamieszczono w Bajtek 01/1989
- Autor listingu: Roman 'Romek' Poznański
- Listing nadesłał: Faust
Stan listingu:
Cześć Maluchy!
Nasza szachownica ma nieco nietypowy kształt. Składa się z jedenastu pól ustawionych w jednym rzędzie. Rozpoczynając od jednego końca kładziemy na kolejnych polach pięć pionów w kolorze białym. Od drugiego końca kładziemy natomiast pięć pionów czarnych (rysunek 1). Pośrodku pozostaje jedno pole wolne. Zadaniem grającego jest umieszczenie białych pionów na miejscach czarnych i odwrotnie. Piony białe poruszają się wyłącznie w prawo, piony czarne — w lewo. Każdy z pionów można przesunąć na sąsiednie wolne pole, lub też — jeśli znajduje się na nim pion innego koloru — na wolne pole znajdujące się bezpośrednio za tym pionem. W jakiej kolejności należy przesuwać piony i ile trzeba wykonać ruchów?
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.
Ten program ukazał się w reduksie "Bajtek 1/1989"
- „Sposób na wirusa” Waldemar Siwiński
- „Gigabity Z Akceleratora” Grzegorz Onichimowski
- „Ile bajtów ma "Bajtek"?” Franciszek Penczek
- „Bee Card — Dyskietka Już Niepotrzebna...?” (jm)
- „Twój Przyjaciel Robot” (go)
- „Skuteczny Sposób Na Włamywacza” (jw.)
- „Modem — Co To Jest?” Wojciech Zientara
- „Monitory Ml — Część II” Klaudiusz Dybowski
- „Modem I Sprawa Polska” Artur Bychowski
- „Zasilacz Do Commodore C64” Zbigniew Kaszycki
- „Łańcuchowanie Programów” Krzysztof Gajewski, Bogusław Radziszewski
- „Rozkrój ” Józef Ludwiński
- „Universal Hero” Natalia Nowak
- „Geoff Capes Strongman” (Luke)
- „Army Moves” (mp)
- „Czas i data w Turbo-Pascal'u”
- „Biuro-Fabryka XXI Wieku ” Grzegorz Onichimowski, Waldemar Siwiński
- „Komputerowy Show Po Śląsku Informacja '88” Bożena Stępień
- „Na Szachownicy” Roman Poznański

