Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Tłumaczenie: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
PLOT, DRAW, CIRCLE, POINT
SPIS TREŚCI |
|
PLOT,
DRAW, CIRCLE
POINT
piksele
W tym rozdziale zobaczymy, jak rysować obrazy na ZX Spectrum. Część ekranu do
twojej dyspozycji ma 22 wiersze po 32 kolumny, co daje razem
Piksel jest określany przez dwie liczby, jego współrzędne. Pierwsza z nich, jego współrzędna x, mówi, jak daleko znajduje się od lewej krawędzi ekranu. A druga, jego współrzędna y, mówi, jak daleko jest u gry od spodu ekranu. Współrzędne te zwykle zapisuje się jako parę w nawiasach, więc (0,0), (255,0), (0,175) i (255,175) to odpowiednio narożniki lewy dolny, prawy dolny, lewy górny i prawy górny.
Polecenie:
PLOT współrzędna x, współrzędna y |
wypełnia kolorem tuszu piksel na tych współrzędnych, zatem ten ospowaty program:
10 PLOT INT (RND*256), INT (RND*176): INPUT a$: GO TO 10 |
rysuje punkt w przypadkowym punkcie za każdym razem, gdy naciśniesz ENTER.
Oto nieco bardziej interesujący program. Rysuje on wykres funkcji SIN (falę sinusoidalną) dla wartości pomiędzy 0 a 2π.
10 FOR n=0 TO 255 20 PLOT n,88+80*SIN (n/128*PI) 30 NEXT n |
Ten następny program rysuje wykres SQR (część paraboli) pomiędzy 0 i 4
10 FOR n=0 TO 255 20 PLOT n,80*SQR (n/64) 30 NEXT n |
Zwróć uwagę, że współrzędne pikseli dosyć się różnią od wierszy i kolumn w elemencie AT. W Rozdziale 15 umieszczony jest rysunek ekranu, który ci się może przydać, gdy będziesz ustalał współrzędne pikseli dla danych wierszy i kolumn.
Aby pomóc ci w rysowaniu obrazków, komputer narysuje ci linie proste, okręgi oraz ich części przy pomocy poleceń DRAW i CIRCLE.
Polecenie DRAW dla narysowania prostej linii przyjmuje postać
DRAW x,y |
Punktem początku linii jest piksel, na którym zakończyło działanie ostatnie polecenie PLOT, DRAW lub CIRCLE (nazywa się to pozycją PLOT; RUN, CLEAR, CLS i NEW ustawiają ją w lewym dolnym narożniku ekranu na współrzędnych (0,0)), a punktem końcowym jest piksel na współrzędnych (x,y). Polecenie DRAW samodzielnie określa długość i kierunek linii, lecz nie jej punkt początkowy.
Eksperymentuj z kilkoma rozkazami PLOT i DRAW, na przykład:
PLOT 0,100: DRAW 80,-35 PLOT 90,150: DRAW 80,-35 |
Zauważ, że liczby w poleceniu DRAW mogą być ujemne, chociaż liczby w poleceniu PLOT nie mogą.
Możesz również rysować punkty i linie w kolorze, chociaż musisz pamiętać, że kolory zawsze pokrywają całą pozycję znakową i nie można ich określić dla pojedynczych pikseli. Gdy piksel zostaje umieszczony na ekranie, jest ustawiany, tak aby pokazywał pełny kolor tuszu, a cała pozycja znakowa, w której się znajduje, otrzymuje bieżący kolor tuszu. Ten program demonstruję to zjawisko:
10 BORDER 0: PAPER 0: INK 7: CLS: REM zaczerniamy
ekran 20 LET x1=0: LET y1=0: REM poczatek linii 30 LET c=1: REM kolor tuszu, zaczynamy od niebieskiego 40 LET x2=INT (RND*256): LET y2=INT (RND*176): REM przypadkowy punkt konca linii 50 DRAW INK c;x2-x1,y2-y1 60 LET x1=x2: LET y1=y2: REM kolejna linia rozpocznie sie w koncu poprzedniej 70 LET c=c+1: IF c=8 THEN LET c=1: REM nowy kolor 80 GO TO 40 |
Linie wydają się coraz grubsze w miarę działania programu, a dzieje się tak dlatego, iż linia zmienia kolory wszystkich pikseli w kolorze tuszu we wszystkich pozycjach znakowych, przez które przechodzi. Zwróć uwagę, iż możesz osadzać elementy PAPER, INK, FLASH, BRIGHT, INVERSE i OVER w poleceniu PLOT lub DRAW tak samo, jak możesz to robić z PRINT oraz INPUT. Idą one pomiędzy słowo kluczowe a współrzędne i kończą się albo średnikiem, albo przecinkiem.
Dodatkową frajdą z DRAW jest to, że możesz użyć go do rysowania fragmentów okręgów zamiast prostych linii przez dodanie dodatkowej liczby, która określa kąt zatoczenia łuku; postać jest następująca:
DRAW x,y,a |
x i y są używane do określania punktu końcowego linii tak samo jak przedtem, natomiast a jest liczbą radianów, które linia musi zatoczyć w miarę swojego postępu — jeśli a jest dodatnie, to skręca w lewo, natomiast dla ujemnego a skręca w prawo. Innym sposobem patrzenia na a jest przyjęcie, że pokazuje ono ułamek pełnego okręgu, który zostanie narysowany: pełny okrąg ma 2π radianów, więc jeśli a=π, to narysuje pół okręgu, jeśli a=0.5*π, to otrzymasz ćwiartkę okręgu, i tak dalej.
Na przykład, załóżmy, że a=π. To bez względu na wartości jakie przyjmą x i y, zostanie narysowany półokrąg. Uruchom:
10 PLOT 100,100: DRAW 50,50, PI |
co narysuje to:
Rysowanie rozpoczyna się w kierunku południowo-wschodnim, lecz gdy się zakończy, będzie zmierzać na północny zachód: w międzyczasie obróciło się dookoła o 180 stopni lub π radianów (wartość a).
Uruchom ten program kilka razy z PI zastąpionym różnymi innymi wyrażeniami — np. -PI, PI/2, 3*PI/2, PI/4, 1.0.
Ostatnim poleceniem w tym rozdziale jest CIRCLE, które rysuje pełny okrąg. Określasz współrzędne środka i promień okręgu przy użyciu:
CIRCLE współrzędna x, współrzędna y, promień |
Tak samo jak z PLOT i DRAW możesz wstawiać na początku polecenia CIRCLE różne rodzaje kolorowych elementów.
Funkcja POINT mówi ci, czy piksel ma kolor tuszu, czy papieru. Ma ona dwa argumenty, współrzędne tego piksela (i muszą one być ujęte w nawiasy), a wynikiem jest 0 dla piksela w kolorze tła i 1 dla piksela w kolorze tuszu. Wypróbuj:
CLS: PRINT POINT (0,0): PLOT 0,0: PRINT POINT (0,0) |
Wpisz:
PAPER 7: INK 0 |
i zbadajmy, jak INVERSE i OVER działają wewnątrz polecenia PLOT. Oddziaływają one tylko na dany piksel, a nie na resztę pozycji znakowej. Są zwykle wyłączone (0) w poleceniu PLOT, zatem wystarczy ci je wspomnieć, aby się włączyły (1).
Oto lista wszystkich możliwości do wglądu:
PLOT | - | to jest zwykła postać. Rysuje punkt, tj. ustawia piksel, tak aby był koloru tła |
PLOT INVERSE 1 | - | to drukuje kropkę wymazującą w kolorze tła, tj. ustawia piksel, tak aby był koloru papieru. |
PLOT OVER 1 | - | to zmienia piksel z tego czym był, na drugi kolor: więc jeśli był koloru tła, to stanie się pikselem koloru tuszu i na odwrót |
PLOT INVERSE 1; OVER 1 | - | to zostawia piksel w takim stanie jak był poprzednio, lecz zauważ, że zmienia również pozycję PLOT, zatem możesz to stosować po prostu do tego celu. |
Jako kolejny przykład stosowania polecenia OVER, wypełnij ekran tekstem, pisząc w kolorze czarnym na białym, a następnie wpisz:
PLOT 0,0: DRAW OVER 1;255,175 |
To narysuje dosyć uczciwą linię, chociaż będzie ona posiadała przerwy w miejscach przejścia po literach tekstu. Teraz wykonaj dokładnie te same polecenia jeszcze raz. Linia zniknie bez śladu. To wielka zaleta OVER 1. Gdybyś narysował tę linię za pomocą:
PLOT 0,0: DRAW INVERSE 1;255,175 |
to wtedy maiłabyś wymazane również nieco tekstu.
Teraz spróbuj:
PLOT 0,0: DRAW OVER 1;250,175 |
i postaraj się to wymazać za pomocą:
DRAW OVER 1;-250,-175 |
Niezupełnie zadziałało, ponieważ piksele używane przy rysowaniu linii z powrotem nie są dokładnie takie same, jak przy pierwszej linii. Linię musisz usuwać, rysując ją dokładnie w tym samym kierunku, co przy pierwszym rysowaniu.
Jednym ze sposobów otrzymywania niezwykłych kolorów jest zmieszanie dwóch normalnych razem w pojedynczym kwadracie przy pomocy grafiki definiowanej przez użytkownika. Uruchom ten program:
1000 FOR n=0 TO 6 STEP 2 1010 POKE USR "a"+n, BIN 01010101: POKE USR "a"+n+1, BIN 10101010 1020 NEXT n |
który stworzy grafikę definiowaną przez użytkownika o wzorze szachownicy. Jeśli wydrukujesz ten znak (tryb graficzny, następnie a) w kolorze tuszu czerwonym na żółtym papierze, to otrzymasz w miarę dobry kolor pomarańczowy.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.