SAPER - komputerowa gra, napisana w 1981 roku, polegająca na odkrywaniu pól na planszy w taki sposób, aby nie trafić na minę. Na każdym odkrytym polu napisana jest liczba min, które stykają się z odkrytym polem. I te proste zasady sprawiają, że gra stała się moim ulubionym sprawdzianem ze sprawnego i logicznego myślenia. Jednak oryginalną grę dostępną w systemach Windows da się oszukać! Aby zrobić z niej sprawdzian, musiałem napisać Sapera od nowa. W wersji dla Windows, to 1500 wierszy kodu i 30000 znaków.
Mój Saper „robi” dokładnie to samo, co oryginalny Saper, ale pozbawiony jest różnego rodzaju "ułatwień". Najważniejszy jest moduł, za pomocą którego uczeń pisze sprawdzian i wystawiona zostaje ocena.
Pierwsza wersja powstała w 1995 roku i została napisana w Turbo Pascalu na systemy MSDOS, a kolejne powstawały już w Borland Delphi na systemy MS Windows.
Przykładowy fragment programu odpowiada za losowe stawianie min i opisywanie wszystkich pól planszy
{losowanie ułożenia min} procedure minuj(k,w,m:byte); var x,y,i:byte; begin randomize; for i:=1 to m do begin {tyle losuje aż trafi na puste pole} repeat x:=random(k); y:=random(w); until tablica[x,y]<>9; tablica[x,y]:=9; end; end; {opisanie pól niezaminowanych cyframi 0..8} procedure opisz_miny(k,w:byte); const sx:array[1..8] of shortint =(+1,+1,+1, 0,-1,-1,-1, 0); sy:array[1..8] of shortint =(+1, 0,-1,-1,-1, 0,+1,+1); var x,y,i:byte; function czy_pole(x,y:byte):boolean; begin if (x<0) or (x>k-1) or (y<0) or (y>w-1) then czy_pole:=false else czy_pole:=true; end; begin for x:=0 to k-1 do for y:=0 to w-1 do if tablica[x,y]<>9 then for i:=1 to 8 do if czy_pole(x+sx[i],y+sy[i]) then {jeśli obok pola mina to zwiększamy tablicę o jeden} if tablica[x+sx[i],y+sy[i]]=9 then inc(tablica[x,y]); end;
Cały kod programu TUTAJ Saper do pobrania TUTAJ
Wacław Libront