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 |
©2024 mgr Jerzy Wałaszek |
INK, PAPER, FLASH, BRIGHT, INVERSE, OVER, BORDER
SPIS TREŚCI |
|
INK,
PAPER, FLASH,
BRIGHT,
INVERSE,
OVER
BORDER
Uruchom program:
10 FOR m=0 TO 1: BRIGHT m 20 FOR n=1 TO 10 30 FOR c=0 TO 7 40 PAPER c: PRINT " ";: REM 4 kolorowe spacje 50 NEXT c: NEXT n: NEXT m 60 FOR m=0 TO 1: BRIGHT m: PAPER 7 70 FOR c=0 TO 3 80 INK c: PRINT c;" ";: REM 3 spacje 90 NEXT c: PAPER 0 100 FOR c=4 TO 7 110 INK c: PRINT c;" ";: REM 3 spacje 120 NEXT c: NEXT m 130 PAPER 7: INK 0: BRIGHT 0 |
Pokazuje on osiem kolorów (łącznie z białym i czarnym) oraz dwa poziomy jasności, które może wytworzyć ZX Spectrum na kolorowym ekranie telewizyjnym. (Jeśli twój telewizor jest czarno-biały, to zobaczysz jedynie różne odcienie szarości.) Oto ich lista; są one również wypisane ponad odpowiednimi klawiszami cyfrowymi.
0 - czarny 1 - niebieski 2 - czerwony 3 - buraczkowy 4 - zielony 5 - jasnoniebieski 6 - żółty 7 - biały |
Na telewizorze czarnobiałym numery te są uporządkowane w kolejności rosnącej jasności.
Aby używać tych kolorów poprawnie, musisz nieco zrozumieć, jak zbudowany jest obraz.
Obraz składa się z 768 pozycji (24 wiersze po 32 znaki), na których mogą być drukowane znaki, a każdy znak jest drukowany w kwadracie 8 x 8 punktów, jak te powyżej dla a. Powinno ci to przypomnieć grafikę definiowaną przez użytkownika z Rozdziału 14, gdzie mieliśmy 0 dla białych punktów i 1 dla czarnych punktów.
Pozycja znaku na ekranie posiada również skojarzone ze sobą dwa kolory: kolor tuszu będący kolorem czarnych punktów w naszym kwadracie i kolor papieru lub kolor tła, który jest używany dla białych punktów. Na początku każda pozycja posiada czarny tusz i białe tło, zatem wydruk pojawia się jako czarne litery na białym tle.
Pozycja znaku posiada również jasność (normalną lub podwyższoną) oraz coś, co jej mówi, czy ma migać, czy nie — mruganie jest wykonywane przez zamienianie koloru tuszu z kolorem papieru. To wszystko można przedstawić liczbami, zatem pozycja znaku posiada:
(i) kwadrat z 8 x 8 zer lub jedynek w celu zdefiniowania kształtu znaku, 0 to kolor tła, 1 to kolor tuszu,
(ii) kolory tuszu i papieru, każdy przedstawiony liczbą od 0 do 7,
(iii) jasność — 0: normalna, 1: podwyższona oraz
(iv) mruganie — 0: wyłączone, 1: włączone.
Zauważ, że skoro kolory tuszu i papieru pokrywają całą pozycję znaku, nie możesz mieć więcej niż dwa kolory w danym bloku 64 punktów. To samo dotyczy jasności i mrugania: odnoszą się one do całej pozycji znakowej, a nie do poszczególnych punktów. Kolory, jasność i mruganie na danej pozycji noszą nazwę atrybutów.
Gdy drukujesz coś na ekranie, zmieniasz układ punktów na tej pozycji; jest mniej oczywiste, niemniej również prawdziwe, że zmieniasz także atrybuty na tej pozycji. Na początku nie zauważasz tego, ponieważ wszystko jest drukowane czarnym tuszem na białym papierze (z normalną jasnością i bez mrugania), lecz możesz to zmienić za pomocą rozkazów INK, PAPER, BRIGHT i FLASH. Wypróbuj:
PAPER 5 |
a następnie wypisz kilka rzeczy; wszystkie pojawią się na jasnoniebieskim tle, ponieważ w trakcie ich drukowania kolor papieru na używanych pozycjach jest ustawiany na jasnoniebieski (którego kodem jest 5).
Pozostałe działają w ten sam sposób, zatem po:
PAPER liczba pomiędzy 0 i 7 INK liczba pomiędzy 0 i 7 |
||
BRIGHT 0 lub 1 |
|
Traktuj 0 jak wyłączony, |
lub |
||
FLASH 0 lub 1 |
dowolny wydruk na ekranie ustawi odpowiedni atrybut we wszystkich użytych pozycjach znakowych. Wypróbuj niektóre z nich. Powinieneś być teraz w stanie zrozumieć, jak działał program z początku rozdziału.
Istnieje więcej liczb, które możesz zastosować w tych poleceniach, a posiadają one mniej bezpośrednie efekty.
8 można użyć we wszystkich czterech poleceniach, a oznacza ono "przezroczysty" w tym sensie, że na użytej pozycji pozostanie stary atrybut. Przykładowo załóżmy, że wpisujesz:
PAPER 8 |
Żadna z pozycji znakowych nigdy nie będzie miała ustawionego koloru papieru na 8, ponieważ takiego koloru nie ma; natomiast dzieje się to, że gdy na danej pozycji zostanie coś wypisane, to jej kolor papieru pozostanie taki sam, jak był poprzednio. INK 8, BRIGHT 8 i FLASH 8 działają w ten sam sposób na inne atrybuty.
9 można używać tylko z PAPER i INK, a oznacza ono "kontrast". Używany przez ciebie kolor (tuszu lub papieru) zostanie ustawiony na biały przy ciemnym drugim kolorze (czarny, niebieski, czerwony lub buraczkowy) lub na czarny, jeśli pozostały kolor jest jasny (zielony, jasnoniebieski, żółty lub biały).
Wypróbuj to, wykonując:
INK 9: FOR c=0 TO 7: PAPER c: PRINT c: NEXT c |
Bardziej imponujący pokaz potęgi ekranu ZX Spectrum zobaczysz, gdy uruchomisz program z początku rozdziału, aby otrzymać kolorowe pasy, a następnie wykonując:
INK 9: PAPER 8: PRINT AT 0,0;: FOR n=1 TO 1000: PRINT n;: NEXT n |
Kolor tuszu jest tutaj zawsze kontrastowany ze starym kolorem papieru na każdej pozycji.
Kolorowa telewizja opiera się na raczej dziwnym fakcie, iż oko ludzkie potrafi jedynie widzieć w rzeczywistości trzy kolory — kolory podstawowe niebieski, czerwony i zielony. Pozostałe kolory są ich mieszaniną. Na przykład purpurowy uzyskuje się przez zmieszanie niebieskiego z czerwonym — to dlatego jego kod wynosi 3, czyli jest sumą kodów niebieskiego i czerwonego.
Aby zrozumieć, jak te wszystkie kolory do siebie pasują, wyobraź sobie trzy kwadratowe światła reflektorów o kolorach niebieskim, czerwonym i zielonym, świecące w ciemności na biały ekran, tak że nie całkiem się pokrywają. Gdy zachodzą na siebie, zobaczysz mieszankę kolorów, jak pokazuje ten program (czarne spacje uzyskasz w trybie G za pomocą klawiszy SHIFT i 8):
10 BORDER 0: PAPER 0: INK 7: CLS 20 FOR a=1 TO 6 30 PRINT TAB 6; INK 1;" ": REM 18 czarnych spacji 40 NEXT a 50 LET dane=200 60 GO SUB 1000 70 LET dane=210 80 GO SUB 1000 90 STOP 200 DATA 2,3,7,5,4 210 DATA 2,2,6,4,4 1000 FOR a=1 TO 6 1010 RESTORE dane 1020 FOR b=1 TO 5 1030 READ c: PRINT INK c;" ";: REM 6 czarnych spacji 1040 NEXT b: PRINT : NEXT a 1050 RETURN |
Istnieje funkcja ATTR, która podaje, jakie atrybuty znajdują się na danej pozycji ekranu. Jest to funkcja dosyć skomplikowana, dlatego przeniesiono ją na koniec tego rozdziału.
Istnieją dwa dalsze polecenie, INVERSE i OVER, które sterują nie atrybutami, lecz punktami pozycji znakowej, które są drukowane na ekranie. Używają one liczb 0 dla wyłączenia oraz 1 dla włączenia w taki sam sposób jak FLASH i BRIGHT, lecz tutaj nie ma już więcej możliwości. Jeśli wpiszesz INVERSE 1, to punkty pozycji znakowej będą drukowane w negatywie: punkty papieru zostaną zastąpione punktami tuszu i na odwrót. Tak więc a zostanie wydrukowane jako:
Jeśli mamy czarny tusz i biały papier, to a pojawi się jako białe na czarnym tle — lecz wciąż będziemy mieli czarny tusz i biały papier na tej pozycji znakowej. Zmienią się punkty, a nie atrybuty.
włącza do działania szczególny rodzaj nadpisywania. Zwykle, gdy coś jest zapisywane na pozycji znakowej, to wymazuje kompletnie całą jej poprzednią zawartość, lecz teraz nowy znak po prostu zostanie dodany do starego (lecz zobacz na Ćwiczenie 1). Może być to szczególnie użyteczne przy wypisywaniu znaków złożonych, jak literki z akcentami, co wykonuje poniższy program, wypisując niemieckie znaki — literę 'o' z dwoma kropeczkami u góry, tzw. o umlaut. (Najpierw wpisz NEW.)
10 OVER 1 20 FOR n=1 TO 32 30 PRINT "o"; CHR$ 8;""""; 40 NEXT n |
(Zauważ znak sterujący CHR$ 8, który cofa wydruk na poprzednią pozycję.)
Istnieje inny sposób używania INK, PAPER, itd., który prawdopodobnie będzie dla ciebie bardziej użyteczny od poleceń. Możesz umieszczać je jako elementy w poleceniu PRINT (zakończone ;), a wtedy będą wykonywały dokładnie to samo, co robiłyby użyte jako samodzielne polecenia z tym wyjątkiem, że ich efekt jest jedynie tymczasowy: trwa tylko do końca polecenia PRINT, które je zawiera. Stąd, jeśli wpiszesz:
PRINT PAPER 6;"x";: PRINT "y" |
to tylko x będzie na żółtym tle.
INK oraz reszta przy używaniu jako polecenia nie wpływają na kolor dolnej części ekranu, gdzie wpisuje się rozkazy oraz dane dla INPUT. Dolna część ekranu wykorzystuje kolor brzegu na swój kolor papieru i kontrastowy kod 9 na swój kolor INK, ma wyłączone mruganie i wszystko jest w normalnej jasności. Kolor brzegu możesz zmienić na dowolny z ośmiu normalnych kolorów (nie 8 i 9), używając polecenia:
BORDER kolor |
Gdy wpisujesz dane dla INPUT, to są przestrzegane reguły kontrastowgo tuszu na papierze w kolorze brzegu; lecz możesz zmienić kolor wypisywanego tekstu, używając elementów INK i PAPER (i innych) w poleceniu INPUT tak samo, jakbyś używał ich w poleceniu PRINT. Ich efekt trwa albo do końca polecenia, albo do momentu wpisywania jakiś danych wejściowych, zależnie co zdarzy się wcześniej. Wypróbuj:
INPUT FLASH 1; INK 1;"Jaka jest twoja liczba?";n |
Istnieje jeszcze jeden sposób zmiany kolorów poprzez użycie znaków sterujących — jak znaki sterujące dla AT i TAB opisane w Rozdziale 15.
CHR$ 16
odpowiada INK CHR$ 17 odpowiada PAPER CHR$ 18 odpowiada FLASH CHR$ 19 odpowiada BRIGHT CHR$ 20 odpowiada INVERSE CHR$ 21 odpowiada OVER |
Każdy z nich wymaga kolejnego znaku, który poprzez swój kod zdefiniuje kolor: zatem (przykładowo)
PRINT CHR$ 16+CHR$ 9;... |
ma ten sam efekt co:
PRINT INK 9;... |
Zwykle nie będziesz sobie robił kłopotu z używaniem tych znaków sterujących, ponieważ równie dobrze możesz używać elementów koloru. Jednakże jedną z użytecznych możliwości jest umieszczanie ich w programach: powoduje to wyświetlanie różnych partii programu w różnych kolorach, aby oddzielać je od reszty lub po prostu, aby ładnie wyglądały. Musisz je wstawiać za numerem wiersza, inaczej zostaną stracone.
Aby umieścić te znaki w programie, musisz wprowadzić je z klawiatury, w większości w trybie rozszerzonym za pomocą klawiszy cyfrowych.
Cyfry 0 do 7 ustawiają odpowiedni kolor — tuszu z klawiszem CAPS SHIFT i tła bez niego. Bardziej precyzyjnie, jeśli jesteś w trybie E i naciśniesz cyfrę (powiedzmy 6 dla żółtego; w każdym razie musi to być pomiędzy 0 a 7 — nie 8 lub 9), to zostaną wstawione dwa znaki: pierwszy CHR$ 17 jako PAPER i CHR$ 6 oznaczający "ustaw na żółty". Jeśli miałeś wciśnięty CAPS SHIFT w momencie naciśnięcia klawisza z tą cyfrą, to otrzymasz CHR$ 16 oznaczające "ustaw kolor tuszu" zamiast CHR$ 17.
Ponieważ są to dwa znaki, to możesz zaobserwować dziwne efekty, gdy je wymazujesz — musisz dwa razy naciskać DELETE, a po pierwszym razie często dostaniesz znak zapytania lub nawet mogą pojawić się dziwne rzeczy. Nie martw się; po prostu naciśnij DELETE jeszcze raz.
i również mogą się dziwnie zachowywać, gdy kursor przesuwa się przez znaki sterujące.
Wciąż w trybie rozszerzonym:
8 daje CHR$ 19 i CHR$ 0 dla normalnej jasności
9 daje CHR$ 19 i CHR$ 1 dla podwyższonej jasności
CAPS SHIFT z 8 daje CHR$ 18 i CHR$ 0 dla braku migotania
CAPS SHIFT z 9 daje CHR$ 18 i CHR$ 1 dla migotania
Istnieje jeszcze kilka w zwykłym trybie L:
CAPS SHIFT z 3 daje CHR$ 20 i CHR$ 0 dla zwykłych znaków
CAPS SHIFT z 4 daje CHR$ 20 i CHR$ 1 dla znaków w negatywie
W celu podsumowania, oto pełny opis górnego rzędu klawiatury:
E |
SYMBOL |
DEF FN |
FN |
LINE |
OPEN # |
CLOSE # |
MOVE |
ERASE |
POINT |
CAT |
FORMAT |
CAPS |
tusz |
tusz |
tusz |
tusz |
tusz |
tusz |
tusz |
wyłącz |
włącz |
tusz |
|
NIC |
papier |
papier |
papier |
papier |
papier |
papier |
papier |
normalna |
podwyższona |
papier |
|
G |
DOWOLNY |
|
|
|
|
|
|
|
|
wyjście |
DELETE |
NIC |
|
|
|
|
|
|
|
|
wyjście |
DELETE |
|
K,L,C |
CAPS |
EDYCJA |
CAPS |
normalny |
negatyw |
|
|
|
|
tryb G |
DELETE |
SYMBOL |
! |
@ |
# |
$ |
% |
& |
' |
( |
) |
_ |
|
NIC |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
0 |
Funkcja ATTR posiada postać:
ATTR (wiersz, kolumna) |
Jej dwoma argumentami są numery wiersza i kolumny, których użyłbyś w elemencie AT, a jej wynikiem jest liczba, która pokazuje kolory oraz dalsze atrybuty tej pozycji znakowej na ekranie telewizyjnym. W wyrażeniach możesz jej używać równie swobodnie jak innych funkcji.
Zwracana liczba jest sumą czterech następujących liczb:
128 pozycja znakowa mruga, 0 nie mruga
64 pozycja znakowa jest rozjaśniona, 0 nie jest rozjaśniona
8 x kod koloru tła
kod koloru tuszu
Na przykład, jeśli pozycja znakowa mruga, nie jest rozjaśniona, ma żółte tło i niebieski tusz, to te cztery liczby, które musimy do siebie dodać, mają wartość 128, 0, 8 x 6 = 48 i 1, co daje razem 177. Przetestuj to poleceniem:
PRINT AT 0,0; FLASH 1; PAPER 6; INK 1;"A"; ATTR (0,0) |
5 REM Rysuj pusta szachownice 10 LET bb=1: LET bw=2: REM niebieski i czerwony dla szachownicy 15 PAPER bw: INK bb: CLS 20 PLOT 79,128: REM brzeg 30 DRAW 65,0: DRAW 0,-65 40 DRAW -65,0: DRAW 0,65 50 PAPER bb 60 REM szachownica 70 FOR n=0 TO 3: FOR m= 0 TO 3 80 PRINT AT 6+2*n,11+2*m;" " 90 PRINT AT 7+2*n,10+2*m;" " 100 NEXT m: NEXT n 110 PAPER 8 120 LET pw=6: LET pb=5: REM kolory białych i czarnych figur 200 DIM b$(8,8): REM pozycje figur 205 REM ustaw poczatkowe pozycje 210 LET b$(1)="rnbqkbnr" 220 LET b$(2)="pppppppp" 230 LET b$(7)="PPPPPPPP" 240 LET b$(8)="RNBQKBNR" 300 REM wyswietl szachownice 310 FOR n=1 TO 8: FOR m=1 TO 8 320 LET bc=CODE b$(n,m); INK pw 325 IF bc=CODE " " THEN GO TO 350: REM spacja 330 IF bc>CODE "Z" THEN INK pb: LET bc=bc-32: REM małe litery dla czarnych 340 LET bc=bc+79: REM zamien na grafike 350 PRINT AT 5+n,9+m;CHR$ bc 360 NEXT m: NEXT n 400 PAPER 7: INK 0 |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.