Variablen addieren Problem

  • Variablen addieren Problem

    Ich habe ein Problem.

    Ich wollte ich eine Variable addieren, doch das geht irgendwie nicht.

    Ich habe 2 objekte.

    In einem beim Mouse pressed event:

    GML-Quellcode

    1. with obj_controller zahleinz = get_string ("Geben sie bitte die erste Zahl ein.", "");
    2. with obj_controller zahlzwei = get_string("Geben sie bitte die zweite Zahl ein.", "");
    3. with obj_controller summe = zahleinz + zahlzwei;


    Beim zweiten wird die Variable Summe gedrawt.

    Das Problem: Stat die zahlen zu addieren, schreibt er sie nebeneinander auf. Wie addiert er sie nun zusammen?

    (PS: SUFU hat nicth wirkluich geholfen... Da war was mit return...)
  • Du musst zuerst den String in real umwandeln:

    GML-Quellcode

    1. with obj_controller zahleinz = get_string ("Geben sie bitte die erste Zahl ein.", "");
    2. with obj_controller zahlzwei = get_string("Geben sie bitte die zweite Zahl ein.", "");
    3. with obj_controller summe = string(real(zahleinz) + real(zahlzwei));
  • LEWA schrieb:

    Wieso muss man das in real umwandeln? :huh:

    Sorry für die Frage.^^
    Es gibt im GM zwei verschiedene Arten von Variablen, String und Real (bzw. Double, wer es genauer haben will). Strings sind Ansammlungen von Zeichen ("foo bar"), Reals dagegen beinhalten Zahlen (134237). Du kannst auch einen String mit Zahl (als Zeichen) drin haben ("007"). Wenn eine Funktion allerdings eine Zahl erfordert, musst du auch eine solche angeben und keinen String. real() macht aus einem String eine Zahl (aus "408" macht es 408).
    Du kannst auch nicht eine Zahl angeben, wenn ein String erfordert wird. Das gleiche gilt, wenn du Text und Zahlen verbinden willst:
    draw_text(16,16,"Score: "+score); wird einen Fehler erzeugen, da score eine Zahl ist.
    draw_text(16,16,"Score: "+string(score)); wird funktionieren.
    string() macht aus score nicht "score" sondern macht den Inhalt von score zu einem String. Beispiel: Du hast grade einen Score von 78, dann macht string() daraus "78". Im Endeffekt wird dir der Game Maker dann "Score: 78" auf den Bildschirm zeichnen.

    Was auch immer,
    get_string() gibt einen String zurück.
    get_integer() gibt eine Zahl zurück.
    Es ist also praktischer, wenn du eine Zahl brauchst, get_integer() zu benutzen.

    Umständlich aber hoffentlich verständlich erklärt :D

    EDIT: So sähe der Code verbessert aus:

    GML-Quellcode

    1. with (obj_controller) {
    2. zahleinz = get_integer("Geben sie bitte die erste Zahl ein.", 0);
    3. zahlzwei = get_string("Geben sie bitte die zweite Zahl ein.", 0);
    4. summe = zahleinz + zahlzwei;
    5. // btw: ist "einz" Absicht oder Versehen?
    6. }

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

  • Benutzer online 1

    1 Besucher