witam. z desperacji chcialem sie juz targnac na swoje zycie. kod jest obszerny, ale prosty-blagam o pomoc.
#include "allegro.h"
#include <time.h>
///////////////////////DEKLARACJE FUNKCJI I OBIEKTOW GLOBALNYCH/////////////////
void ustawienia_poczatkowe();
void ustawienia_koncowe();
bool laduj_kwadracik();
bool laduj_bufor();
void aktualny_czas();
void obieg_programu();
void rysuj_linie();
BITMAP* kwadracik = NULL;
BITMAP* bufor = NULL;
int zmienna = 0;
////////////////////////////////////////////////////////////////////////////////
int main()
{
ustawienia_poczatkowe();
//dzielimy ekran
rysuj_linie();
//powolujemy do zycia bitmape kwadracik i tylni bufor
laduj_kwadracik();
laduj_bufor();
//glowna czesc programu, wszystko bedzie sie wykonywalo co 10 milisekund
LOCK_FUNCTION(obieg_programu);
install_int(obieg_programu,10);
//funkcja zatrzymujaca przed automatycznym zamknieciem sie programu
readkey();
ustawienia_koncowe();
return 0;
}
END_OF_MAIN()
////////////////////FUNCKJE/////////////////////////////////////////////////////
void ustawienia_poczatkowe()
{
allegro_init();
set_gfx_mode(GFX_AUTODETECT_WINDOWED,680,600,0,0);
set_color_depth(8);
set_palette(default_palette);
clear_to_color(screen,15);
//clear_to_color(bufor,15);
install_keyboard();
text_mode(-1);
}
//-----------------------------
void ustawienia_koncowe()
{
allegro_exit();
}
//-----------------------------
bool laduj_kwadracik()
{
kwadracik = load_bitmap("kwadracik.pcx", default_palette);
if(!kwadracik)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("Nie moge zaladowac pliku z obrazkiem !\n");
allegro_exit();
return 0;
}
}
//------------------------------
bool laduj_bufor()
{
if(!(bufor = create_bitmap(680,600)))
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("Zamalo pamieci potrzebnej do stworzenia bufora ekranu !\n");
allegro_exit();
return 0;
}
}
//-----------------------------
void aktualny_czas()
{
time_t T = 0;
struct tm *lt = NULL;
time(&T);
lt = localtime(&T);
textprintf(bufor,font,10,10,1,"%d-%02d-%02d %02d:%02d:%02d",
lt->tm_year + 1900,
lt->tm_mon + 1,
lt->tm_mday,
lt->tm_hour,
lt->tm_min,
lt->tm_sec);
}
//----------------------------
void rysuj_linie()
{
//vline(bufor,298,0,600,makecol(1,1,1));
//vline(bufor,299,0,600,makecol(1,1,1));
}
//-----------------------------
void obieg_programu()
{
rysuj_linie();
zmienna++;
clear_to_color(screen,15);
//clear_to_color(bufor,15);
masked_blit(kwadracik, bufor, 0,0,480,zmienna, kwadracik->w,kwadracik->h);
aktualny_czas();
}
END_OF_FUNCTION(obieg_programu)
w miejscach oznaczonych komentarzem jest blad. wszystko jest w porzadku gdy zamiast bitmapy bufor uzyje po prostu screen. jesli komus bedzie sie chcialo przez to przebijac-chwala mu za to:D