Zima, za oknem pada 郾ieg. Nieraz zapewne czytelnicy
widzieli w r騜nych demkach, czy innych programach efekt padaj帷ego
郾iegu zatrzymuj帷ego si� na elementach obrazka. Kiedy� nie chcia這
mi si� nic po篡tecznego stworzy�, i postanowi貫m napisa� co� w tym
stylu.
Opisz� pokr鏒ce spos鏏 post瘼owania przy tworzeniu wirtualnego 郾iegu:
Najpierw losujemy sobie pozycje x i y na ekranie pixelk闚, a tak瞠
ich pr璠ko軼i. Operujemy na liczbach rzeczywistych (lub jak kto
woli z przecinkiem), aby ruch pixelka by� p造nny. Nale篡 r闚nie�
zadba�, aby pixel nie przeskoczy� o 2 pola w d馧 (tzn. aby pr璠ko嗆
nie by豉 wi瘯sza od 0.9) bo wtedy dosz造by nam dodatkowe warunki
czego raczej nie po膨damy w naszym programie. Mogliby鄉y losowa�
punkty tylko w X, a Y zawsze ustawi� na 0. Spowodowa這by to jednak
nieestetyczny start i mog這by doj嗆 do zapchania si� w g鏎nej cz窷ci
ekranu przy ilo軼i punkt闚 ok. 1000. Wi璚 musimy losowa� na ca造m
ekranie, ale uwaga nie mo瞠my postawi� pixelka na kolorze, kt鏎y
b璠zie je zatrzymywa� (np, gdy kolorem kt鏎y powoduje zatrzymanie
pixelka jest kolor 15, to nie mo瞠my wylosowa� wsp馧rz璠nych, kt鏎e
wypadaj� na napisie w kolorze 15, a to dlatego 瞠 pixel startuj帷
pozostawi豚y po sobie dziurk�, a w rezultacie zamazanie napisu),
w tym celu przy losowaniu sprawdzamy sobie kolor.
Mamy ju� przygotowane tablice, mo瞠my zacz望 ruch punkt闚. W p皻li
dla wszystkich pixelk闚 po kolei sprawdzamy najpierw czy mo瞠my
poruszy� si� jeszcze w d馧, czyli czy punkt pod nami jest w kolorze
innym ni� kolor zatrzymuj帷y. Je瞠li mo瞠my si� poruszy� to kasujemy
pixel na starej pozycji i dodajemy szybko嗆 do aktualnej wsp馧rz璠nej
Y. Po czym sprawdzamy czy nie wyskoczyli鄉y poza ekran, je瞠li tak
to losujemy now� warto嗆 X punktu i do Y wpisujemy 0 (czyli zaczynamy
od g鏎y) i na zako鎍zenie rysujemy pixel w nowym miejscu kolorem
zatrzymuj帷ym.
Wr鵵my teraz do pierwszego rozga喚zienia. Czyli do momentu, w kt鏎ym
sprawdzali鄉y czy pod nami jest kolor zatrzymuj帷y. Je逮li jest,
to nale篡 sprawdzi� czy nasz punkt mo瞠 obsun望 si� w prawo lub
w lewo (po stoku). Sprawdzamy czy mo瞠my si� obsun望 w prawo, a
potem w lewo. Je瞠li nie mo瞠my si� obni篡� w 瘸dn� ze stron, to
spoczywamy spokojnie na miejscu, w kt鏎ym obecnie si� znajdujemy
i losujemy now� szybko嗆 oraz X i zaczynamy od nowa. Je瞠li mo瞠my
si� obsun望 w lewo lub w prawo to kasujemy punkt na starej pozycji
zmieniamy X (w zale積o軼i od tego w kt鏎� stron� si� obsuwamy) i
dodajemy zn闚 szybko嗆 do Y, sprawdzamy czy nie wyl康owali鄉y poza
ekranem i stawiamy punkt w nowym miejscu. I cykl si� zamyka w k馧eczko.
To mniej wi璚ej ca豉 filozofia 郾iegu. Teraz jak to wygl康a w praktyce
(a raczej w Turbo Pascalu):
Program mo積a na wiele sposob闚 ulepszy�. Przyk豉dowo mo積a jako
t這 wstawi� jaki� krajobraz (np. plik graficzny GIF) na kt鏎ego
tle b璠zie pada� 郾ieg. Innym pomys貫m jest tzw. lepko嗆, czyli
przyczepno嗆 do powierzchni podczas lotu), czy budowanie si� skarp
i p騧niejsze ich obrywanie si�, itd. ...
Kod 廝鏚這wy do artyku逝:
Efekt 郾iegu (1,49 KB)