Osoby pamiętające czasy komputerów z epoki sprzed IBM PC zapewne są, przynajmniej w niewielkim stopniu, zaznajomione z podstawami języka BASIC. W tym języku, a między innymi w jego dialekcie QBASIC napisano wiele programów, również i te, służące do gry w szachy. Poniżej przedstawiam kilka wybranych przykładów, właściwie bardziej celem przypomnienia dawnych czasów niż zachęcania do gry przy użyciu akurat tych kodów. Do uruchomienia opisanych programów potrzebny jest interpreter, który można pobrać na przykład za pomocą linku.
Pobrane archiwum należy rozpakować do dowolnego katalogu i uruchomić plik qbasic.exe, bezpośrednio albo poprzez emulator DOSBox. Program ten w wersji najprostszej, nieinstalowalnej, można pobrać np. ze strony. Krótki i bardzo przystępny opis obsługi emulatora jest dostępny na blogu . Tyle tytułem wstępu technicznego.
Pierwszy z przedstawionych, bardzo ładnie wykonany (napisany) program szachowy został zamieszczony na stronie.
Właściwie jest to elektroniczna szachownica przeznaczona do rozgrywki pomiędzy dwoma osobami, gdyż program ten nie posiada możliwości gry przeciwko komputerowi. Jego kod można traktować zatem jako powłokę graficzną dla silnika szachowego, oczywiście o ile ktoś z Czytelników będzie miał siłę i ochotę napisać takowy w QBASIC-u. Poniższy „zrzut ekranu” ukazuje interfejs programu, ze znacznie uproszczoną obsługą.
Przedstawiona pozycja powstała po początkowych posunięciach Debiutu Centralnego, przy czym białe są na posunięciu. Program wymaga uruchomienia go korzystając z emulatora DOSBox, natomiast obsługa jego jest bardzo łatwa, gdyż polega na wskazywaniu myszą odpowiednich bierek oraz pól na których mają stanąć. Innym przykładem elektronicznych szachów jest program dostępny na stronie.
Zamieszczony obrazek przedstawia pozycję po dobrze znanych ruchach 1.e4 e5 2.d4. Czarne są na posunięciu, czego wyrazem jest podświetlenie piona d4.
W rozgrywce nie uczestniczy komputer, gdyż przedstawiony program umożliwia grę wyłącznie pomiędzy dwoma osobami. Grafika nie jest zachwycająca, a sterowanie dosyć uciążliwe. Program wymaga uruchomienia go pod DOSBox-em.
Natomiast z poniższej strony można skopiować kod pozwalający rozegrać partię z komputerem.
Kilka linii programu jest „złamanych” w sensie edytorskim, dlatego w trakcie uruchamiania go w oknie QBASIC-a pojawiają się komunikaty o błędach. Jednak ich naprawa jest bardzo prosta, gdyż polega na przeniesieniu „obciętych” liter czy wyrazów na koniec poprzedzających je linii. Program warto uruchomić bezpośrednio, z pominięciem emulatora DOSBox, gdyż niekorzystnie wpływa on na jego pracę. Na przedstawionym niżej „zrzucie ekranu” widać początkowe posunięcia Debiutu Centralnego, przy czym program grając kolorem czarnym, za każdym razem w tym otwarciu usilnie rozwijał hetmana w drugim posunięciu.
Bardzo podobny interfejs posiadają programy, których kody zamieszczono na stronie oraz stronie.
Właściwie jedyną różnicą w stosunku do powyżej opisanego jest poprawione rozmieszczenie oznaczeń kolumn (A, B,…) i niewielka zmiana kolorystyki szachownicy. Oba programy najlepiej uruchamiać nie używając emulatora DOSBox.
No dobrze – powie ktoś – ale po co to wszystko? „Basic is dead”, a trupa się nie reanimuje. Owszem, nie reanimuje się, ale można go wskrzesić w jeszcze ładniejszej formie. Tą nowo wskrzeszoną, bardzo ładną i obiecującą formą jest Small Basic, czyli uproszczony język programowania, dostosowany do okienkowego trybu systemu Windows. Small Basic jest przeznaczony dla wszystkich osób pragnących rozpocząć naukę łatwego i przyjemnego programowania. Główna witryna tego projektu to Link, przy czym warto zauważyć iż program posiada polską wersję językową. A na zachętę dodam, że za pomocą Small Basic-a można pisać własne programy szachowe.
Krzysztof Kledzik
„Osoby pamiętające czasy komputerów z epoki sprzed IBM PC zapewne są, przynajmniej w niewielkim stopniu, zaznajomione z podstawami języka BASIC” – może warto przypomnieć sobie starego, klasycznego BASIC-a? Polecam stronę stworzona z myślą o ulubieńcach tego starego dialektu http://www.quitebasic.com/
Wśród zamieszczonych tam przykładów jest akcent szachowy – problem ośmiu hetmanów i jego dwa rozwiązania, za pomocą algorytmu heurystycznego oraz brute-force.
Ciekawe czy ktoś z czytelników blogu próbował pobawić się QuiteBASIC-iem i problemem ośmiu hetmanów? Pod względem obserwowania procesu „myślenia programu” ciekawszy jest algorytm heurystyczny. Aby jednak trochę opóźnić jego działanie i tym samym mieć możliwość przyglądnięcia się jego pracy i zastanowienia się nad cząstkowymi wynikami, proponuję samodzielnie wprowadzić drobne korekty w programie. Pierwsza rzecz to drobne opóźnienie rysowania pikseli-hetmanów. Po linii 7050 warto wstawić linię
7055 PAUSE 500
która spowoduje półsekundową (500 milisekundową) zwłokę w stawianiu hetmanów. Druga sprawa to zatrzymanie działania programu na czas spokojnego przemyślenia efektu ustawienia hetmanów. Program podaje ilość prób, iteracji oraz ilość wykrytych konfliktów pomiędzy hetmanami. Atakujące się figury są oznaczone kolorem czerwonym, a poprawne, nieatakujące się – zielonym. Aby te informacje nie „przelatywały” zbyt szybko trzeba wprowadzić przerwanie tuż za linią 7130. Zatem wklejamy dwie linie
7131 LET H = GETCHAR()
7132 IF H = ” ” THEN GOTO 7140 ELSE GOTO 7131
Dzięki nim, program po wykonaniu każdej z iteracji zatrzyma się, czekając na chwile naszej zadumy 😉 oraz na naciśniecie klawisza Spacji.