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

[Allegro] Problem z "przyciskiem"

Ostatnio zmodyfikowano 2010-05-06 22:38
Autor Wiadomość
McAffey
Temat założony przez niniejszego użytkownika
[Allegro] Problem z "przyciskiem"
» 2010-05-06 22:15:25
Witam! Od razu przepraszam, że taki nie precyzyjny temat, ale trudno mi go określić dokładniej ;) A więc, do rzeczy. W prostej grze w allegro mam tak jakby 2 karty. W jednej karcie, po środku jest przycisk(nazwijmy go przycisk1), dzięki któremu przechodzimy do drugiej karty. Wygląda to tak :
C/C++
if( mx > 483 && mx < 532 ) //mouse x
{
    if( my > 316 && my < 364 ) //mouse y
    {
        draw_sprite( bufor, zaznaczanieminiplaneta, 484, 317 ); //nie
        //mające na nic wpływu zaznaczenie nad przyciskiem
        if( mb == 1 ) //mb to wciśnięty klawisz myszy (lewy = 1), tak dla jasności ;)
        {
            seeint = 2; //seeint 1 = pierwsza karta, seeint 2 = druga karta
        }
    }
}

Takie rozwiązanie mam jeszcze przy innych przyciskach, wszystko ładnie, sprawnie działa. Problem mam następujący. W drugiej karcie na wysokości górnej połowy przycisku1, znajduje się następny przycisk(nazwijmy go przycisk2) wywołujący następne czynności.
(wygląda on tak:)
C/C++
if( seeint == 2 )
{
    if( mx > 479 && mx < 546 )
    {
        draw_sprite( bufor, zaznaczenie3obszar, 479, 279 );
        if( mb == 1 )
        {
            zoom = 1;
            obszar = 11;
        }
    }
    //zakończenie if'a pierwszego jest w dalszej części
 I gdy nacisnę przycisk1 na dolnej połowie, tak jak powinno przechodzi po prostu do karty drugiej. A gdy nacisnę go na górnej połowie, klika się od razu przycisk na karcie drugiej, i w o gule nie wyświetla się karta druga tylko od razu te następne czynności. Wszystko jest poprawnie "zabezpieczone" tzn przycisk drugi jest w if'e
if( seeint == 2 )
I nie powinien się włączać z wysokości karty pierwszej. Początkowo myślałem, że to przez to, że przejście między kartami odbywa się szybciej niż ja puszczam myszkę, ale to nie to, bo gdy dodałem, po przypisaniu zmiennej "seeint" liczby dwa, prostego for'a i dałem mu tam sporo czynności, to po kliknięciu w przycisk1 następowała chwila "przerwy" trwająca kilka sekund i dopiero przechodziło dalej i i tak wciskał się przycisk2. Przepraszam, że tak zagmatwałem to wyjaśnianie, ale starałem się jak najdokładniej wyjaśnić problem. Macie może jakieś rady? Od razu dodam, że przesunięcie przycisku drugiego nie wchodzi w grę ;]  Dziękuję i pozdrawiam ;)
P-16669
DejaVu
» 2010-05-06 22:25:48
Narysuj na kartce obszary, które użyłeś, a zobaczysz, że one na siebie zachodzą. Wszystko nie jest poprawnie oprogramowane skoro źle działa. Błąd jest w kodzie, a nie w działaniu kompilatora, czy czegokolwiek innego.
P-16670
McAffey
Temat założony przez niniejszego użytkownika
» 2010-05-06 22:33:54
Wiem, że te obszary na siebie zachodzą, ani nie sugeruję, że to jest wina kompilatora czy czegoś innego. Ale spędziłem nad tym problem dużo czasu i nie mogę wykminić rozwiązania. Dalej nad tym siedzę i nie potrafię tego zrozumieć.
P-16672
DejaVu
» 2010-05-06 22:38:20
Weź kartkę i narysuj w układzie współrzędnych oba zbiory. Chyba na matematyce tego uczyli...

/edit:
A tak swoją drogą to pewnie nie widzisz tego:
C/C++
int i = 0;
bool sth = true;
if( sth )
     i = 1;

if( i == 1 )
     i = 2;

std::cout << i << std::endl;
Sprawdź co wyświetla ten program i zastosuj się jeszcze do tej kartki i poznasz odpowiedzi na wszystkie pytania.
P-16673
« 1 »
  Strona 1 z 1