LEKCJA 8 - WYGLíD PROGRAMU W TRYBIE TEKSTOWYM

szystkie programy, kt≤re dot▒d napisa│e╢, s▒ bardzo podobne z wygl▒du: czarne t│o i szare komunikaty. Na tym poziomie, kiedy znasz ju┐ wszystkie najwa┐niejsze zasady (wszystkie najwa┐niejsze to nie znaczy wszystkie!), mo┐e to wydaµ siΩ nudne. Nadszed│ wiΩc czas aby urozmaiciµ wygl▒d programu kolorami.

Do wyboru mamy 16 kolor≤w o numerach od 0 do 15 (przyjmowaµ bΩdziemy zapis dziesiΩtny).

Standardowymi kolorami s▒ jasnoszary dla tekstu i czarny je╢li chodzi o t│o. Aby zmieniµ kolor tekstu wystarczy zaznaczyµ to funkcja textcolor(nr_koloru);. Od tej pory wszystkie nastΩpne komunikaty bΩd▒ wypisywane w danym kolorze. Przyk│ad:

#include <stdio.h> 
#include <conio.h> 
main (void) 
clrscr(); 

for(int i=1;i<=15;i++)
{
textcolor(i);
cprintf("Anna Miedzianowska");
printf("\n");
}

getch(); 
return 0; 
} 

Efekt dzia│ania programu to wygl▒d ekranu:

W programie u┐yli╢my pΩtli, aby w prosty spos≤b zilustrowaµ wszystkie dostΩpne kolory napis≤w (oczywi╢cie opr≤cz czarnego, kt≤rego nie by│oby widaµ). Do wy╢wietlenia kolorowego komunikatu s│u┐y funkcja cprintf. Dzia│a ona identycznie jak printf, jednak nie obs│u┐y nam znaku specjalnego "\n", czyli przej╢cia do nowej linii. Aby to zrobiµ nale┐y u┐yµ dodatkowo funkcji printf(), kt≤ra nic nie wypisze, tylko umie╢ci kursor w nowej linii.

Numery u┐ytych kolor≤w przyjmuj▒ kolejne warto╢ci od 1 do 15 i takie w│a╢nie warto╢ci przyjmuje nasz licznik i w pΩtli for. Mam nadziejΩ, ┐e zauwa┐y│e╢, i┐ zmienna i nie jest zadeklarowana na samym pocz▒tku tak jak robili╢my to dotychczas, lecz bezpo╢rednio przed u┐yciem. Mo┐na tak postΩpowaµ, jednak┐e lepiej jest wszystkie zmienne deklarowaµ w tym samym miejscu, czyli np. na pocz▒tku programu. Od momentu deklaracji takiej zmiennej (czyli w dalszej czΩ╢ci kodu) mo┐na jej u┐ywaµ normalnie, czyli tak jakby zosta│a zadeklarowana na pocz▒tku.

T│o, czyli to, co na razie jest czarne, r≤wnie┐ mo┐emy zmieniµ na inny kolor. W tym przypadku mamy jednak do dyspozycji tylko pierwszych 8 kolor≤w (od 0 do 7). Do zmiany koloru t│a s│u┐y funkcja textbackround(nr_koloru); U┐ycie jej nie zmieni nam jednak ca│ego t│a na ekranie, lecz tylko t│o komunikatu. Uzyskujemy w ten spos≤b kolorowy pasek z tekstem. Na przyk│ad:

#include <stdio.h> 
#include <conio.h> 
main (void) 
clrscr(); 

textcolor(15); for(int i=0;i<=7;i++)
{
textbackground(i);
cprintf("Anna Miedzianowska");
printf("\n");
}

getch(); 
return 0 ; 
} 

I efekt:

Kolory t│a i tekstu mo┐na zmieniµ za jednym razem za pomoc▒ funkcji textattr(liczba);. W jaki spos≤b w jednej liczbie zapisaµ dwie? Zapis dziesiΩtny staje siΩ tu ma│o czytelny, chyba, ┐e zastosujemy zapis w postaci niewielkiego dzia│ania matematycznego. LiczbΩ mo┐emy zapisaµ: liczba=16*tlo+tekst;. Tak przedstawione atrybuty sk│adaj▒ siΩ na liczbΩ czyteln▒ dla kompilatora i zawieraj▒ informacje jednocze╢nie o dw≤ch cechach: kolorze t│a i kolorze tekstu.

