Skocz do zawartości

Jeden obiekt


kyniu774

Rekomendowane odpowiedzi

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

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

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

Ź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

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

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...