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

[Allegro] Problem z kierowaniem myszką.

Ostatnio zmodyfikowano 2009-01-24 18:44
Autor Wiadomość
Arrogance
Temat założony przez niniejszego użytkownika
[Allegro] Problem z kierowaniem myszką.
» 2009-01-23 03:48:36
jestem w trakcie robienia gry, cos w stylu bitwy w herosach, mam określoną ilość stworków na mapie, każdy ma własne statystyki zawarte w strukturze etc. i problem pojawia się kiedy chciałbym aby stwory przemieszczały się w miejsce gdzie kliknę myszką, oczywiście chodzi mi o to żeby poruszały się w określonej kolejności w zależności od parametru prędkości każdego z nich. mam kod który tworzy mi kolejkę poruszania się tychże stworów, ale jak staram się zrobić coś z funkcją poruszania to program się wiesza albo inne dziwne rzeczy się dzieją :/ tu kod :

C/C++
for( i = 0; i < 10; i++ )
{
    lud[ i ].ruch = 0;
}
for( k = 0; k < 10; k++ ) {
    for( i = 0, tym = 0; i < 10; i++ ) {
       
        if( lud[ i ].szyb > tym && lud[ i ].ruch == 0 ) {
            tym = lud[ i ].szyb;
        }
    }
   
   
    for( i = 0; i < 10; i++ ) {
        if( lud[ i ].szyb == tym && lud[ i ].ruch == 0 )
        {
            RUCH !!!!!!
            lud[ i ].ruch = 1;
           
            break;
        }
       
    }
    for( i = 0; i < 10; i++ )
    {
       
    }
   
}
}

w miesjce "RUCH" tworzyłem przeróżne funkcje np.
 
C/C++
do {
    if( mb == 2 ) {
        rx[ i ] =( floor( mx / 60 ) ) * 60;
        lud[ i ].poz_x = rx[ i ];
        rx[ i ] = 0;
        ry[ i ] =( floor( my / 60 ) ) * 60;
        lud[ i ].poz_y = ry[ i ];
        ry[ i ] = 0;
    }
} while( !( rx[ i ] == 0 && ry[ i ] == 0 ) );

chodzi mi tylko o to aby nie odbywało się to w ułamku sekundy bo wteyd wszystkie ludki sa w tym samym miescu :/ z góry dzieki :)
P-3864
Patzick
» 2009-01-23 11:44:00
Nic dziwnego, że się wysypuje.

Trochę błędów jest:
C/C++
for( i = 0; i < 10; i++ )
{
    lud[ i + 1 ].ruch = 0; //każdego ludka ustawiasz w ruchu (jeżeli 0 to ruch), popraw na i+1
}
tym[ 10 ];
for( k = 0; k < 10; k++ ) { //pętla k liczy do 10
    for( i = 0; i < 10; i++ ) { //ta pętla liczy do 10 i, a to tym lepiej przenieść wyżej, bo to chyba ma być wykorzystywane później
       
        if( lud[ i + 1 ].szyb > tym && lud[ i + 1 ].ruch == 0 ) { //musisz dodawać i+1 inaczej będzie od ludka zerowego liczyło
            tym[ i + 1 ] = lud[ i + 1 ].szyb; //przypisujesz dla tym szybkość ludka. Ale po każdym wykonaniu pętli to się zmienia więc nic z tego nie masz. Z poniższego for wynika że lepiej dać to do tablicy
        }
    }
   
   
    for( i = 0; i < 10; i++ ) {
        if( lud[ i + 1 ].szyb == tym[ i + 1 ] && lud[ i + 1 ].ruch == 0 ) //znów i+1 i teraz możesz wykorzystać szybkość każdego ludka z tablicy
        {
            RUCH !!!!!!
            lud[ i + 1 ].ruch = 1;
           
            break; //nie wiem po co Ci ten break
        }
       
    }
   
}
Coś mniej więcej takiego powinno być
P-3866
DejaVu
» 2009-01-23 17:09:39
Patzik: każda tablica w C/C++ jest numerowana od 0, więc błąd wkazywany przez Ciebie i+1 nie jest tym o co autorowi tematu chodzi.
P-3874
Patzick
» 2009-01-23 17:15:47
ale poprawiłem mu nie tylko te wszystkie i+1, jak Ci się chce przeanalizuj różnicę między jego a moim kodem :)
P-3876
DejaVu
» 2009-01-24 18:44:40
Proszę o zabranie głosu autora tematu - czy uzyskałeś oczekiwaną odpowiedź?
P-3907
« 1 »
  Strona 1 z 1