[c++] obsługa myszki w allegro

hej, tworzę grę w c++ na zaliczenie semstru, używam Devcpp i Allegro w wersji 4.2.2

mój problem polega na tym, że nie wiem jak po naciśnięciu myszką w odpowiedni fragment okna, wykonywała się interakcja i rysowała kółko

http://www.allegro.cc/manual/4/api/mouse-routines/

W skrócie:

jeżeli mouse_x należy do jakiegoś przedziału i mouse_y należy do jakiegoś przedziału i mouse_b&1, to coś tam.

mouse_b&1 - LPM

mouse_b&2 - PPM

mouse_b&3 - środkowy z tego co pamiętam

wielkie dzięki

mam teraz kolerny problem: chciłbym abu po najechaniu myszką na trójkąt (trójkąt rysowany jest funkcją triangle), mi mam problem z określeniem ifa, (chcę tylko aby po najechaniu na trójkąt, wykonywała mi się instrukcja zawarta w if’ie)

Wykrywanie kolizji: http://informatyka.wroc.pl/node/477?page=0,0

Ew. sprawdzać kolor pod myszką funkcją getpixel: http://www.allegro.cc/manual/4/api/draw … s/getpixel

edit:

Można jeszcze trzymać w osobnej bitmapie, która nie jest nigdy wyświetlana, elementy graficzne bez upiększaczy i sprawdzać kolor pod myszką.

Jednak nie polecam opierać fizyki na grafice.

edit2:

Albo sprawdzaj matematycznie czy jesteś w trójkącie - np. sprawdzasz czy ograniczają cię 3 odcinki - boki.

zrobiłem podobnie tylko że dadałem jeszcze jeden warunek, który wyglądał mniej więcej tak

if(mx>=100) && (my>=120) && (mx<=130) && (my<=150)

a to dlatego że mam kilka elementów o tym samym kolorze

nie wiem czy jest lepsze razwiązanie tego problemu, ale jak narazie działa

mam kolejne pytanie, mój projekt to odtwarzacz plików wav (narazie bo chcę wprowadzić mp3, ale to później)

moję pytanie polega na tym jak przemieszczać elementy np : bitmapę lub proty kwadracik, (tak aby powstał prosty suwak glośności) oczywiście znów ma to się odbywać za pomocą myszki

Sprawdzasz w której pozycji jest grafika i jeżeli myszka jest nad nią i jest wciśnięty lewy klawisz to przesuwasz zgodnie z ruchem myszki (albo jakieś ograniczenie szybkości) aż do ogranicznika.

Albo Allegro GUI.

już zrobiłem trochę mi to zajeło ale dałem radę :slight_smile:

mam teraz koleny problem nie wiem jak wyświetlić większy napis, w większym rozmiarze czcionki, czytałem trochę o czcionkach i wiem że po wczytaniu innej czcionki da się osiągnąć ten efekt ale ja jednak wolałbym pozostać przy standartowej czcionce…

Zastosuj czcionkę bitmapową.tu konwerter i przykład

4b6b9d8d0462.gif.html

http://zapodaj.net/4b6b9d8d0462.gif.html

Pierwszy post jeszcze nie wiem co i jak.

http://www.allegro.cc/resource/Tools/Fonts/ttf2pcx

#include 

       int main()       

{

       allegro_init();

       install_keyboard();

       set_color_depth(32);

       set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0);

       BITMAP * bufor = create_bitmap(320,240);

       FONT * font_pcx = load_font("arial_16.pcx", default_palette, NULL);

       while( !key[KEY_ESC])

{      

       textprintf_ex(bufor,font_pcx,40, 40,makecol( 0,255,255),-1,

       "Witaj w Allegro %s ",ALLEGRO_VERSION_STR" !");

       textprintf_ex(bufor,font_pcx,40, 80,makecol(255,255, 0),-1,

       "I Zażółć Gęślą Jaźń.");

       blit( bufor, screen, 0, 0, 0, 0, 320, 240);

}

       destroy_bitmap(bufor);

       destroy_font(font_pcx);

       allegro_exit();

       return 0;

}

       END_OF_MAIN();

Zainsteresuj się alfontem - http://chernsha.sitesled.com/ .

Dzięki niemu można używać fontów w “normalnych” formatach - np. otf i ttf. Do tego ma nawet anti-aliasing.

dzięki, ale nie wiem jak tego użyć, więc raczej użyję metody z konwerterem czcionek

może napisz mały poradnik jak mam to załączyć albo daj gotowy przykład

Najłatwiej chyba w Dev-cpp:

Pobierasz alfonta z poziomu Deva z devpaks.org - w menu pomoc z tego co pamiętam. Potem dodajesz -lalfont w konsolidatorze (allegro musi dynamiczne - ze static nie działa). Potem #include i voila.

Podobny problem: http://cpp0x.pl/forum/temat/?id=1518

Wg mnie bardzo przyjemna biblioteka, polecam :). Ew. jak będziesz miał dalej problemy to mogę Ci podesłać gotowy projekt z użyciem alfonta (i paru innych…) - napisz na pw.