Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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


 

Opublikowano

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())

 

Opublikowano

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))
Opublikowano

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
}

 

  • Administratorzy
Opublikowano

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.

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