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

Problem z myszką

Ostatnio zmodyfikowano 2011-02-21 16:54
Autor Wiadomość
96microsoft
Temat założony przez niniejszego użytkownika
Problem z myszką
» 2011-02-15 19:57:40
Witam. Mam problem z myszką. A mianowicie zrobilem tak że bufor jest tłem wszystkiego i na nim jest wstawiony inny obrazek oznaczony w kodzie "_20" ale jak wstawiałem show_mouse(bufor) przed pentlą while() to mi mrygało więć zrobiłem tak:
C/C++
while( !key[ KEY_ESC ] )
{ blit( _tlo, bufor, 0, 100, 0, 0, x, y );
    draw_sprite( bufor, _20, 400, 500 );
    myszka();
    show_mouse( bufor );
   
   
    textprintf_ex( bufor, font, 450, 200, makecol( 255, 0, 255 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, pm );
   
   
    blit( bufor, screen, 0, 0, 0, 0, x, y );
   
   
   
   
}
teraz już nie mryga ale czy to jest poprawne?? może tak być?? Dodam ze w tej pętli myszka będzie miała dużo do roboty hehe:) (drag and drop) itp. dodam że kursor mam własny zrobiony.
P-28257
szyx_yankez
» 2011-02-15 20:24:20
teraz już nie mryga ale czy to jest poprawne?? może tak być??
Tak.
Jak masz własny kursor to możesz go zwyczajnie wyswietlać funkcją blit/masked_blit, na pozycij mouse_x(mx), mouse_y(my).

P-28258
96microsoft
Temat założony przez niniejszego użytkownika
» 2011-02-15 20:43:45
Jeszcze jedno. Jak wstawiam _sleep(); w pętlę for bo chce żeby tzw. progress bar się przesuwał to mi jest czarne tło przez tyle czasu ile jest ustawiony na sleep a potem jak się włączy obraz to progress jest już wypełniony do końca. Jak zwolnic pętlę for
P-28262
SeaMonster131
» 2011-02-15 20:53:06
C/C++
int progress = 0;

void wys_pasek_postepu( int dlugosc )
{
    rysuj( pasek, dlugosc );
}

//...

while( 1 )
{
   
    progress++;
   
    wys_pasek_postepu( progress / 10 );
   
}

Nie musisz wstrzymywać programu :)
P-28263
96microsoft
Temat założony przez niniejszego użytkownika
» 2011-02-15 22:19:25
Może inne rozwiązanie najlepiej z for-em. Bo ten while to tez czarny ekran i więcej nic dodam ze on się zapętla bo cały czas jest TRUE. A powinno być po załadowaniu progressa dalsza część programu wszytko robię w pętli While(!key[KEY_ESC])
P-28266
96microsoft
Temat założony przez niniejszego użytkownika
» 2011-02-16 09:51:10
Znalazłem sposób ale nie jest zbyt poprawny i nie testowałem bo jestem w szkole. zrobił bym pętlę główną i w niej tak jakby opóżnienie czyli
C/C++
while( !keyKEY_ESC ] )
{
    //łądowanie progresa wyswietlenie
    for( int l = 0; l <= 10000; l++ )
    {
       
    }
}
mogło by być coś takiego?
P-28270
Drraven
» 2011-02-17 20:13:55
Twoje rozwiązanie zależy od timera. Jeśli nie masz to na nowych maszynach przeleci to w oka mgnieniu ;) A takie paski nie robić lepiej tak:

Ładujesz grafikę:
Załadujesz jeden plik pokazuję się jedna klata w pasku i tak aż załadujesz wszystkie. I do tego jeszcze co ty tam ładujesz (dźwięk, pliki) Oczywiście obraz != 1 klatka w pasku.
P-28336
96microsoft
Temat założony przez niniejszego użytkownika
» 2011-02-20 18:10:05
Teraz to mam inny problem. Tamten jest już ok. Teraz chodzi o to że jak chcem kliknąć w pewne  miejsce to ma się wyświetlić napis "start" a jak nacisne w te same miejsce drugi  raz ppm to ma to zniknąć (ma działać jak menu start w Windowsie) oto fragmenty pentli głównej i funkcji menu()
main()
C/C++
while( !key[ KEY_ESC ] )
{
    myszka();
   
    clear_to_color( bufor, makecol( 0, 0, 0 ) );
   
   
    draw_sprite( bufor, pmenu, 0, y - 41 );
    textprintf_ex( bufor, font, 810, 778, makecol( 255, 0, 255 ), - 1, " x = %d y=%d przyc=%d", mx, my, pm );
   
   
   
   
    masked_blit( Kursor, bufor, 0, 0, mouse_x, mouse_y, Kursor->w, Kursor->h );
    blit( bufor, screen, 0, 0, 0, 0, x, y );
    if(( mx >= 6 ) &&( my >= 761 ) &&( mx <= 41 ) &&( my <= 795 ) &&( pm == 1 ) &&( prawdamenu == false ) )
    {
        menu();
       
    }
   
}
menu();
C/C++
void menu()
{ prawdamenu = true;
    while( prawdamenu )
    {
        myszka();
        clear_to_color( bufor, makecol( 0, 0, 0 ) );
        if(( mx >= 6 ) &&( my >= 761 ) &&( mx <= 41 ) &&( my <= 795 ) &&( pm == 1 ) )
             prawdamenu = false;
       
        textout_ex( bufor, font, "START", 90, 90, makecol( 255, 255, 1 ), - 1 );
       
        draw_sprite( bufor, pmenu, 0, y - 41 );
        textprintf_ex( bufor, font, 810, 778, makecol( 255, 0, 255 ), - 1, " x = %d y=%d przyc=%d", mx, my, pm );
       
        masked_blit( Kursor, bufor, 0, 0, mouse_x, mouse_y, Kursor->w, Kursor->h );
        blit( bufor, screen, 0, 0, 0, 0, x, y );
       
        clear_keybuf();
    }
}
chodz o to że nie za każdym razem się ten napis "start" wyłącza i nie za każdym razem się łacz. Czasem to tylko mrygnie i zgaśnie. Co jest nie tak
P-28484
« 1 » 2
  Strona 1 z 2 Następna strona