Threef Opublikowano 3 Czerwca 2012 Udostępnij Opublikowano 3 Czerwca 2012 Mam ogromnych rozmiarów ds_grid, który jest zapełniony tylko w niewielkim stopniu gdzieś na środku. Muszę pozbyć się zbędnej przestrzeni. Próbowałem zrobić to w ten sposób: GML for(xx=0;xx<w;xx+=1) { if(ds_grid_value_exists(ds_maze,xx,0,xx,h,-1)){x_min=xx;break} } for(xx=w;xx>0;xx-=1) { if(ds_grid_value_exists(ds_maze,xx,0,xx,h,-1)){x_max=xx;break} } for(yy=0;yy<h;yy+=1) { if(ds_grid_value_exists(ds_maze,0,yy,w,yy,-1)){y_min=yy;break} } for(yy=h;yy>0;yy-=1) { if(ds_grid_value_exists(ds_maze,0,yy,w,yy,-1)){y_max=yy;break} } w=x_max-x_min+3 h=y_max-y_min+3 ds_copy=ds_grid_create(w,h) ds_grid_clear(ds_copy,1) ds_grid_set_grid_region(ds_copy,ds_maze,x_min-1,y_min-1,x_max+1,y_max+1,0,0) ds_grid_resize(ds_maze,w,h) ds_grid_clear(ds_maze,1) ds_grid_set_grid_region(ds_maze,ds_copy,0,0,ds_grid_width(ds_copy),ds_grid_height(ds_copy),0,0) ds_grid_destroy(ds_copy) Wartość 1 oznacza puste, -1 zajęte. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 3 Czerwca 2012 Udostępnij Opublikowano 3 Czerwca 2012 Nawet nie patrzę w kod... Sprawdź wielkość zajętego grida, stwórz nowego o takich rozmiarach, skopiuj wartości funkcją, lub w pętli zależy jak ci wygodnie(moim zdaniem lepiej w pętli bo nie kopiujesz pustych wartości). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 3 Czerwca 2012 Autor Udostępnij Opublikowano 3 Czerwca 2012 Właśnie to staram się zrobić. Może źle podchodzę do sprawdzenia rozmiaru? Chociaż teraz zrobiłem sobie mini mapkę na której wyświetlam cały grid, i widzę że dobrze kopiuję Y, ale X zostaje taki jaki był. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę