Prosty wygaszacz ekranu w Pascalu

Pascal to nie tylko konsola. Możemy również pobawić się w trybie graficznym, jaki Pascal oferuje. W tym wpisie pokaże wygaszacz ekranu, który zrobiłem praktycznie w 15 minut na lekcji programowania w szkole.

Aby znów nie paskudzić wpisu, kod źródłowy jest tutaj

Teraz wypadałoby omówić najważniejsze jego fragmenty:

var
karta,tryb: smallint; //-zmienne potrzebne do zadeklarowania biblioteki

 

Są to zmienne, które będą wykorzystywane podczas działania trybu graficznego.

begin
karta:=detect; //-automatyczne wykrywanie karty graficznej
tryb:=0; //-tryb, w takim ma pracować tryb graficzny
initgraph (karta,tryb,''); //-stricte inicjalizacja trybu graficznego

 

Tutaj już właściwie zaczynamy deklarować tryb graficznych. Od razu widzimy, że zmienne, które podaliśmy w var-ze są już tu wykorzystywane. Zmienna karta przechowuje informacje na temat karty graficznej zaś zmienna tryb informację o tym, w jakim trybie ma działać tryb graficzny Pascala. Najlepiej zmienną karta ustawić na detect. Wtedy Pascal automatycznie wykryje kartę i dostosuje swoje parametry.
Ostatnie polecenie to initgraph. Inicjuje ono tryb graficzny w podanych zmiennych, czyli karta i tryb. W apostrofach podajemy lokalizacje do biblioteki trybu graficznego. Z tej racji, że Dev-Pascal ma już ją zaimplementowaną w sobie, nie trzeba nic podawać.

randomize; //-losowe przypisywanie wartości patrz niżej
x:=getmaxx; //-maksymalna wartość x
y:=getmaxy; //-maksymalna wartość y

 

Polecenie randomize uruchamia maszynę losującą. Co to jest, poznamy niebawem. Zaś polecenia x:=getmaxx oraz y:=getmaxy automatycznie określają nam rozdzielczość ekranu, dzięki czemu wygaszacz będzie działał na cały ekranie.

repeat //-początek pętli
setcolor (random (15)); //-losowe wybieranie kolorów linii
setlinestyle (random (5), random (3), random (2)); //-losowy wygląd linii
line (random (x),random (y),random (x),random (y)); //-losowe ulokowania linii
delay (50); //-opóźnienia
until (i=-1); //koniec pętli (dzięki wartości -1 nigdy się nie kończy

 

Tych poleceń nie będę omawiał, gdyż mam nadzieje są zrozumiałe dzięki komentarzom. Wspomnę tylko, że polecenie random losowo wybiera daną wartość z całego ekranu. Jego działanie możliwe jest dzięki poleceniu randomize. Przy wyborze wartości ograniczają go polecenia x:=getmaxx oraz y:=getmaxy.

Powiem tylko coś szerzej o pętli. Aby wygaszacz ciągle dział, musi pracować w pętli. Zaimplementowanie pętli to jeszcze nic. Gorzej, aby ta pętla była nieskończona. Jest na to proste rozwiązanie. Jako koniec pętli wpisać wartość ujemną.

until (i=-1);

 

Co się wtedy będzie działo ? Pętla będzie sobie liczyć, ile razy się już powtórzyła. Jak dobrze wiemy, będzie ona liczyć od zera do + nieskończoności. A czy w tym przedziale znajduje się wartość -1 ? No nie. Więc będzie ona działał w nieskończoność. Nie zakończy się, bo nigdy nie uzyska argumentu -1.

Pobierz wygaszacz.

Pobierz kod źródłowy do kompilacji.