kyniu774 Opublikowano 26 Listopada 2011 Udostępnij Opublikowano 26 Listopada 2011 Jaki system pozwoli mi na rysowanie/tworzenie wielu obiektów tak, aby nie zamulać komputera? Instance_dezactivate nie wchodzi w gre, bo muszę sprawdzać eventy obiektów poza viewem. Może jedne obiekt rysuje wszystkie inne, ale jak zrobić, aby te drawy wspólnie za sobą 'oddziaływały' (sprawdzanie kolizji, itp.) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kyniu774 Opublikowano 27 Listopada 2011 Autor Udostępnij Opublikowano 27 Listopada 2011 ref, zadam inaczej pytanie. Zrobiłem generator mapy w tabeli: Create: GML var i,j; i=0; j=0; for (i=0; i<=10; i+=1) { for (j=0; j<=10; j+=1) {map[i,j]=choose(1,2,3) } } Czyli np. na map[4,5]=2, czyli na pozycji 4,5 jest 2 (np. kamień). W jaki sposób mam namalować wszystkie te części tabeli naraz? Dałem w draw tak: GML var i,j; i=0; j=0; for (i=0; i<=10; i+=1) { for (j=0; j<=10; j+=1) { map[i,j]=draw_sprite(spr_klocki,map[i,j],i*32,j*32); } } ale gm maluje tylko przez chwilę... z wiadomych dla mnie przyczyn, a nie będe dawał 100 linijek kodu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 27 Listopada 2011 Udostępnij Opublikowano 27 Listopada 2011 for (i=0; i<=10; i+=1) { for (j=0; j<=10; j+=1) { if map[i,j]=1 draw_sprite(s_trawa,-1,i*32,j*32) else if map[i,j]=2 draw_sprite(s_kamien,-1,i*32,j*32) } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kyniu774 Opublikowano 27 Listopada 2011 Autor Udostępnij Opublikowano 27 Listopada 2011 Nie działa, ale znowu sobie sam poradziłem za pomocą surfacesów :sp_ike: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 27 Listopada 2011 Udostępnij Opublikowano 27 Listopada 2011 sorry, źle napisałem :P var i,j; i=0; j=0; for (i=0; i<=10; i+=1) { for (j=0; j<=10; j+=1) { draw_sprite(spr_klocki,map[i,j],i*32,j*32); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kyniu774 Opublikowano 27 Listopada 2011 Autor Udostępnij Opublikowano 27 Listopada 2011 Nie, aż taki początkujący to ja nie jestem :) Po zmianie na moje nazwy spritów i dodanie vara też nie działało... ale mniejsza oto, bo mam kolejny problem <_< Opadanie piasku, co powinno przyjśc mi z łatwością: GML alarm[0]=room_speed; var i,j; i=0; j=0; for (i=0; i<=40; i+=1) { for (j=0; j<=29; j+=1) { if global.map[i,j]=3 and global.map[i,j+1]=0 { global.map[i,j]=0 global.map[i,j+1]=3; } } } Jest to w alarmie. 'Przelatuje' wszystkie rzędy i kolumny sprawdzając, czy piasek (3) ma wolną pozycję (0=powietrze) x (i), y+1 (j+1), jak tak to zamień miejscami piasek z powietrzem. W grze nic się nie dzieje... To może być wina surfacesa?, odświeża się on normalnie w stepie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 27 Listopada 2011 Udostępnij Opublikowano 27 Listopada 2011 Źle robisz symulację piasku. Zamiast siatki piasku zrób jedynie tablicę n-elementową (n - ilość kolumn), w której będziesz przechowywał wysokość n-tej kolumny. Jeśli ziarenko w danej kolumnie będzie na wysokości tej kolumny, to zwiększasz jej wysokość i niszczysz ziarenko. Wystarczy teraz rysować to na surface'u. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kyniu774 Opublikowano 27 Listopada 2011 Autor Udostępnij Opublikowano 27 Listopada 2011 Nie za bardzo cię rozumiem... A dokładnie tego: Jeśli ziarenko w danej kolumnie będzie na wysokości tej kolumny, to zwiększasz jej wysokość i niszczysz ziarenko. Piasek (ziarenko) to nie obiekt, więc nie mogę sprawdzać dokładnie ziarenka. Kolumna to 'pionowo'. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 27 Listopada 2011 Udostępnij Opublikowano 27 Listopada 2011 Metoda i tak się sprawdzi! To proste: Zamiast dla 20 pul w tablicy sprawdzać czy jest pod nimi wolne miejsce i przestawiać je po kolei, wystarczy raz sprawdzić czy jest wolne pod spodem i pole w tablicy które jest najwyżej przenieść w to wolne miejsce. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kyniu774 Opublikowano 27 Listopada 2011 Autor Udostępnij Opublikowano 27 Listopada 2011 Albo to ja was nie rozumiem, albo to wy mnie nie rozumiecie :rolleyes: Jak mam sprawdzić od razu, czy pod spodem jest puste pole? Edit: Zresztą (jak dobrze zrozumiałem) nie mogę przenieść pola z najwyższego punktu tablicy, bo może tam być zamiast piasku np kamień, a to będzie nielogiczne jak się tak zamieni piasek w kamień. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 27 Listopada 2011 Udostępnij Opublikowano 27 Listopada 2011 Działasz na tablicach? Jeżeli odpowiedź była twierdząca to poszukaj w necie jakiegoś ciekawego sposobu przeszukiwania tablic. Albo wiem, podam ci rozwiązanie. Pętlą przelatujesz wszystkie pola w tablicy o tym samym x i gdy natrafisz na pole z powietrzem sprawdzasz kolejną pętlą czy jest i które jest nad powietrzem pole z piaskiem. Potem wystarczy zamienić ze sobą te pola. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kyniu774 Opublikowano 27 Listopada 2011 Autor Udostępnij Opublikowano 27 Listopada 2011 Sprawdzę, dokładnie tak zrobiłem tylko na odwrót, czyli szukałem piasku i sprawdzałem, czy pod nim jest puste pole i zamieniałem miejscami jak to puste pole było. Kod dałem 6 postów temu, e: nie działał i nie działa ten twój też. EE: Może coś jest nie tak w surface'sie: step: GML surface_set_target(global.mapa) { var i,j; i=0; j=0; for (i=0; i<=40; i+=1) { for (j=0; j<=30; j+=1) { global.map[i,j]=draw_sprite(spr_klocki,global.map[i,j],i*32,j*32); } } } surface_reset_target(); i działa, oczywiście jescze w drawie się maluje (ten surface). EEE: dobra zrobiłem, koniec pytań :D 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ę