Kt≤ry spos≤b jest lepszy? Wyb≤r nale┐y do programisty. Wa┐ne jest to, ┐e na 2 sposoby mo┐emy uzyskaµ ten sam efekt. W poni┐szym przyk│adzie zrezygnowa│am z instrukcji for, aby przedstawiµ kilka wybranych po│▒czen koloru tekstu i t│a. Projektuj▒c stronΩ tytu│owa mo┐na za pomoc▒ tych prostych funkcji uzyskaµ bardzo estetyczny wygl▒d.

#include <stdio.h> 
#include <conio.h> 
main (void) 
clrscr(); 

textattr(16*1+15);
cprintf("Anna Miedzianowska");
printf("\n\n");

textattr(16*5+14);
cprintf("Anna Miedzianowska");
printf("\n\n");

textattr(16*4+15);
cprintf("Anna Miedzianowska");
printf("\n\n");

textattr(16*1+10);
cprintf("Anna Miedzianowska");
printf("\n\n");

textattr(16*2+15);
cprintf("Anna Miedzianowska");


getch(); 
return 0 ; 
} 

Tryb tekstowy, czyli tryb, w kt≤rym pracujemy od pocz▒tku tego kursu pozwala wy╢wietliµ na ekranie okre╢lon▒ ilo╢µ znak≤w. Ka┐dy znak ma taki sam rozmiar i zajmuje pewien prostok▒tny wycinek ekranu. Takich wycink≤w w trybie tekstowym jest 80x25=2000. Znaczy to, ┐e w jednej linii mo┐emy zapisaµ 80 znak≤w, a takich linii mo┐emy umie╢ciµ na ekranie 25. Skoro wiΩc ekran podzielony jest na mniejsze czΩ╢ci r≤wne co do wielko╢ci, mo┐emy potraktowaµ go jako uk│ad wsp≤│rzΩdnych. G≤rny lewy r≤g ekranu bΩdzie naszym ╢rodkiem uk│adu wsp≤│rzΩdnych, czyli punktem 0,0. Wsp≤│rzΩdne x bΩd▒ wzrasta│y od lewej do prawej od warto╢ci 0 do 79, natomiast wsp≤│rzΩdne y bΩd▒ wzrasta│y od g≤ry do do│u (odwrotnie ni┐ w modelu matematycznym) od warto╢ci 0 do 24.

Znaj▒c te zasady mo┐na swobodnie ustawiµ komunikaty na ekranie nie stosuj▒c wyg≤rowanej liczby spacji do przesuniΩcia tekstu np. na ╢rodek ekranu. S│u┐y do tego funkcja gotoxy(x,y). Przesuwa ona kursor do konkretnego miejsca na ekranie (o okre╢lonych wsp≤│rzΩdnych). Cokolwiek co nastΩpnie zostanie wy╢wietlone na ekranie, zacznie sie od tego miejsca.

#include <stdio.h> 
#include <conio.h> 
main (void) 
clrscr(); 

textattr(16*1+15);
gotoxy(20,9);
cprintf("Kurs jezyka C++ dla poczatkujacych");

textcolor(15);
gotoxy(19,10);
cprintf("=================================");

textattr(16*5+14);
gotoxy(27,12);
cprintf("Opracowanie kursu:");

textattr(16*4+15);
gotoxy(20,14);
cprintf(" A n n a M i e d z i a n o w s k a ");

textattr(16*2+15);
gotoxy(19,16);
cprintf(" http://annamiedzianowska.republika.pl ");

textcolor(3);
gotoxy(30,18);
cprintf("ania12345@go2.pl");


getch(); 
return 0 ; 
} 

I efekt:


Podsumowuj▒c:

  1. Dla pisma mo┐esz u┐ywac 16 ponumerowanych kolor≤w o numerach od 0 do 15. S│u┐y do tego funkcja textcolor(numer_koloru);.
  2. Dla t│a pod literami mo┐esz u┐ywaµ 8 ponumerowanych kolor≤w o numerach od 0 do 7. S│u┐y do tego funkcja textbackround(numer_koloru);.
  3. Funkcje textcolor i textbackground │▒czy funkcja textattr(numer), kt≤ra jednocze╢nie ustawia oba atrybuty.
  4. Ekran tekstowy zawiera 80 p≤l znakowych w poziomie i 25 p≤l znakowych w pionie.
  5. Do umieszczenia kursora w okre╢lonym miejscu ekranu s│u┐y funkcja gotoxy(x,y);.


Autorem Kursu C++ jest Anna Miedzianowska (http://annamiedzianowska.republika.pl/).


Baner reklamowy: