String zu variable?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • String zu variable?

    n abend

    ich steh mal wieder vor einem mir nicht verständlichem problem.
    ich will durch eine forschleife mehrere variablen, die objekte sind, auf einmal prüfen. meine idee war diese:
    im create-event:

    GML-Quellcode

    1. schild1=instance_create(208,352,hilfetafel);
    2. varname=0;


    im draw-event:

    GML-Quellcode

    1. if (keyboard_check(vk_space))
    2. {
    3. for(i=1; i<5; i+=1)
    4. {
    5. name=string("schild"+string(i));
    6. varname=name;
    7. if(point_distance(varname.x,varname.y,object0.x,object0.y)<30)
    8. {
    9. varname.a=1;
    10. varname.b=0;
    11. }
    12. }
    13. }
    Alles anzeigen


    jetzt ist name bzw. varname zwar schild1, aber irgendwie fühlt sich die variable schild1 nicht angesprochen wenn ich zb varname.a=1; schreibe. Wie kann ich das lösen?


    mfg johannski
  • Etwas so aufzuarbeiten klappt beim GM Leider nicht. Der "Name" eines Objects lässt sich leider nicht stückeln.
    Eine Möglichkeit sowas zu machen wäre dies:

    GML-Quellcode

    1. execute_string('name='+string(schild)+string(i))

    execute_string() ist aber eine extrem langsame funktion und sollte niccht als wiederkehrende Funktion verwendet werden wie im step event oder sowas.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • du könntest zu beginn des spiels eine map mit allen objekten anlegen mit key als objekt name und value objekt index und dann immer drauf zugreifen

    GML-Quellcode

    1. global.objects = ds_map_create(...)
    2. var obj = 0;
    3. while (object_exists(obj))
    4. {
    5. ds_map_add(global.objects,object_get_name(obj),obj);
    6. obj += 1;
    7. }
    "das war meine letzte flamewar PM an dich ."
  • ah ok, gut zu wissen, dass das nicht geht. Blubberblub, deine variante klingt interessant aber ich glaube dass sie noch ein bisschen zu hoch für mich is und ich bin mir auch nicht sicher ob ich damit das erreiche, was ich will. Ich werde es jetzt einfach so lösen, dass ein objekt mit dem Spieler mitwandert und ich so herausfinden kann bei welchem der schilder der spieler gerade ist. Die variante ist vl. sogar effektiver als meine zuerst überlegte schleife.

    Danke für eure hilfe!

    mfg johannski
  • @Johannski:
    Du kannst es entweder mit Arrays machen, oder auch mit diesen funktionen (Zitat aus der Hilfe):
    variable_local_get(name) Liefert den Wert der lokalen Variablen.
    variable_local_array_get(name,ind) Gibt den Wert des Index ind des globalen Arrays name an (ein String).
    variable_local_array2_get(name,ind1,ind2) Gibt den Wert der Indexa ind1,ind2 des globalen 2-dimensionalen Arrays mit dem Namen name an (ein string).
    variable_global_set(name,value) Setzt den Wert(value) für die globale Variable.
    variable_global_array_set(name,ind,value) Setzt den Wert value des Index ind des globalen Arrays name (ein String) fest.
    variable_global_array2_set(name,ind1,ind2,value) Setzt den Wert value der Indexa ind1,ind2 des globalen 2-dimensionalen Arrays mit dem Namen name (ein string) fest.
    variable_local_set(name,value) dasselbe - nur für die lokale Variable.
    variable_local_array_set(name,ind,value) Setzt den Wert des Index ind des lokalen Arrays name (ein String) fest.
    variable_local_array2_set(name,ind1,ind2,value) Setzt den Wert der Index ind1,ind2 des lokalen 2-dimensionalen Arrays mit dem Namen name (ein string) fest.