Pętla...
Ostatnio zmodyfikowano 2011-06-28 16:32
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). |
|
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 :) |
|
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.
|
|
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... |
|
kamillo121 |
» 2011-06-26 23:55:13 Moim sposobem to pi razy drzwi tak: struct obj { short x, y, w, h; int id; 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; } } } }
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ć. |
|
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ę ... :) |
|
« 1 » |