dmx81 Temat założony przez niniejszego użytkownika |
#define » 2009-12-11 15:44:50 Witam
mam kilka linijek czesto do wpisywania i chcialbym nieco ukrocic zapis,a do zapisania mam:
obiekt1.x,obiekt1.y,obiekt1.s,obiekt1.w
obiekt2.x ........ itd dla kazdego nastepnego obiektu, sluzy m.in jako argumenty dla funkcji sprawdzajacych np kolizje, rowniez do funkcji wyswietlania obrazu (masked_blit) i musze dokladnie te same rzeczy wpisywac(kopiowac) czy mozna to zrobic za pomoca define? bo wczesniej nie uzywalem tej dyrektywy, a moje proby koncza sie bledami |
|
DejaVu |
» 2009-12-11 16:08:38 Nie używaj define'a tam gdzie nie trzeba. Napisz po prostu własną funkcję. Przykład: void masked_blit( CObiekt & ob ) { masked_blit(...); }
CObiekt obiekt[ 10 ]; for( int i = 0; i < 10; i++ ) masked_blit( obiekt[ i ] ); |
|
Elaine |
» 2009-12-11 16:20:40 Nie lepiej zrobić z tego metodę zamiast wolnostojącej funkcji? |
|
DejaVu |
» 2009-12-11 16:42:57 Prościej... ale ja nie wiem czy u niego obiekt to struktura czy obiekt ;) |
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2009-12-11 16:43:56 bool kolizja_boczna( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 ) { if( x1 + s1 == x2 && y1 + w1 > y2 && y1 < y2 + w2 || x1 == x2 + s2 && y1 + w1 > y2 && y1 < y2 + w2 ) return true; else return false; } bool kolizja_gorna( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 ) { if( x1 + s1 > x2 && y1 == y2 + w2 || x1 < x2 + s2 && y1 == y2 + w2 ) return true; else return false; }
bool kolizja_dolna( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 ) { if( x1 + s1 > x2 && y1 + w1 == y2 && x1 < x2 + s2 ) return true; else return false; }
w miejsca x1,x2 itd wpisywac musze ludek1.x ludek1.y, sciana.x, sciana.y a zamiast tego chcialem wpisac kolizja(ludek,sciana) gdzie ludek i sciana to wlasnie te parametry, rowniez wlasnie w masked_blit zauwazyelm ze uzywam tych samych zapisow - ludek.obrazek,bufor,0,0,ludek.x,ludek.y,ludek.s,ludek.w dlatego zalezalo mi na skroceniu tych nazw , ale widze nie polecacie? ps. u mnie najpierw byly obiekty, teraz przebudowalem, ze jest class class C_Obiekt { public: int x, y, s, w; BITMAP * obrazek; C_Obiekt( int, int, int, int ); }; C_Obiekt::C_Obiekt( int poz_x, int poz_y, int szerokosc, int wysokosc ) { x = poz_x; y = poz_y; s = szerokosc; w = wysokosc; }
|
|
DejaVu |
» 2009-12-11 16:51:33 To napisz funkcję przyjmującą 2 argumenty tj. ludek i ściana i po problemie. |
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2009-12-11 17:11:36 Czyli jako argumentow dla funkcji kolizja, zamiast argumentow x,y,w,s dla obiektu 1 i 2, moge uzyc kolizja( C_Obiekt obiekt1, C_Obiekt obiekt2 ) { if( obiekt1.x > obiekt2.x...) } ? juz probuje :) myslalem, ze kompilator zwroci blad ze nie wie co to x,y, jesli ich nie uzyje jako argumentow, ale zaraz sie przekonam :) dzieki za podpowiedz - jak widac, jeszcze brak mi obycia ;) |
|
« 1 » |