Grafika tekstowa Zarządzanie ekranem w trybie tekstowym

Slides:



Advertisements
Podobne prezentacje
Tworzenie stron internetowych
Advertisements

Monitory i systemy graficzne
Wstęp do programowania
Programowanie obiektowe
URZĄDZENIA PERYFERYJNE - WEJŚCIA
PSZ wykład 2 > Przegląd komponentów biblioteki VCL
Komunikatory Najbardziej znane:
HTML.
Podstawowe wiadomości
Kolory, grafika, multimedia
argumenty wiersza poleceń: getopt
-Microsoft PowerPoint -Microsoft Word -Microsoft Excel
Tworzenie prezentacji w programie PowerPoint
Programowanie w C Wykład 3
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania
Język ANSI C Operacje we/wy
#include #include main () { cout
WINDOWS 95.
Tworzenie nowej biblioteki
Programowanie obiektowe W2
Arkusz kalkulacyjny Excel
Wykonał: Tomasz Nocek kl. III B
Tworzenie stron internetowych www World Wide Web
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Tworzenie prezentacji w programie PowerPoint
Podstawy informatyki 2013/2014
Tajemnice klawiatury.
Tajemnice klawiatury Opracowanie: mgr Barbara Benisz SP nr 20 w Rybniku
Wczytywanie danych z klawiatury, komentarze, zmienne.
Podstawy programowania w języku C i C++
języka hipertekstowego
Wielozadaniowowść systemu operacyjnego Linux
Opracowanie Dorota Libera
Program do tworzenia prezentacji - uruchamianie i opis okna programu
Edytor Vi.
Budowa komputera.
ATA - dyski Advanced Technology Attachments - interfejs systemowy PC przeznaczony do komunikacji z dyskami twardymi. Stosowane początkowo oznaczenia ATA-1,
Word to proste!.
Podstawy programowania w języku C i C++
TECHNOLOGIE INFORMATYCZNE Tydzień 6
Technologie informacyjne EXCEL I
Wstęp Krótka historia programu Zastosowanie PowerPoint’a
Technologie informacyjne EXCEL I
Edytor tekstu Word.
Tytuł:Poradnik do programu PowerPoint?
Temat 10: Tabele. Tabele stanowią obecnie jeden ze sposobów prezentowania danych. Początkowo były wykorzystywane do tworzenia układów stron, które teraz.
Temat 5: Pozycjonowanie elementów
HTML Hyper Text Markup Language
Projektowanie stron WWW
Aplikacje internetowe
Aplikacje internetowe Tabele Ciąg dalszy. Wprowadzanie złamań wiersza Często, najprostszym sposobem wpływania na układ tabeli jest wprowadzenie łamań.
Aplikacje internetowe
Program Logomocja.
MS Office MS PowerPoint 2007
HTML Hyper Text Markup Language komputerowe Esperanto cz. III polecenia konstrukcyjne strony.
Informatyka +.
Microsoft Disk Operating System
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Temat: Wprowadzenie do programowania w środowisku LOGO KOMENIUSZ
Wstęp do Podstawy Programowania
 Umożliwia pogrubienie zaznaczonego tekstu  Skrót (Ctrl+B)  Przykład: lala.
obsługa wyświetlacza graficznego
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Wyższa Szkoła Informatyki i Zarządzania
Co możesz zrobić za pomocą infomatu?  w prosty sposób przeglądać strony internetowe związane z życiem miasta i
Microsoft Disk Operating System
Format rozkazu Tryby adresowania.
Zapis prezentacji:

Grafika tekstowa Zarządzanie ekranem w trybie tekstowym Borland C++ - funkcje Funkcje pozwalają na: zmianę trybu tekstowego, sterowanie atrybutami znaków wysyłanymi na ekran, realizację operacji we-wy, obsługę pamięci obrazu, sterowanie położeniem i kształtem kursora. Prototypy tych funkcji są umieszczone w bibliotece conio.h constream.h

Organizacja ekranu w trybie tekstowym Ekran podzielony jest na jednakowe komórki. W komórce może znaleźć się tylko jeden znak kolumna 3 współrzędne bezwzględne 1 2 3 4 5 6 7 8 9 D (left,top) okno tekstowe wiersz 2 (right,bottom) współrzędne względne (3,2)

Definiowanie okien tekstowych void window (int left, int top, int right, int bottom); (funkcja ta służy do określenia obszaru ekranu zajmowanego przez okno tekstowe) dla całego ekranu window(1,1,80,25); tryb 80-kolumnowy window (1,1,40,25); tryb 40-kolumnowy Sterowanie trybem pracy ekranu void textmode (int newmode); textmode(C80); C40 1 tryb kolorowy, 40 kolumn C80 3 tryb kolorowy, 80 kolumn MONO 7 tryb monochromatyczny 80 kolumn

Sterowanie atrybutami znaków wysyłanymi na ekran Bajt atrybutu znaków określa kolor znaku, podwyższoną jasność. kolor jego tła, migotanie 7 6 4 3 2 1 void textbackground(int newcolor); kolor tła textbackground(4); czerwony kolor tła. void textcolor(int newcolor); kolor znaku textcolor(2); zielony kolor znaku. void highvideo(void); podwyższona jasność void lowvideo(void); normalna jasność void normvideo(void); przywraca stan początkowy

Stałe kolorów stała wartość kolor zastosowanie BLACK czarny tło i znak czarny tło i znak BLUE 1 niebieski GREEN 2 zielony CYAN 3 turkusowy RED 4 czerwony MAGENTA 5 karmazynowy BROWN 6 brązowy LIGHTGRAY 7 jasnoszary DARKGRAY 8 ciemnoszary znak LIGHTBLUE 9 jasnoniebieski LIGHTGREEN 10 jasnozielony LIGHTCYAN 11 jasnoturkusowy LIGHTRED 12 jasnoczerwony LIGHTMAGENTA 13 jasnokarmazynowy YELLOW 14 żółty WHILE 15 biały BLINK 128 migotanie

Sterowanie pozycją i wyglądem kursora void gotoxy(int x, int y); umieszcza kursor w pozycji x,y okna gotoxy(20,3); int wherex(void); wartością jest współrzędna x kursora x=wherex; int wherey(void); wartością jest współrzędna y kursora y=wherey; void setcursortype(int cur_t); zmiana wyglądu kursora setcursortype(_NOCURSOR); wyłącza kursor, setcursortype(_SOLIDCURSOR); kursor jako pełny prostokąt, setcursortype(_NORMALCURSOR); normalny kursor w postaci podkreślenia,

Czyszczenie ekranu, usuwanie, wstawienie wierszy, void clreol(void); usuwa wszystkie znaki od pozycji kursora do końca wiersza clreol(); void clrscr(void); usuwa wszystkie znaki z ekranu clrscr(); void delline(void); usuwa wiersz w pozycji kursora delline(); void insline(void); wstawia pusty wiersz w pozycji kursora insline(); Operacje wejścia z konsoli (klawiatury) int getch(void); odczytuje znak z klawiatury getch(); int getche(void); odczytuje znak z klawiatury i wysyła go na ekran getche();

Wydruk kolorów – od 0 do 15 #include<iostream.h> #include <conio.h> main() { clrscr(); int i; textmode(C40); textbackground(15); window(20,10,40,25); for (i=0; i<=15; i++) textcolor(i); cout<<i<<"\t"; cprintf("kolor \r\n"); } getch(); return 0; 0 kolor 1 kolor 2 kolor 3 kolor 4 kolor 5 kolor 14 kolor 15 kolor

obiektowe strumienie wyjścia na ekran Grafika tekstowa obiektowe strumienie wyjścia na ekran Zarządzanie ekranem w trybie tekstowym Borland C++ - funkcje Prototypy tych funkcji są umieszczone w bibliotece constream.h umożliwiają jednoczesną obsługę kilku okien tekstowych Wyjście strumienia realizowane jest przez operator << a do formatowania danych wysyłanych na ekran służą manipulatory

Manipulatory strumieni konsoli constream.h manipulator anlogiczna funkcja ze zbioru conio.h zastosowanie clreol usuwa znaki do końca wiersza delline usuwa wiersz tekstu highvideo włącza podwyższoną jasność insline wstawia pusty wiersz lowvideo włącza normalną jasność normvideo włącza normalne atrybuty znaków setattr(int) textattr ustala atrybuty znaków setbk(int) textbackground ustala kolor tła znaków setclr(int) textcolor ustala kolor znaków setcrtype(int) _setcursortype steruje rozmiarem kursora setxy(int,int) gotoxy ustawia kursor na zadanej pozycji

Wykorzystanie strumieni konsoli –przykład Strumienie konsoli działają niezależnie, każdy z nich operuje tylko we własnym oknie tekstowym. #include<constrem.h> main() { constream w1, w2, w3; w1.window(1,1,40,12); w2.window(41,13,80,24); w3.window(1,15,25,22); w1.clrscr(); w2.clrscr(); w3.clrscr(); w1<<setattr(YELLOW|(BROWN<<4))<<"OKNO 1"<<endl; w2<<setxy(10,5)<<"OKNO 2"<<endl; w3<<highvideo<<"OKNO 3"<<endl; return 0; }

Grafika punktowa Zarządzanie ekranem w trybie graficznym Borland C++ - funkcje graficzne Funkcje graficzne pozwalają na: obsługę kart graficznych różnych typów (m.in. EGA, VGA,IBM8512), rysowanie różnych figur geometrycznych z zastosowaniem różnych linii, kreślenie okręgów, elips, oraz ich wycinków z możliwością ich wypełnienia, wypełnianie obszarem wzorcem własnym lub standardowym, tworzenie napisów w trybie graficznym, obsługę błędów operacji graficznych. Prototypy tych funkcji są umieszczone w bibliotece graphics.h

Organizacja i zarządzanie ekranem w trybie graficznym Zarządzanie w trybie graficznym zależy od typu zainstalowanej w komputerze karty graficznej Rozdzielczość (liczba punktów w pionie i poziomie) Liczba kolorów W pakiecie kompilatora Borland C++ dostarczane są sterowniki grafiki umożliwiające współpracę z różnymi typami kart. BORLANDC\BGI\*.bgi Hercules EGA VGA SVGA

Schemat programu działającego w trybie graficznym #include <graphics.h> #include <iostream.h> #include <conio.h> int inicjuj_grafike(int gdriver, int gmode, char *pathgdriver); int main() { int ster=DETECT, tryb; if (!inicjuj_grafike(ster, tryb, "c:\\studenci\\cpp\\borlandc\\bgi")) return 0; line(0,0,200,200); getch(); closegraph(); } int inicjuj_grafike(int gdriver, int gmode, char *pathgdriver) initgraph (&gdriver, &gmode, pathgdriver); if (graphresult()!=grOk) { cout<<"Blad w czasie uruchomienia grafiki"; return 0; } else return 1; Prototyp funkcji inicjuj_grafike Definicja funkcji inicjuj_grafike ze sprawdzeniem poprawności uruchomienia trybu graficznego Wywołanie funkcji inicjuj_ grafike Operacje w trybie graficznym Zamknięcie trybu graficznego

Funkcje zarządzające trybem graficznym initgraph(int *graphdriver, int *graphmode, const char *pathtodriver); Funkcja inicjująca obsługę grafiki *graphdriver – wskaźnik zmiennej zawierającej liczbę określającą typ sterownika grafiki, Jeżeli graphdriver=DETECT – funkcja sama określi jaki sterownik i jaki tryb pracy jest najbardziej odpowiedni. *graphmode – wskaźnik do zmiennej zawierającej numer trybu graficznego dla danego sterownika Jeżeli graphdriver=DETECT – wówczas wartość zmiennej graphmode nie jest brana pod uwagę. *pathtodriver – łańcuch zawierający ścieżkę do katalogu ze sterownikami grafiki (pliki *.bgi) closegraph(void); Funkcja zamykająca obsługę grafiki, przywraca tryb pracy przed inicjacją graphdefaults(void); Funkcja przywraca domyślne parametry pracy w aktualnym trybie.

Wybrane stałe sterowników graficznych i trybów graficznych Karta graficzna Stała i wartość sterownika graficznego Stała i wartość trybu graficznego karty Tryb pracy karty DETECT 0 EGA EGA 3 EGALO 0 EGAHI 1 640x200, 16 kolorów, 4 strony 640X350, 16 kolorów, 2 strony VGA VGA 9 VGALO 0 VGAMED 1 VGAHI 2 640x350, 16 kolorów, 2 strony 640x480, 16 kolorów, 1 strona IBM8514 IBM8514 6 IBM8514LO 0 IBM8514HI 1 640x480, 256 kolorów 1024x768, 256 kolorów

Określenie położenia na ekranie współrzędne ekranowe absolutne i względne Xabs Xwzgl Ywzgl Okno graficzne Yabs punkt ekranu (pixel)

Okna graficzne i ich obsługa wybrane funkcje cleardevice(void); Czyści cały ekran graficzny tzn. wypełnia go kolorem tła i ustala położenie na (0,0) clearviewport(void); Czyści aktualne okno graficzne i ustala położenie na (0,0) w nim. int getmaxx(void); int getmaxy(void); Zwracają max wartość ekranowej współrzędnej x oraz y dla aktualnego sterownika i trybu pracy. setviewport(int left, int top, int right, int bottom, int clip); Ustala parametry nowego okna graficznego (setviewport(10,10,200,200,0). Gdy parametr clip=0 operacje graficzne są ograniczone do obszaru okna.

Zarządzanie paletami kolorów Kolory Każdemu pikselowi odpowiada wartość, która nie określa koloru w sposób bezpośredni, lecz stanowi indeks palety kolorów zawierającej faktyczną informację o kolorze punktu. W ten sposób na ekranie może być jednocześnie wyświetlanych tyle kolorów, ile wpisów znajduje się w palecie. stała wartość kolor BLACK czarny BLUE 1 niebieski GREEN 2 zielony CYAN 3 turkusowy RED 4 czerwony MAGENTA 5 karmazynowy BROWN 20 brązowy LIGHTGRAY 7 jasnoszary DARKGRAY 56 ciemnoszary LIGHTBLUE 57 jasnoniebieski LIGHTGREEN 58 jasnozielony LIGHTCYAN 59 jasnoturkusowy LIGHTRED 60 jasnoczerwony LIGHTMAGENTA 61 jasnokarmazynowy YELLOW 62 żółty WHILE 63 biały Sterowanie kolorami setbkcolor(int color) –ustala kolor tła obrazu setbkcolor(1); setcolor(int color) –ustala kolor rysowania setcolor(60); Zarządzanie paletami kolorów Stałe kolorów EGA i VGA

Wzorzec i kolor wypełnienia setfillstyle(int pattern, int color);–ustala aktualne parametry wypełniania obszarów pattern – wzorzec, color –kolor wypełnienia setfillstyle(6,4); setfillpattern(const char *upattern, int color);–pozwala na zdefiniowanie wzorca przez użytkownika upattern –tablica wzorca, color –kolor wypełnienia setfillpattern(tab,4); floodfill(int x, int y, int border);–wypełnianie obszarów otoczonych konturem. Parametry x,y określają punkt wewnątrz wypełnianego konturu. floodfill(10,20,4);

Sterowanie pozycją wskaźnika ekranu (aktualną pozycją) int getx(void); int gety(void); –wartością są aktualne współrzędne wskaźnika ekranu. getx(); gety(); moverel(int dx, int dy); –przesuwa wskaźnik ekranu o wektor (dx,dy). moverel(20,30); moveto(int x, int y); –przesuwa wskaźnik ekranu do punktu (x,y). moveto(100,214);

Sterowanie wyglądem i sposobem kreślenia linii setlinestyle(int linestyle, unsigned upattern, int thickness); –ustalenie aktualnego rodzaju linii (faktury) –linestyle i jej grubości –thickness, gdy linia definiowana jest przez użytkownika wartość parametru upattern określa wzór linii użytkownika. setlinestyle(0,0,3) –linia ciągła pogrubiona. Stałe rodzajów linii (line_style) stała wartość znaczenie SOLID_LINE ciągła DOTTED_LINE 1 kropkowana CENTER_LINE 2 symetrii DASHED_LINE 3 przerywana USERBIT_LINE 4 definiowana przez użytkownika Stałe grubości linii NORM_WIDTH normalna grubość THICK_WIDTH pogrubiona

Rysowanie punktów i linii putpixel(int x, int y, int color); – rysuje punkt w miejscu o współrzędnych (x,y) i kolorze color putpixel(45,36,4); line(int x1, int y1, int x2 ,int y2); – rysuje linię od punktu (x1,y1) do punktu (x2,y2) line(45,36,4,5); linerel(int dx, int dy); – rysuje linię od punktu aktualnej pozycji wskaźnika do punktu oddalonego o wektor (dx,dy). linerel(5,36); lineto(int x, int y); – rysuje linię od punktu aktualnej pozycji wskaźnika do punktu o współrzędnych (x,y). lineto(25,36);

Rysowanie – prostokąt, wielokąt, łamane rectangle(int left, int top, int right, int bottom); – funkcja rysuje prostokąt rozpięty między punktami (left,top) i (right,bottom) używając aktualnego koloru, rodzaju i grubości linii) rectangle(4,5,34,56); bar(int left, int top, int right, int bottom); – funkcja wypełnia prostokątny obszar rozpięty między punktami (left,top) i (right,bottom) używając aktualnego koloru i wzorca) bar(45,36,48,58); drawpoly(int numpoints, const int *polypoints); – funkcja rysuje łamaną o liczbie wierzchołków określonych parametrem numpoints używając aktualnego koloru, rodzaju i grubości linii. drawpoly(45,*tab1); fillpoly(int numpoints, const int *polypoints); – funkcja rysuje łamaną o liczbie wierzchołków określonych parametrem numpoints używając aktualnego koloru, rodzaju i grubości linii a następnie wypełnia zamkniętą łamaną. fillpoly(45,*tab1);

Rysowanie – okrąg, elipsa, łuk arc(int x, int y, int stangle, int endangle, int radius); – łuk o środku w punkcie (x,y) i promieniu radius. Łuk ten kreślony jest od kąta stangleo do kąta endangleo. arc(4,5,34,0,90); circle(int x, int y, int radius); – okrąg o środku w punkcie (x,y) i promieniu radius. circle(100,150,90); ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); – eliptyczny łuk o środku w punkcie (x,y) i półosiami poziomą xradius i pionową yradius. Łuk ten kreślony jest od kąta stangleo do kąta endangleo. ellipse(4,5,0,90,20,10); fillellipse(int x, int y, int xradius, int yradius); – elipsa o środku w punkcie (x,y) i półosiami xradius i yradius i wypełnia bieżącym wzorcem i kolorem. fillellipse(4,5,20,10); pieslice(int x, int y, int stangle, int endangle, int radius); – wycinek koła sektor(int x, int y, int stangle, int endangle, int xradius, yradius); – wycinek elipsy.

Teksty w trybie graficznym settextjustyfy(int horiz, int vert); – tryb justowania tekstu dla poziomego horiz ( LEFT_TEXT – 0) i pionowego vert (BOTTOM_TEXT – 0) settextjustyfy(0,0); settextstyle(int font, int direction, int charsize); – krój pisma –font (SMALL_FONT – 2), kierunek wysyłania znaków na ekran –direktion (HORIZ_DIR), rozmiar znaków –charsize. settextstyle(2,HORIZ_DIR,5); outtext(const char *textstring); – wyświetla w aktualnym oknie łańcuch znaków wskazanych parametrem textstring od aktualnej wartości wskaźnika ekranu. outtext(*napis); outtextxy(int x, int y, const char *textstring); – wyświetla w aktualnym oknie łańcuch znaków wskazanych parametrem textstring przy zachowaniu aktualnych parametrów tekstowych począwszy od punktu (x,y). outtextxy(34,45,*napis);

Program graficzny do rysowania prostej grafiki #include <graphics.h> #include <iostream.h> #include <conio.h> int inicjuj_grafike(int gdriver, int gmode, char *pathgdriver); int main() { int ster=DETECT, tryb,tab[]={10,430,60,450,50,460,5,470}; if (!inicjuj_grafike(ster, tryb, "c:\\studenci\\cpp\\borlandc\\bgi")) return 0; Blok instrukcji do rysowania prostej grafiki getch(); closegraph(); } int inicjuj_grafike(int gdriver, int gmode, char *pathgdriver) initgraph (&gdriver, &gmode, pathgdriver); if (graphresult()!=grOk) { cout<<"Blad w czasie uruchomienia grafiki"; return 0; } else return 1; graf-i.exe

Blok instrukcji do rysowania prostej grafiki setbkcolor(15); //kolor tla - bialy putpixel(100,5,4); //rysowanie punktu (kolor czerwony) setcolor(4); //kolor rysowania - czerwony settextstyle(10,HORIZ_DIR,0); //ustawienie stylu tekstu outtextxy(105,5,"- putpixel(100,5,4);- punkt"); //wyprowadzenie tekstu moveto(20,40); //ustalenie aktualnego polozenia wskaznika setcolor(2); lineto(100,40); //rysowanie linii do punktu setcolor(1); setlinestyle(0,0,3); //ustawienie stylu linii (ciagla pogrubiona) line(20,60,100,60); outtextxy(105,60,"- line(20,60,100,60);- ostatnia linia "); setcolor(5); circle(50,100,20); //rysowanie okregu outtextxy(105,100,"- circle(50,100,20);- okrag "); setcolor(6); ellipse(50,140,0,270,30,10); //rysowanie elipsy outtextxy(105,140,"- ellipse(50,140,0,270,30,10);- elipsa "); setcolor(7); arc(50,180,100,250,20); //rysowanie luku outtextxy(105,180,"- arc(50,180,100,250,20); -luk");

Blok instrukcji do rysowania prostej grafiki cd setcolor(1); setfillstyle(4,4); //ustawienie stylu wypelnienia fillellipse(50,230,40,15); //rysowanie elipsy wypelnionej outtextxy(105,215,"- setfillstyle(4,4); - wypelnienie"); outtextxy(105,230,"- fillellipse(50,230,40,15);- elipsa wypelniona"); setfillstyle(1,12); pieslice(50,280,150,270,35); //rysowanie wycinka kola outtextxy(105,280,"- setfillstyle(1,12); - wypelnienie"); outtextxy(105,295,"- pieslice(50,280,150,270,35);- wycinek kola"); setfillstyle(5,4); rectangle(10,320,100,350); //rysowanie prostokata bar(10,320,100,350); //wypelnienie obszaru prostokatnego outtextxy(105,330,"- bar(10,320,100,350); - wypelnienie obszaru prostokatnego"); outtextxy(105,345,"- rectangle(10,320,100,350); - rysowanie prostokata"); bar3d(10,380,60,410,20,1); //trojwymiarowy prostopadloscian outtextxy(105,380,"- bar3d(10,380,60,410,20,1); -trojwymiarowy prostopadloscian"); settextstyle(4,HORIZ_DIR,0); setcolor(11); drawpoly(4,tab); //rysowanie lamanej outtextxy(105,430,"-drawpoly(4,tab); -rysowanie lamanej");

Tarcza #include <graphics.h> #include <iostream.h> #include <conio.h> void main() { int gdriver=DETECT, gmode; initgraph (&gdriver, &gmode, "c:\\studenci\\cpp\\borlandc\\bgi"); setbkcolor(0); setcolor(4); setlinestyle(0,0,3); for(int j=0,t=1;j<100,t<10;j=j+25,t++) setcolor(t); for (int i=0;i<25;i++) circle(320,240,j+i); } getch(); closegraph(); tarcza.exe

Pawie oczko #include <graphics.h> #include <iostream.h> #include <conio.h> void main() { int gdriver=DETECT, gmode; initgraph (&gdriver, &gmode, "c:\\studenci\\cpp\\borlandc\\bgi"); setbkcolor(0); setcolor(4); setlinestyle(0,0,3); for(int j=0,t=1;j<100,t<10;j=j+25,t++) setcolor(t); for (int i=0;i<25;i++) circle(j+i,240,j+i); } getch(); closegraph(); pawie.exe

Spirala – funkcja rekurencyjna #include <graphics.h> #include <iostream.h> #include <conio.h> const double alpha=20; void spirala (double lg, double x, double y); int inicjuj_grafike(int ster, int tryb, char *scster); int main() { int gdriver=DETECT, gmode, errorcode; if (!inicjuj_grafike(gdriver, gmode, "c:\\studenci\\cpp\\borlandc\\bgi")) return 0; setbkcolor(14); setcolor(4); setlinestyle(0,0,3); moveto(150,100); spirala (getmaxx()/2,getx(),gety()); getch(); closegraph(); } spirala.exe

Spirala – funkcja rekurencyjna cd. int inicjuj_grafike(int ster, int tryb, char *scster) { initgraph (&ster, &tryb, scster); if (graphresult()!=grOk) { cout<<"Blad"; return 0; } else return 1; } void spirala (double lg, double x, double y) { if (lg>0) lineto (x+lg,y); lineto (x+lg,y+lg); lineto (x+alpha, y+lg); lineto (x+alpha, y+alpha); spirala (lg-2*alpha, x+alpha, y+alpha); funkcja rekurencyjna