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

Pętla...

Ostatnio zmodyfikowano 2011-06-28 16:32
Autor Wiadomość
maciejo
Temat założony przez niniejszego użytkownika
Pętla...
» 2011-06-26 23:26:11
Po długim odpoczynku postanowiłem powrócić do programowania i na razie piszę edytor do gry , która powstanie później ... To w allegro oczywiście ;D
Ale pojawił się pewien problem... Nie mam pomysłu na algorytm ... może bardziej na pętlę , która będzie służyć w wyborze kafelków.
Chodzi o to , że mógłbym robić osobno dla każdego kafelka wybór (dla kafelka #0 - warunek: if( mouse_x>=30&&mouse_y>=65&&mouse_b==1) wybor=0; itd.) ale lepiej chyba byłoby napisać pętlę która ponumeruje kolejne kafelki zamiast zaśmiecać kod ifami(a przy niemal 100 kafelkach to trochę by tego było...)
Od paru godzin męczę się i nie mogę wymyślić jak by to napisać...
Może macie jakieś pomysły? :)
PS. Kafle w 'tilesecie'(czy jak to się tam nazywa) nie są ułożone tylko jeden pod drugim , ale też jeden koło drugiego(tak jak jest np. na mapie z kafli).
P-34761
WiecznyWem
» 2011-06-26 23:35:13
if( ktoś kliknął){
x kafla = mysz x mod szerokośc kafla
y kafla = mysz y mod wysokośc kafla
}
oczywiście zakładając, że kafle rysują się od punktu 0,0. w przeciwnym razie musisz odpowiednio obliczyć wartości. Dodatkowo aby to sprawnie działało, trzeba zabezpieczyć to kilkoma warunkami, ale to w zależności od tego co potrzebujesz(i jak) a tego nie pisałeś.

Dobranoc :)
P-34762
kamillo121
» 2011-06-26 23:36:53
Proste, zrób sobie takie jakby kontrolki(tak jak masz w gui) i wrzuć je do jakiegoś agregatu.
Następnie dopisz funkcje do wyświetlania kontrolek jak i do sprawdzania czy myszka nachodzi na kafle itd.
Daje to duże możliwości bo możesz cuda wianki zrobić bez większego wysiłku.
P-34763
maciejo
Temat założony przez niniejszego użytkownika
» 2011-06-26 23:41:02
Chodzi mi o samo wybieranie kafli z obrazka tzn. że jak kliknę na kafel (nie na mapie, tylko tam gdzie sobie wybieram kafle) to wtedy wybiera jakiś kafel(przypisuje zmiennej "wybrano" jakąś wartość np. 1) i zrobiłbym to na ifach gdyby nie fakt , że mam 99 kafli do wyboru... a na pętlę właśnie nie mam pomysłu...
P-34764
kamillo121
» 2011-06-26 23:55:13
Moim sposobem to pi razy drzwi tak:

C/C++
struct obj
{
    short x, y, w, h; //pozycja kafla
    int id; //nr kafla
   
    bool colide( int xM, int yM )
    {
        if( xM >= x && xM <= x + w && yM >= y && yM <= y + h )
        {
            return 1;
        }
        return 0;
    }
};

std::vector < obj > nasz_agregat;

void check( short & wybor )
{
    if( myszka_klik )
    {
        for( iterator_nasz_agregat < iterator_end )
        {
            if(( * iterator_nasz_agregat )->colide( myszka_x, myszka, y ) )
            {
                wybor =( * iterator_nasz_agregat )->id;
            }
        }
    }
}

//wyświetlanie itd

Tak na skróty ale reszta to zadanie dla ciebie.
Oczywiście przydałby się inny agregat i sposób szybszego eliminowania obj ale powinno Ci to wystarczyć. 
P-34767
maciejo
Temat założony przez niniejszego użytkownika
» 2011-06-28 16:32:21
Jednak w końcu udało mi się wymyślić odpowiednią pętlę .
@UP nie skorzystałem z twojego sposobu , gdyż nie bardzo go rozumiem a to z powodu mojej niewiedzy na temat STL... Może kiedyś lepiej go poczuję ... :)
P-34840
« 1 »
  Strona 1 z 1