Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Allegro klik

Ostatnio zmodyfikowano 2009-05-11 16:34
Autor Wiadomość
Besemir
Temat założony przez niniejszego użytkownika
Allegro klik
» 2009-05-09 08:36:11
Wie ktos jak mozna zrobic przycisk w allegro na ktory mozna kilkac myszka i po kliknieciu stanie sie cos?

Dokladniej chce to wykorzystac w mojej grze Kolko Krzyzyk. Zeby po kliknieciu na jedno z pol pjawilo sie tam kolko albo krzyzyk, ale zeby ono nie zniklo jak puszczeklawisz.

P-6673
WunM
» 2009-05-09 09:22:35
Masz dwa stany przycisku,  zaznaczony (wciśnięty) i odznaczony. Po naciśnięciu na niego zmieniasz z odznaczonego na zaznaczony lub odwrotnie. A potem przy wyświetlaniu - w zależności od stanu - wyświetlasz bitmapę przycisku wciśniętego lub odznaczonego.
P-6674
Besemir
Temat założony przez niniejszego użytkownika
» 2009-05-09 09:29:08
No poprosilbym o kod na te przyciski, bo w kursie nie moge ich znalesc.
P-6675
WunM
» 2009-05-09 10:25:29
No np.

C/C++
int ic_x = 10, ic_y = 20, ic_w = 90, ic_h = 70; //rozmiary przycisku
bool is_mark = false; //stan zaznaczenia

if( mouse_b == 1 )
{
    if(( mouse_x >= ic_x && mouse_x <= ic_x + ic_w ) &&( mouse_y >= ic_y && mouse_y <= ic_y + ic_h ) )
    {
        if( is_mark == false ) is_mark = true;
        else if( is_mark == true ) is_mark = false;
       
    }
}

Kod napisany nieobiektowo więc trudno go wykorzystać wiele razy. Ale z lekką modyfikacją  nie powinieneś mieć problemu.
P-6676
Besemir
Temat założony przez niniejszego użytkownika
» 2009-05-09 10:53:07
no thx ale czy mógłby mi ktoś wytłumaczyć jak to wykorzystać xd?
dokładniej chodzi mi w tym. chce aby po kliknięciu na przycisk pojawił się obrazek kolko.bmp

C/C++
#include <allegro.h>
#include "images.h"
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 400, 400, 0, 0 );
   
   
    BITMAP * bufor = NULL;
    bufor = create_bitmap( 400, 400 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogê utworzyæ bufora !" );
        allegro_exit();
        return 0;
    }
   
    DATAFILE * data = NULL;
    data = load_datafile( "images.dat" );
    if( !data )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogê za³adowaæ bazy z grafik¹!" );
        allegro_exit();
        return 0;
    }
    while( !key[ KEY_ESC ] )
    {
       
       
       
       
       
        clear_to_color( bufor, makecol( 0, 0, 0 ) );
       
        //textout_ex(bufor,font,"Kolko i Krzyzyk ",145,20 ,makecol(255,255,255),-1);
        textprintf_centre_ex( bufor, font, SCREEN_W / 2, 12, makecol( 255, 255, 255 ), - 1, "Kolko i Krzyzyk" );
       
       
        int ic_x = 75, ic_y = 75, ic_w = 160, ic_h = 160; //rozmiary przycisku
        bool is_mark = false; //stan zaznaczenia
       
        if( mouse_b == 1 )
        {
            if(( mouse_x >= ic_x && mouse_x <= ic_x + ic_w ) &&( mouse_y >= ic_y && mouse_y <= ic_y + ic_h ) )
            {
                if( is_mark == false ) is_mark = true;
                else if( is_mark == true ) is_mark = false;
               
                masked_blit(( BITMAP * ) data[ krzyzyk_b ].dat, bufor, 0, 0, 75, 75,(( BITMAP * )
               
            }
        }
       
       
        //masked_blit( (BITMAP*) data[krzyzyk_b].dat,bufor,0,0,75,245,((BITMAP*) data[krzyzyk_b].dat)->w, ((BITMAP*) data[krzyzyk_b].dat)->h);            
        masked_blit(( BITMAP * ) data[ plansza_b ].dat, bufor, 0, 0, 75, 75,(( BITMAP * ) data[ plansza_b ].dat )->w,(( BITMAP * ) data[ plansza_b ].dat )->h );
       
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
   
    destroy_bitmap( bufor );
    unload_datafile( data );
   
    allegro_exit();
    return 0;
}
END_OF_MAIN();

mógłby ktoś pomoc? jak coś to tym wywołuje się obrazek
C/C++
data[ krzyzyk_b ].dat )->w,(( BITMAP * ) data[ krzyzyk_b ].dat )->h );

//Patzick: Pisownia! Poczytaj o kolorowaniu kodu
P-6677
pixelmaster
» 2009-05-09 14:11:32
Jak ja robiłem coś takiego to leciałem po współżędnych
C/C++
if( mouse_x >= guzik.x && mouse_x <= guzik.x + 200 && mouse_y >= guzik.y && mouse_y <= guzik.y + 100 && mouse_b == 1 ) {
    // tutaj instrukcje
}
@Edit: musisz jeszcze zainstalować myszkę
install_mouse();
show_mouse(screen);
unscare_mouse();
P-6681
Besemir
Temat założony przez niniejszego użytkownika
» 2009-05-09 18:48:07
No i właśnie tu pojawia się problem...
Obrazek jest widoczny tylko wtedy gdy klikam na przycisk, jak zrobić żeby po 1 kliknięciu był widoczny cały czas?
P-6682
pixelmaster
» 2009-05-09 20:00:35
Ja bym zrobił tak że jak klikniesz na guzik to zmienna pokaz_obrazek ustawia się np. na 1 i wtedy warunek że jesli zmienna pokaz_obrazek jest równa 1 to wyświetla obrazek.
P-6683
« 1 » 2 3
  Strona 1 z 3 Następna strona