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

Problem z Allegro c++

Ostatnio zmodyfikowano 2011-04-10 15:46
Autor Wiadomość
Borysiak
Temat założony przez niniejszego użytkownika
Problem z Allegro c++
» 2011-04-04 08:56:11
Witam od tygodnia pracuje nad gra i mam problem nie umiem zrobić aby program wykonywał  tylko raz ta funkcje a nie ze trzeba czy mac  cały czas na klawiaturze G i on nie wykonuje jej razy tylko zależnie od tego ile przytrzymasz G jak 2 sekundy to kawałek całej funkcje zostanie ....


C/C++
while( !key[ KEY_ESC ] )
{
    //  .............................
    //  .............................
    if( key[ KEY_G ] )
    {
        w = 7;
    }
    //...................................
    //...................................
    //...................................
    if(( w >= 7 ) &&( w < 8 ) )
    {
        if( frame < 10 ) { draw_sprite( bufor, naruto_resengan_a, ludek_x, ludek_y ); }
        else if( frame >= 10 && frame < 15 ) { draw_sprite( bufor, naruto_resengan_b, ludek_x, ludek_y ); }
        else if( frame >= 15 && frame < 20 ) { draw_sprite( bufor, naruto_resengan_c, ludek_x, ludek_y ); }
        else if( frame >= 20 && frame < 30 ) { draw_sprite( bufor, naruto_resengan_d, ludek_x, ludek_y ); }
        else if( frame >= 30 && frame < 40 ) { draw_sprite( bufor, naruto_resengan_e, ludek_x, ludek_y ); }
        else if( frame >= 40 && frame < 50 ) { draw_sprite( bufor, naruto_resengan_f, ludek_x, ludek_y ); }
        else if( frame >= 50 && frame < 60 ) { draw_sprite( bufor, naruto_resengan_g, ludek_x, ludek_y ); }
    }
    //.......................................
    //.......................................
}
}

Dzięki za pomoc ;)
P-30256
McAffey
» 2011-04-04 09:38:04
Nie możesz to jakimiś warunkami zabezpieczyć ? Np:

C/C++
bool klikniecie = false;

if( klikniecie == false )
{
    if( key[ KEY_G ] )
    {
        w = 7;
        klikniecie = true;
    }
}

if( w == 7 )
{
    //wykonywanie funkcji. po wykonaniu funkcji :
    klikniecie = false;
    //i aby funkcji znów się nie wykonywała np:
    w = 5;
}

Nie wiem czy to zadziała tak jak chcesz bo napisałem na poczekaniu i nie kompilowałem, ale spróbuj pokombinować w tym kierunku.

edit: A poza tym, czemu warunki w if'ie :
if(( w >= 7 ) &&( w < 8 ) )
 masz w dodatkowych nawiasach, i czemu jak wyżej deklarujesz
w = 7;
 nie zrobisz po prostu if'a :
if( w == 7 )
?
P-30257
Borysiak
Temat założony przez niniejszego użytkownika
» 2011-04-04 21:48:11
Sory ze odpisuje teraz ale nie miałem czasu
Sory ja chyba źle sprecyzowawszy pytanie i nie zamiscilem jednej rzeczy w kodzie :p
Bo jak widzisz każde zdjęcie jest wczytywane wtedy kiedy frame równa się jakieś wartości np: przy 10 wczytuje jedno ,aż frame dojdzie do 20 i wtedy wczyta drugie zdjęcie i ja chce żeby on wczytał te 7 zdjęć podczas jednego kliknięcia
G ...
Dzieki za odp ;)

C/C++
while( !key[ KEY_ESC ] )
{
    frame++;
    if( frame > 69 ) frame = 0;
   
    //  .............................
    //  .............................
    if( key[ KEY_G ] )
    {
        w = 7;
    }
    //...................................
    //...................................
    //...................................
    if(( w >= 7 ) &&( w < 8 ) )
    {
        if( frame < 10 ) { draw_sprite( bufor, naruto_resengan_a, ludek_x, ludek_y ); }
        else if( frame >= 10 && frame < 15 ) { draw_sprite( bufor, naruto_resengan_b, ludek_x, ludek_y ); }
        else if( frame >= 15 && frame < 20 ) { draw_sprite( bufor, naruto_resengan_c, ludek_x, ludek_y ); }
        else if( frame >= 20 && frame < 30 ) { draw_sprite( bufor, naruto_resengan_d, ludek_x, ludek_y ); }
        else if( frame >= 30 && frame < 40 ) { draw_sprite( bufor, naruto_resengan_e, ludek_x, ludek_y ); }
        else if( frame >= 40 && frame < 50 ) { draw_sprite( bufor, naruto_resengan_f, ludek_x, ludek_y ); }
        else if( frame >= 50 && frame < 60 ) { draw_sprite( bufor, naruto_resengan_g, ludek_x, ludek_y ); }
    }
    //.......................................
    //.......................................
}
}

