Skocz do zawartości

Odwołanie do nazwy zmiennej i manipulowanie nią.


Rekomendowane odpowiedzi

Mam globalne

 

GML
global.planet_earth_osrodki_wydobywcze = 0;

GML
global.planet_moon_osrodki_wydobywcze = 0;
// planeta -_-

GML
global.planet_mercury_osrodki_wydobywcze = 0;

 

 

I Jestem sobie w obj_menu które odpowiada za budowanie budynków.

Zależnie która planeta jest aktualnie wybrana do globalnej global.current_planet

 

GML
global.current_planet = "global.planet_earth_"

 

A w drawie obj_menu mam :

 

 

GML
/* CENTRUM ############

########## WYDOBYWCZE */

 

if(mouse_x>=view_xview[0]+724 && mouse_x<=view_xview[0]+756 && mouse_y>=view_yview[0]+324 && mouse_y<=view_yview[0]+356)

{

 

 

if (mouse_check_button_pressed(mb_left))

{

// mamy kase

if(global.statistics_ore>=planet_cena_osrodki_wydobywcze)

{

global.statistics_ore-=planet_cena_osrodki_wydobywcze;

 

 

//TUTAJ JEST PROBLEM

//Mam tak:

if(global.current_planet == "global.planet_earth_"){global.planet_earth_osrodki_wydobywcze+=1}

 

//Ale to bez szensu aby robić ify dla wszytskich planet tutaj..

// Czy nie dałoby rady tego zrobić np tak =

zmienna = string(global.current_planet)+ "osrodki_wydobywcze" // czyli global.planet_earth_osrodki_wydobywcze

zmienna+=1; // tak aby odwołało mi do global.planet_earth_osrodki_wydobywcze i ją powiększyło

}

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Dajmy na to zmienną a i b. Jak zwiększy się zmienna a, to musi zwiększyć się zmienna b, ale nie mają mieć takiej samej wartości. Trzeba więc sprawdzać, czy zmienna a się zmieniła. Potrzebna jest więc nowa zmienna, dajmy na to ab. I teraz czas na kod:

GML (Begin Step)
ab=a

GML (End Step)
if a>ab

b+=1

Oczywiście zmienną ab musisz zadeklarować.

Odnośnik do komentarza
Udostępnij na innych stronach

Spróbuj z

GML
execute_string(global.planet+"_pierdoły_na_planecie +="+string(wartość))

 

 

COMPILATION ERROR in string to be executed
Error in code at line 1:
   global.planet_earth_osrodki_wydobywcze
                                       ^
at position 38: Assignment operator expected.

 

a zrobiłem tak-

GML
execute_string(planeta_nazwa+"osrodki_wydobywcze")
i to mi daje dostęp do zmiennej global.planet_earth_osrodki_wydobywcze ?

więc zmiena+=1 powinna powiekszyć global.planet_earth_osrodki_wydobywcze ?

 

Udało się -

GML
execute_string(string(planeta_nazwa)+'osrodki_wydobywcze+=1')
Odnośnik do komentarza
Udostępnij na innych stronach

nie nazwę.. przeanalizujmy.

mamy globalne np

global.ziemia_koszary = 0;

global.mercury_koszary = 0;

 

mam obiekt menu w którym jest zmienna

planeta_nazwa. Zmienna ta przyjmuje wartość zależnie od tego jaką mamy zanzaczoną planetę. Np Mercury-> jakis tam obiekt kontroler wysyła informację do obiektu menu, do zmiennej planeta_nazwa = "global.mercury"

 

a w menu mam również zakodowane budowanie budynków- (zmniejszyłem kod dla przejrzystości)

 

GML
// koszary

if (mouse_check_button_pressed(mb_left))

{

execute_string(string(planeta_nazwa)+'_koszary+=1') //

}

Jakoś tak się za to wziąłem. Jeżeli zaznaczona bedzie np ziemia wtedy

GML
execute_string(string(planeta_nazwa)+'_koszary+=1') //
da nam
GML
global.ziemia_koszary=+1;

TAkie dynamiczne cuś. Nie chciałem pisać tworzenia budynków w każdej planecie.. wolę jak jeden obiekt bedzie za to odpowiedzialny.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

A moim zdaniem szybciej i czytelniej jest tak:

 

GML
//w okienku z constans:

merkury = 1

wenus = 2

ziemia = 3

mars = 4

...

 

//w kodzie

global.jakas_wlasciwosc[merkury] = jakas_wartosc;

 

Używam tego sposobu od jakiegoś czasu i całkiem dobrze mi się z tym pracuje. Druga zaleta - podpowiada w kodzie ;)

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