Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Tutorial by Easykoder ®
www.easykoder.vot.pl
Biblioteki C++

Prymitywy

[lekcja] Rozdział 4. Podstawowe figury geometryczne.

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:

C/C++
#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 ) );
    // RYSOWANIE
    // Piksel
    putpixel( screen, 10, 20, makecol( 255, 0, 255 ) );
    putpixel( screen, 10, 30, makecol( 255, 255, 0 ) );
    // Kąt
    arc( screen, SCREEN_W / 2, SCREEN_H / 2, itofix( 0 ), itofix( 128 ), 100, makecol( 0, 0, 0 ) );
    // Linie
    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 ) );
    // Trójkąt
    triangle( screen, 20, 20, 60, 60, 20, 60, makecol( 255, 0, 128 ) );
    // Prostokąt
    rectfill( screen, 500, 400, 700, 500, makecol( 128, 30, 30 ) );
    rect( screen, 490, 390, 710, 510, makecol( 30, 30, 30 ) );
    // Okrąg
    circle( screen, 100, 100, 50, makecol( 255, 64, 64 ) );
    circlefill( screen, 100, 100, 40, makecol( 255, 64, 64 ) );
    // Elipsa
    ellipse( screen, 300, 50, 60, 40, makecol( 128, 20, 128 ) );
    ellipsefill( screen, 300, 50, 50, 30, makecol( 128, 20, 20 ) );
    // Wypełnianie
    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.
Poprzedni dokument Następny dokument
Odpalamy Allegro Bitmapy