A ten kod gdy wciskałem G wczytywać chodzenie bona w=5 mam chodzenie;)
Bo program wykrywał G i przypisywal zaraz 5 bez wyswitlenia animacji o ktora mi chodzilo
P-30297
malan
» 2011-04-04 23:37:47
A tak:
C/C++
if( key[ KEY_G ) )
{
    if( frame < 10 ) { draw_sprite( bufor, naruto_resengan_a, ludek_x, ludek_y ); }
    else if( frame >= 10 && frame < 15 ) { draw_sprite( bufor, naruto_resengan_b, ludek_x, ludek_y ); }
    else if( frame >= 15 && frame < 20 ) { draw_sprite( bufor, naruto_resengan_c, ludek_x, ludek_y ); }
    else if( frame >= 20 && frame < 30 ) { draw_sprite( bufor, naruto_resengan_d, ludek_x, ludek_y ); }
    else if( frame >= 30 && frame < 40 ) { draw_sprite( bufor, naruto_resengan_e, ludek_x, ludek_y ); }
    else if( frame >= 40 && frame < 50 ) { draw_sprite( bufor, naruto_resengan_f, ludek_x, ludek_y ); }
    else if( frame >= 50 && frame < 60 ) { draw_sprite( bufor, naruto_resengan_g, ludek_x, ludek_y ); }
}
?
P-30316
McAffey
» 2011-04-05 08:49:55
@malan wydaje mi się, że tak też nie, bo jak puścisz G zanim pokaże ostatnie zdjęcie to i tak go już nie pokaże. Ale wciąż nie wiem o co Ci chodzi, takie coś może być ?

C/C++
bool klikniecie = false;

while( !key[ KEY_ESC ] )
{
    frame++;
    if( frame > 69 ) frame = 0;
   
    //  .............................
    //  .............................
    if( klikniecie == false )
    {
        if( key[ KEY_G ] )
        {
            w = 7;
            klikniecie = true;
        }
    }
    //...................................
    //...................................
    //...................................
    if(( w >= 7 ) &&( w < 8 ) )
    {
        if( frame < 10 ) { draw_sprite( bufor, naruto_resengan_a, ludek_x, ludek_y ); }
        else if( frame >= 10 && frame < 15 ) { draw_sprite( bufor, naruto_resengan_b, ludek_x, ludek_y ); }
        else if( frame >= 15 && frame < 20 ) { draw_sprite( bufor, naruto_resengan_c, ludek_x, ludek_y ); }
        else if( frame >= 20 && frame < 30 ) { draw_sprite( bufor, naruto_resengan_d, ludek_x, ludek_y ); }
        else if( frame >= 30 && frame < 40 ) { draw_sprite( bufor, naruto_resengan_e, ludek_x, ludek_y ); }
        else if( frame >= 40 && frame < 50 ) { draw_sprite( bufor, naruto_resengan_f, ludek_x, ludek_y ); }
        else if( frame >= 50 && frame < 60 ) { draw_sprite( bufor, naruto_resengan_g, ludek_x, ludek_y ); klikniecie = false; w = 5; }
       
    }
    //.......................................
    //.......................................
}
}

Po czymś takim powinny niezależnie od tego jak długo trzyma się G, 1 raz wszystkie zdjęcia pokazać. Jednak trudno powiedzieć w ciemno, a kompilować twój kawałek kodu, bez jego pozostałej części i plików nie chce mi się.
P-30320
musk
» 2011-04-08 11:02:06
C/C++
while( !key[ KEY_ESC ] ) {
    //  .............................
    int frame = 0;
   
    if( key[ KEY_G ] ) {
        for( frame = 0; frame < 61; frame++ ) {
            if( frame < 10 ) { draw_sprite( bufor, naruto_resengan_a, ludek_x, ludek_y ); }
            if( frame >= 10 && frame < 15 ) { draw_sprite( bufor, naruto_resengan_b, ludek_x, ludek_y ); }
            if( frame >= 15 && frame < 20 ) { draw_sprite( bufor, naruto_resengan_c, ludek_x, ludek_y ); }
            if( frame >= 20 && frame < 30 ) { draw_sprite( bufor, naruto_resengan_d, ludek_x, ludek_y ); }
            if( frame >= 30 && frame < 40 ) { draw_sprite( bufor, naruto_resengan_e, ludek_x, ludek_y ); }
            if( frame >= 40 && frame < 50 ) { draw_sprite( bufor, naruto_resengan_f, ludek_x, ludek_y ); }
            if( frame >= 50 && frame < 60 ) { draw_sprite( bufor, naruto_resengan_g, ludek_x, ludek_y ); }
        }
    }
    //.......................................
    //.......................................
}

Może tak?
P-30433
McAffey
» 2011-04-08 13:58:59
Myślę, że dopóki autor tematu się nie odezwie nie ma co wysnuwać nowych propozycji (jeśli w ogóle się odezwie) :)
P-30442
Borysiak
Temat założony przez niniejszego użytkownika
» 2011-04-10 15:46:53
Sorki że sie nie odzywałem ale nie mialem dostpu do kompa ;)
Dalej nie działa ale ja juz sobie to odpuściłem i wziałem za coś innego :)
Dzieki
P-30548
« 1 »
  Strona 1 z 1