Mateusz Nejman Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 Siema! Mam obiekt o_kontroler i mam w nim kod: CREATE: GML global.projekt = get_string('Podaj nazwę projektu','') plik = get_open_filename("Plik NPG|*.png","Projekt") if plik != ''{ global.obrazek = sc_wczytajgr(plik) szer = sprite_get_width(global.obrazek) wys = sprite_get_height(global.obrazek) a1 = szer*32 a2 = wys*32 } else{ game_end() } DRAW: GML draw_sprite(global.obrazek,0,a1,0) for(i = 0; i<=szer; i+=1) { for(j = 0; j<=wys; j+=1) { var a; a = draw_getpixel(a1+i,j) switch(a) { case c_blue: instance_create(i*32,j*32,object1); break; case c_white: instance_create(i*32,j*32,object2); break; case c_green: instance_create(i*32,j*32,object3); break; default: break; } } } Mam takie pytanko: Jak wczytuję sobie obrazek to czemu nie tworzą się obiekty? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 Obrazek się dobrze wyświetla na ekranie? W tym miejscu w którym go chcesz? Jak np ten obrazek jest poza view to getpixel nic nie zdziała. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 23 Kwietnia 2014 Autor Udostępnij Opublikowano 23 Kwietnia 2014 Tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 [offtopic]Używałem tego sposobu i wolalem korzystać z surface aniżeli zaśmiecać ekran[/offtopic], natomiast skąd pewność, że wartość c_blue czy c_green to jest dokładnie ten sam odcień z tą samą wartością, którą narysowałeś? Paintowy niebieski, na ten przykład, to nie (0,0,255) tylko (63,72,204) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 Zrób sobie debug: GML draw_sprite(global.obrazek,0,a1,0) for(i = 0; i<=szer; i+=1) { for(j = 0; j<=wys; j+=1) { var a; a = draw_getpixel(a1+i,j) show_debug_message(string(a)); switch(a) { case c_blue: instance_create(i*32,j*32,object1); break; case c_white: instance_create(i*32,j*32,object2); break; case c_green: instance_create(i*32,j*32,object3); break; default: break; } } } c_blue przyjmuje wartość 16711680 white 16777215 green 32768 Zobacz jakie wartości ci pokaże debugger kolory są rozpisane w sekcji "Colour And Blending" w helpie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 23 Kwietnia 2014 Autor Udostępnij Opublikowano 23 Kwietnia 2014 12632256 dla wszystkiego Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 To jest ten kolor: http://www.computerhope.com/cgi-bin/htmlcolor.pl?c=C0C0C0 podejrzewam że standardowe szare tło? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 No to już wiesz w czym jest problem. Po prostu to inne kolory. A poza tym: GML draw_sprite(global.obrazek,0,a1,0) for(i = 0; i<=szer; i+=1) { for(j = 0; j<=wys; j+=1) { (...) a = draw_getpixel(a1+i,j) (...) } } Żebyś się palił w piekle za wsadzenie tego do draw. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 23 Kwietnia 2014 Autor Udostępnij Opublikowano 23 Kwietnia 2014 No to już wiesz w czym jest problem. Po prostu to inne kolory. A poza tym:Żebyś się palił w piekle za wsadzenie tego do draw. A znasz lepszy sposób na wczytanie obrazka i pobieranie pikseli 'piksel po pikselu'? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 tak surface i surface_getpixel Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 23 Kwietnia 2014 Udostępnij Opublikowano 23 Kwietnia 2014 A znasz lepszy sposób na wczytanie obrazka i pobieranie pikseli 'piksel po pikselu'? Zrobienie to raz i na surface. Poza tym pewnie rozbiłbym to na wiele step. Dzięki temu nie było by jednej wielkiej zwiechy, można by dodać akcję przerwania (esc), a nawet pobawić się z paskami postępu. Chcesz to zaraz skleję jakiś przykład. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 23 Kwietnia 2014 Autor Udostępnij Opublikowano 23 Kwietnia 2014 Jak chcesz to możesz skleić, bo ja po testach chyba nieogarniam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 25 Kwietnia 2014 Autor Udostępnij Opublikowano 25 Kwietnia 2014 Dobra, problem rozwiązany. Po prostu złe kolory były w obrazku i ten obrazek był poza roomem. Teraz kodzik wygląda tak: CREATE: GML global.projekt = get_string('Podaj nazwę projektu','') plik = get_open_filename("Plik PNG|*.png","") if plik != ''{ global.xblokow = ds_list_create() global.yblokow = ds_list_create() global.najx = ds_list_create() global.najy = ds_list_create() global.obrazek = sc_wczytajgr(plik) szer = sprite_get_width(global.obrazek) wys = sprite_get_height(global.obrazek) otwarty=0 } else{ game_end() } DRAW: GML draw_sprite(global.obrazek,0,0,0) if otwarty=0 { for(i = 0; i<=szer; i+=1) { for(j = 0; j<=wys; j+=1) { var a,x1,y1; a = draw_getpixel(i,j) x1=768+(i*32) y1=j*32 switch(a) { case rgb(255,0,0): instance_create(x1,y1,obj_id0) break; //I tak dalej } } } otwarty=1 } draw_sprite(spr_Bloki,0,mouse_x,mouse_y) funkcja rgb to po prostu skrócona wersja make_color_rgb Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Kwietnia 2014 Udostępnij Opublikowano 25 Kwietnia 2014 A jak pytałem czy obrazek jest widoczny to mówiłeś że jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 25 Kwietnia 2014 Udostępnij Opublikowano 25 Kwietnia 2014 Miałem to zrobić wcześniej, ale nie miałem czasu wczoraj. Są błędy w obliczaniu paska postępu i nie chce mi się się tracić więcej czasu na to. Masz baw się: https://gmclan.org/up3900_4_surface_getpixel.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 26 Kwietnia 2014 Autor Udostępnij Opublikowano 26 Kwietnia 2014 Miałem to zrobić wcześniej, ale nie miałem czasu wczoraj. Są błędy w obliczaniu paska postępu i nie chce mi się się tracić więcej czasu na to. Masz baw się: https://gmclan.org/up3900_4_surface_getpixel.html My się chyba nie zrozumieliśmy. Mój kod miał tworzyć obiekty przypisane do danego koloru Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 26 Kwietnia 2014 Udostępnij Opublikowano 26 Kwietnia 2014 Całkowicie się nie rozumiemy. Nigdzie nie napisałem że zrobię to za Ciebie. Chciałem Ci tylko pokazać jak powinna wyglądać pętla przy takiej operacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shockah Opublikowano 26 Kwietnia 2014 Udostępnij Opublikowano 26 Kwietnia 2014 Tak btw. Najlepszy sposób to zapisanie tego sprite'a do pliku i czytanie binarnie... No chyba że to już nie w GM8, w wyższych pewnie nie działa takie rozwiązanie. 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ę