Zahl(en) hinter String auswerten

  • Zahl(en) hinter String auswerten

    Hallo.
    Ich programmiere ein Spiel und habe eine diesbezügluiche Frage. Wie kann ich eine Zahl auswerten, die
    hinter einem String steht, aber zum String gehört. Also bei "StepX 30" die 30. Ich habe 3 Beispiele mit der
    Bitte, dass ihr mir sagt, wie soetwas mögllich ist:

    GML-Quellcode

    1. if line[i] = "StepX /*Zahl*/ " { /*lese die Zahl, die jemand dahinter geschrieben hat und werte sie als Variable*/}

    GML-Quellcode

    1. if line[i] = "MoveTo /*Zahl1 u. 2*/ " { /*lese die Zahlen, die jemand dahinter geschrieben hat und werte sie als Variablen*/}

    GML-Quellcode

    1. if line[i] = "Check /*Obj u. Zahl*/ " { /*lese die Zahl und den String (Obj), die jemand dahinter geschrieben hat und werte sie als Variablen*/}


    ,-Megamag

    Magical dream time!
  • du könntest ja den vorderen teil des strings wegschneiden (string_delete()) und dann den hinteren mit real() in eine Zahl umwandeln. mit string_pos() kannst du die position der zahlen herausfinden, die du für string_delete() brauchst.

    © 2008 by Teamgrill Productions
  • Meine Idee wäre das:

    Ich schätze mal, dass es egal ist, welche Zahl hinter dem jeweiligen String steht...

    Also:

    GML-Quellcode

    1. if not string_count("StepX",line[i])=0
    2. {
    3. /*wenn StepX vorkommt*/
    4. zahlx=real(string_copy(line[i],6,string_length(line[i])-5));
    5. /*die 6 bei string_copy ist, weil StepX 5 Zeichen lang ist + Leerzeichen*/
    6. /*die string_length-5 ist, weil man den Anfang abziehen muss für die Länge der Zahl (macht man da 6 fehlt aber das letzte Zeichen*/
    7. show_message(string(zahl));
    8. }
  • Mach die Variablen so:

    GML-Quellcode

    1. variable="irgendwas |2313|";


    Dann um die Zahl zu bekommen:

    GML-Quellcode

    1. var pos1,pos2,newvar;
    2. pos1=string_pos("|",variable);
    3. newvar=string_replace(variable,"|","_");
    4. pos2=string_pos("|",newvar);
    5. zahl=real(string_copy(variable,pos1+1,pos2-pos1-1))


    Das funzt egal wie lang die Zahl ist. Es dürfen aber nur zwei "|" vorkommen und diese müssen direkt die zahl eingrenzen.

    © 2008 by Teamgrill Productions
  • wolffs Lösung ist btw. die beste. Nochmal korrekter:

    GML-Quellcode

    1. string = "StepX 30";
    2. // lang (zur Erklärung):
    3. string = string_replace(string,"StepX ",""); // Ersetzt "StepX " mit "" (=nichts)
    4. zahl = real(string); // macht den String zu einer Real
    5. // kurz (zum Verwenden):
    6. zahl = real(string_replace(string,"StepX ",""));
  • Wenn der Text vor der Zahl keine weiteren Zahlen enthält, kannst
    du auch einfach string_digits(string) nehmen. Die gibt sämtliche
    Zahlen in dem String aus (Kommas glaub ich auch).
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Ok, tut mir leid - du willst ja auch mehrere Zahlen verwenden können wie ich gerade nachgelesen hab.
    Ich hab mal ein Script geschrieben, das nennt sich Codiercode (der Name passt nicht so ganz - zu finden hier), damit kann man verschiedene Werte in einen String packen und diesen wieder auseinander nehmen, sowas brauchst du. Das ganze funktioniert dann so:

    GML-Quellcode

    1. befehl = strings_get(line[i]," ",0);
    2. // Gibt den ersten Teil zurück, Trennzeichen = Leerzeichen
    3. switch (befehl) {
    4. case "StepX": // Wenn befehl = StepX
    5. wert = strings_get(line[i]," ",1);
    6. break;
    7. case "MoveTo":
    8. x = real(strings_get(line[i]," ",1));
    9. y = real(strings_get(line[i]," ",2));
    10. break;
    11. case "StopMessage": // Nur als Beispiel
    12. string = strings_get(line[i]," ",1);
    13. show_message("Pause!#"+string);
    14. break;
    15. }
    Alles anzeigen


    EDIT: Oh tut mir leid - da stimmt was in der Datei nicht, ich werde gleich was neues hochladen ;)
    EDIT2: So, die Scripte hab ich auch nochmal umbenannt - das musst du jetzt mit "Import Scripts" in dein Game einfügen: strings.zip

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von copyboy ()

  • Ich verstehe erlichgesagt nicht, wie ich das bei mir einbauen kann.
    Ich muss sagen, ich verstehe das (jeden falls das von copyboy)
    insgesamt noch nicht. Ich gebe euch nochmal detailierte Daten:

    line[0] = gibt an, welche Zeile gerade gelesen wird.
    py = Counter, der Zeilen im Array line speichert.
    keyboard_string wird über eine komplexe Textbox in line[py] gespeichert.

    Und der Code zum auslesen ist folgender (nur ein Beispiel):

    GML-Quellcode

    1. /////////////////////////////////////
    2. if ok=true
    3. {
    4. //stepx
    5. if line[py] = "stepx 10"
    6. {
    7. ball.x+=1
    8. py+=1
    9. }
    10. if line[py] = "stepx 100"
    11. {
    12. ball.x+=10
    13. py+=1
    14. }
    15. }
    Alles anzeigen

    Magical dream time!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Megamag ()

  • Also, du importierst diese Scripte (findest du oben) in dein Spiel, das einzige was du brauchst ist eig. strings_get(), die restlichen kannst du auch löschen. Dann übernehme ich mal dein Beispielcode und vereinfache meins mal, dann sollte es etwa so aussehen:

    GML-Quellcode

    1. if ok=true
    2. {
    3. befehl = strings_get(line[px]," ",0);
    4. if (befehl = "StepX") {
    5. wert = real(strings_get(line[px]," ",1));
    6. ball.x += wert/10;
    7. }
    8. if (befehl = "MoveTo") {
    9. xwert = real(strings_get(line[px]," ",1));
    10. ywert = real(strings_get(line[px]," ",2));
    11. ball.x = xwert;
    12. ball.y = ywert;
    13. }
    14. px += 1;
    15. }
    Alles anzeigen
  • Benutzer online 1

    1 Besucher