m97 Opublikowano 30 Czerwca 2012 Opublikowano 30 Czerwca 2012 Witam, napisałem funkcję pewnej klasy, jednak wywołuje ona dziwny efekt, przerywa program. Oto funkcja: GML void World::draw_world(){ for(int a = view_y;a < view_y + 50;a++){ for(int b = view_x;b < view_x + 80;b++){ switch(pole_gry[a*b]){ case 0: break; case 1: dirt_sprite.x = b*16; // współrzędna x na ekranie dirt_sprite.y = a*16; // współrzędna y na ekranie dirt_sprite.w = dirt_bitmap->w; // szerokość wklejanego obiektu dirt_sprite.h = dirt_bitmap->h; // wysokość wklejanego obiektu SDL_BlitSurface(dirt_bitmap, NULL, screen, &dirt_sprite); break; } } } }
Filar Społeczności ANtY Opublikowano 30 Czerwca 2012 Filar Społeczności Opublikowano 30 Czerwca 2012 Witam, napisałem funkcję pewnej klasy, jednak wywołuje ona dziwny efekt, przerywa program. Oto funkcja: GML void World::draw_world(){ for(int a = view_y;a < view_y + 50;a++){ for(int b = view_x;b < view_x + 80;b++){ switch(pole_gry[a*b]){ case 0: break; case 1: dirt_sprite.x = b*16; // współrzędna x na ekranie dirt_sprite.y = a*16; // współrzędna y na ekranie dirt_sprite.w = dirt_bitmap->w; // szerokość wklejanego obiektu dirt_sprite.h = dirt_bitmap->h; // wysokość wklejanego obiektu SDL_BlitSurface(dirt_bitmap, NULL, screen, &dirt_sprite); break; } } } } Wtf, po co ci w ogóle case 0? Co to za switch dupny lol
CrackGM Opublikowano 1 Lipca 2012 Opublikowano 1 Lipca 2012 w takim przypadku w ogóle switch nie potrzebny o_o wrzuć to w ifa pozatym bez sensu masz to pole_gry[a*b] dla a = 2, b = 5 indeks tablicy = 10 a = 5, b = 2 indeks tablicy = 10 itd indeksy na innych pozycjach się powtarzają jeżeli dobrze to zrozumiałem o_o
Administratorzy gnysek Opublikowano 1 Lipca 2012 Administratorzy Opublikowano 1 Lipca 2012 Przerywa, czy moze program się wywala? Bo ja na to drugie bym obstawiał.
Floodnik Opublikowano 1 Lipca 2012 Opublikowano 1 Lipca 2012 A gdy przykładowo Twoje view_y/view_x znajduje się w rogu mapy... To czy przypadkiem w pewnym momencie nie próbujesz wykroczyć poza zakres pole_gry[]? Poza tym, tak jak CrackGM zauważył - bez sensu :P Albo użyj dwuwymiarowej tablicy, albo, jeśli chcesz koniecznie "spakować" mapę do jednowymiarowej tablicy, to: pole_gry[w*y+x], gdzie w - szerokość Twojej mapy, x, y - współrzędne, które aktualnie badasz.
karolo320 Opublikowano 1 Lipca 2012 Opublikowano 1 Lipca 2012 pole[a+b*szerokość mapy] e: dupa, do usunięcia
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się