Skocz do zawartości

Rekomendowane odpowiedzi

Witam

mam  problem

potrzebuje losowo stworzyć w budynku 10 sztuk zlota

ale jezeli zloto mialo by byc stworzone w miejscu gdzie jest juz jakis obiekt,ma ono byc stworzone w innym miejscu

 

oto kod:

 

repeat(zloto){ // ilosc zlota np.10
losx=irandom_range(1,1000)
losy=irandom_range(1,800)
if place_free(2030+losx,70+losy) instance_create(2030+losx,70+losy,obj_Budpln)/
}

 

problem w tym ze kod nie stworzy 10 sztuk zlota,jezeli napotka na jakis obiekt

przez co zlota moze byc mniej


 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Mniej złota tworzy Ci się dlatego, że zastosowałeś if, czyli w skrócie daje wynik jeśli wolne miejsce = twórz, jeśli nie = nie twórz i tak, masz zapytanie raz na jeden repeat.
Użyj zamiast if instrukcje do... until

 

do
{
        
}
until(place_free())

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

ale ,że tak to ma wyglądać ; ?

repeat(zloto) // ilosc zlota np.10
do
{
   losx=irandom_range(1,1000)
losy=irandom_range(1,800)   
instance_create(2030+losx,70+losy,obj_Budpln)/  
}
until(place_free(2030+losx,70+losy))

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

tak, tylko instance_create wpisz na koniec całego kodu, za instrukcją until, bo będzie tworzyć tym razem za dużo obj_Budpln z racji tego, że nawet jeśli napotka solid to i tak go tam utworzy 

Za pomocą instrukcji until masz ustalić miejsce tworzenia przedmiotu, który nie będzie kolidował z solid 

Musisz jeszcze cały ten kod zrobić w klamrach dla repeat
 

repeat(10)
{
	//cały kod
}

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

stwórz wszystkie w jednym miejscu i daj move_outside_solid z kierunkiem dla każdego równym 360/zlota/*i ? Chociaż wtedy również dobrze można użyć lengthdirow losowej odległości w jakimś zakresie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×