<< home >> |
Nesúvislé fragmenty z objavovania OS Linux |
<<- ->> |
|
|
|
|
AllegroAko sa hovorí, do tretice všetko dobré. Allegro je knižnica jazyka C, ktorá pôvodne vznikla z nedostatku dobrých knižníc pracujúcich s grafikou . Na túto základnú funkciu boli potom nabaľované ďalšie a ďalšie funkcie. Takže výsledná knižnica nielenže pracuje s grafikou (2D, 3D), ale aj zvukom, klávesnicou, myšou, súbormi, ...Z adresy http://allegro.cc/files/ môžeme stiahnuť zdrojový paklík allegro-4.0.2.tar.gz (asi 2.3 MB - verzia z marca 2003) a tiež paklík dokumentácie, napríklad v html formáte allegro-manual-4.0.2-html.tar.gz (asi 200 kB) obsahujúci o i. kompletnú referenčnú príručku funkcií knižnice. Inštalácia knižnice AllegroPaklíky skopírujeme niekde do domovského adresára a rozbalíme.$ tar xfz meno_paklika.tar.gz Vojdeme do podadresára allegro-4.0.2, configurujeme a makeujeme. $ cd allegro-4.0.2 $ ./configure $ make Zmeníme identitu a inštalujeme ako root (aj manuálové stránky a dokumentáciu). $ su - # cd /home/.../allegro-4.0.2 # make install # make install-man # make install-info Použitie knižnice Allegro#include <allegro.h>$ gcc -o Priklad_1 Priklad_1.cc `allegro-config -libs` alebo $ gcc -o Priklad_1 Priklad_1.cc -lalleg-4.0.2 -lalleg_unsharable Inicializácia a ukončenieInicializácia knižnice: allegro_init();Na ukončenie práce slúži: allegro_exit(); Inicializácia služieb ovládajúcich klávesnicu: install_keyboard(); Odstránenie služieb klávesnice: remove_keyboard(); Inicializácia služieb ovládajúcich časovač: install_timer(); Odstránenie služieb časovača: remove_timer(); Inicializácia služieb myši: install_mouse(); Odstránenie služieb myši: remove_mouse(); Ukončenie funkcie main(): END_OF_MAIN(); Ukončenie funkcie fcia: END_OF_FUNCTION(fcia); GrafikaNastavenie grafického módu: set_gfx_mode(GFX_XXX, SCRX, SCRY, VSRCX, VSRCY);<konzola i X-Windows>
SCRY - veľkosť obrazovky po Yovej osy VSRCX a VSCRY - je veľkosť virtuálnej obrazovky (double buffering) Špecifikácia grafickej hĺbky: set_color_depth(x); x - rozlíšenie 8, 15, 16, 24, 32bit Priklad_1.c/** Priklad_1.c pre * kniznicu Allegro */ #include <stdio.h> #include <allegro.h> PALETTE pal; BITMAP *obr; int Init(void); void Run(void); void Done(void); int main() { if (Init()) return(-1); Run(); Done(); return(0); } END_OF_MAIN(); /* ------------------------------------------------------------------ */ int Init(void) { allegro_init(); install_keyboard(); if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0)) { printf("Chyba grafickeho modu!\n"); return 1; } set_color_depth(16); if ((obr=load_pcx("Priklad_1.pcx", pal))==NULL) { set_gfx_mode(GFX_TEXT,0,0,0,0); printf("Chyba pri nacitani suboru smecaka (Priklad_1.pcx)!\n"); return 2; } return 0; } END_OF_FUNCTION(Init); /* ------------------------------------------------------------------ */ void Run(void) { int Stop=0; int Score=0; int x=140, y=90; BITMAP *buff; set_palette(pal); buff=create_bitmap(320,480); clear(screen); clear(buff); text_mode(-1); textprintf(screen, font, 360, 20, 255, "Odpadky patria do smecaka"); textprintf(screen, font, 360, 50, 127, "Pohyb smecaka: sipkami"); textprintf(screen, font, 360, 60, 127, "Koniec upratovania: Esc"); textprintf(screen, font, 360, 90, 255, "Score:"); textprintf(screen, font, 420, 90, 255, "%i", Score); do { clear_keybuf(); clear(buff); if (key[KEY_UP] ) {if (y<5) ; else y-=5;} if (key[KEY_DOWN] ) {if (y>450) ; else y+=5;} if (key[KEY_LEFT] ) {if (x<5) ; else x-=5;} if (key[KEY_RIGHT]) {if (x>295) ; else x+=5;} if (key[KEY_ESC] ) Stop=1; draw_sprite(buff, obr, x, y); blit(buff,screen,0,0,0,0,320,480); } while (!Stop); destroy_bitmap(buff); } END_OF_FUNCTION(Run); /* ------------------------------------------------------------------ */ void Done(void) { destroy_bitmap(obr); set_gfx_mode(GFX_TEXT,0,0,0,0); remove_keyboard(); allegro_exit(); } END_OF_FUNCTION(Done); $ gcc -o Priklad_1 Priklad_1.cc `allegro-config -libs Podrobnejšie viď. manuálové stránky, napr. niektoré primitívy: void vline(BITMAP *bmp, int x, int y1, int y2, int color); - Draws a vertical line onto the
bitmap, from point (x, y1) to (x, y2).
void hline(BITMAP *bmp, int x1, int y, int x2, int color); - Draws a horizontal line onto
the bitmap, from point (x1, y) to (x2, y).
void do_line(BITMAP *bmp, int x1, y1, x2, y2, int d, void (*proc)(BITMAP *bmp, int x, int y, int d)); - Calculates all the points along
a line from point (x1, y1) to (x2, y2), calling the supplied function
for each one. This will be passed a copy of the bmp parameter, the x and
y position, and a copy of the d parameter, so it is suitable for use
with putpixel().
void line(BITMAP *bmp, int x1, int y1, int x2, int y2, int color); - Draws a line onto the bitmap,
from point (x1, y1) to (x2, y2).
void triangle(BITMAP *bmp, int x1, y1, x2, y2, x3, y3, int color); - Draws a filled triangle between
the three points.
void polygon(BITMAP *bmp, int vertices, const int *points, int color); - Draws a filled polygon with an
arbitrary number of corners. Pass the number of vertices and an array
containing a series of x, y points (a total of vertices*2 values).
void rect(BITMAP *bmp, int x1, int y1, int x2, int y2, int color); - Draws an outline rectangle with
the two points as its opposite corners.
|
<<- ->> |
|
|