Skocz do zawartości

Napis[i].zmienna = ...;


Rekomendowane odpowiedzi

Ok, moje pytanie jest następujące:

 

załóżmy, że mamy 3 obiekty o nazwach:

 

GML
obiekt1, obiekt2, obiekt3

 

każdy z tych obiektow ma zmienna, powiedzmy "hp".

 

GML
obiekt1.hp = 1;

obiekt2.hp = 1;

obiekt3.hp = 1;

 

i powiedzmy, że gdy naduszę spację, to do każdego z tych obiektów hp zwiększy się o 1;

 

GML
obiekt1.hp += 1;

obiekt2.hp += 1;

obiekt3.hp += 1;

 

I teraz problem, jeśli obiekty byłyby 3, to nie byłoby problemu, jednak podobnych obiektów będzie około 150, a więc jak zapisać kod, który wyglądałby jakoś tak i by działał:

 

GML
for(i = 1; i <= 150; i++)

{

obiekt.hp +=1;

}

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

1. mozesz zrobić parenta i potem tylko

GML
with(objParent){hp+=1}

2. mozesz przy tworzeniu danych obiektów zapisywać je do tablicy

GML
obj[global.liczba_obiektow]=instance_create(x,y,obiekcik)

global.liczba_obiektow+=1

//no i potem tak:

with(obj){hp+=1}

 

 

no to chyba wszystkie sposoby jakie mi przyszły na myśl, jak coś nie jasne to pisz, wytłumacze

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra, to by mogło dobrze zadziałać, jak skończę się z logarytmów uczyć to zaraz przetestuję,

dopytam jeszcze tylko, jakbym miał coś w ten sposób:

 

GML
with(objParent)

{

 

if (objParent.punkty > 10)

{

objParent.lvl += 1;

}

 

}

 

Jakby to zapisać w ten sposób, to wszystkie obiekty w objParent, by podniosło o jeden poziom do góry, masz jakiś pomysł, żeby instrukcja odnosiła się tylko do obiektu, który ma więcej niż 10 punktów ?

Odnośnik do komentarza
Udostępnij na innych stronach

Ale przecież się odnosi. Linijka

GML
if (objParent.punkty > 10)
sprawia, że kod zostanie wykonany tylko jeśli dana instancja obiektu ma 10 punktów, czyli w efekcie instancje które mają mniej niż 10 punktów pominom ten kod po prostu ;)
Odnośnik do komentarza
Udostępnij na innych stronach

GML
for(Kontroler.f1 = 1; Kontroler.f1 <= 150; Kontroler.f1 += 1)

{

with(objParent)

{

if (objParent.Numer == Kontroler.Numer && Kontroler.Numer == Kontroler.f1)

{

Kontroler.Nazwa = objParent.Nazwa;

}

 

Czy to powinno zadziałać, czy wciąż źle rozumiem ?

 

Zadziałało :D

 

GML
for(Kontroler.f1 = 1; Kontroler.f1 <= 150; Kontroler.f1 += 1)

{

with(objParent)

{

if (Numer == Kontroler.Numer && Kontroler.Numer == Kontroler.f1)

{

Kontroler.Nazwa = Nazwa;

}

 

Zostawiam odpowiedź dla potomnych, którzy będą się borykać z podobnym problemem :D

Odnośnik do komentarza
Udostępnij na innych stronach

GMLfor(Kontroler.f1 = 1; Kontroler.f1 <= 150; Kontroler.f1 += 1)

{

with(objParent)

{

if (objParent.Numer == Kontroler.Numer && Kontroler.Numer == Kontroler.f1)

{

Kontroler.Nazwa = objParent.Nazwa;

}

 

Czy to powinno zadziałać, czy wciąż źle rozumiem ?

 

Ale po co ten for w ogóle?

Samo dodawanie leveli w porządki, ale nie rozumiem po co ma być ten for. Bez fora przecież będzie działać, chyba że ten for robi co innego w każdym bądź razie 150 razy wykonywany for razy ilość instancji dzieci objParent będzie prawdopodobnie generować spore obciążenie, więc zastanów się dwa razy ;)

 

Mi się wydaje, że po prostu coś źle zrozumiałeś. Jeżeli chcesz dodawać lvl zawsze gdy któraś z instancji ma więcej niż 10 punktów to używasz tylko tego co podał Ci Threef, tworzysz pusty obiekt objParent i tym obiektom ustawiasz go jako obiekt rodzica i tyle - gotowe :)

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