LEKCJA 8 - WYGLĄD PROGRAMU W TRYBIE TEKSTOWYM

Wszystkie 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: