Podstawowe figury geometryczne
Na ostatniej lekcji nauczyliśmy się inicjować tryb graficzny Allegro, teraz sięgniemy trochę głębiej... mianowicie do prymitywów Allegro. Otóż prymitywy w Allegro to zwykłe, podstawowe (stąd prymitywy - nieco obraźliwie ;) figury geometryczne takie jak trójkąty, okręgi, linie, itp. Najpierw kodzik potem wyjaśnienia:
#include <allegro.h>
int main()
{
allegro_init();
install_keyboard();
set_color_depth( 16 );
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
clear_to_color( screen, makecol( 128, 128, 128 ) );
putpixel( screen, 10, 20, makecol( 255, 0, 255 ) );
putpixel( screen, 10, 30, makecol( 255, 255, 0 ) );
arc( screen, SCREEN_W / 2, SCREEN_H / 2, itofix( 0 ), itofix( 128 ), 100, makecol( 0, 0, 0 ) );
hline( screen, 20, 400, 500, makecol( 255, 255, 255 ) );
vline( screen, 20, 400, 500, makecol( 255, 255, 255 ) );
line( screen, 400, 200, 600, 400, makecol( 255, 128, 64 ) );
triangle( screen, 20, 20, 60, 60, 20, 60, makecol( 255, 0, 128 ) );
rectfill( screen, 500, 400, 700, 500, makecol( 128, 30, 30 ) );
rect( screen, 490, 390, 710, 510, makecol( 30, 30, 30 ) );
circle( screen, 100, 100, 50, makecol( 255, 64, 64 ) );
circlefill( screen, 100, 100, 40, makecol( 255, 64, 64 ) );
ellipse( screen, 300, 50, 60, 40, makecol( 128, 20, 128 ) );
ellipsefill( screen, 300, 50, 50, 30, makecol( 128, 20, 20 ) );
ellipse( screen, 700, 200, 80, 30, makecol( 50, 50, 50 ) );
floodfill( screen, 700, 200, makecol( 20, 120, 20 ) );
readkey();
allegro_exit();
return 0;
}
END_OF_MAIN();
Według mnie nie ma co wyjaśniać, wszystko jest podpisane ;D... Chociaż z drugiej strony można by wyjaśnić procedury:
arc(screen, 300, 300, itofix(0), itofix(128), 100, makecol(0, 0, 0));
Rysuje ona łuk okręgu jej parametry to : wskaźnik do bitmapy, pozycja X, pozycja Y środka okręgu, kąt początkowy, kąt końcowy, promień, i kolor. Rysowanie zaczyna się od osi X, a następnie przechodzi przez I, II, III, i IV ćwiartkę układu współrzędnych. Wyjaśnienia wymaga tajemnicza funkcja itofix(), służy ona do konwertowania kąta na typ fixed, gdyż w Allegro podajemy kąty jako liczbę z zakresu od 0 do 255 ( pełny obrót o 360 stopni).
line( screen,400,200,600,400, makecol(255,128,64));
Rysuje linię jej argumentami są : wskaźnik do bitmapy, X1, Y1, X2, Y2 oraz kolor.
hline(screen, 20, 400, 500, makecol(255,255,255));
Rysuje linię poziomą jej argumentami są : wskaźnik do bitmapy, X1, Y, X2 oraz kolor.
vline(screen, 20, 400, 500, makecol(255,255,255));
Rysuje linię pionową jej argumentami są : wskaźnik do bitmapy, X, Y1, Y2 oraz kolor.
floodfill(screen,700,200,makecol(20,120,20));
Kto programował w Pascalu ten wie do czego służy ta funkcja ;)... Wypełnia ona obszar podanym kolorem aż do napotkania jakiegokolwiek koloru innego niż ten od którego zaczynało się wypełnianie. Jej argumentami są : wskaźnik do bitmapy, pozycja X, pozycja Y oraz kolor.
Gdy chcesz więcej prymitywów
No i do by było na tyle jeśli chodzi o prymitywy w Allegro... Dostępnych jest oczywiście więcej funkcji operujących na prymitywach, jeśli ktoś jest aż tak ciekawy to może zajrzeć do dokumentacji... Ale przecież nie po to odpalamy Allegro żeby rysować jakieś kreski, nie? :] Następna lekcja będzie już o wiele Ciekawsza...
Kody źródłowe programów
Zadania do tej i innych lekcji znajdziesz
na naszym repozytorium.
Prawa autorskie
Serwis otrzymał zgodę od autora na publikację niniejszego materiału.