Variablen eingeben

  • GM 6

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

  • Variablen eingeben

    Ich hab das problem das ich gerade einen Randommap Editor programieren will und möchte ihn so gestalten das man die verschiedenen Wahrscheinlichkeiten von angrenzenden LAndschaftstypen am anfang selbst eingeben kann. (z.B. Land zu Wasser, Wasser zu wüste etc.)
    Momentan gebe ich die ganzen Variablen mit "get_integer" ein allerdings wäre mir ein Dialog in dem man alle gleichzeitig sieht und verändern kann wesentlich lieber als immer nur ein einzelner Kasten. Leider habe ich keine ahnung wie ich so etwas Programieren soll.

    hoffentlich könnt ihr mir weiterhelfen
    mfg O-Zone
  • du kannst ja ein Objekt machen, dass wenn es angeklickt wird alle wichtigen eingaben wie zahlen oder buchstaben etc. einem string hinzufügt und diesen auch gleich anzeigt.

    Bei reinen Zahlenwerten kannst du einfach die variable*10+eingabewert nehmen
  • vll. hab ich dich ja falsch verstanden, aber ich habe nicht das Problem 10 Variablen gleichzeitig anzeigen zu lassen, sondern 10 wariablen mit verschiedenen Werten gleichzeitig einzugeben. Ich hatte an sowas wie ne Box gedacht die in etwa so aussehen sollte:

    ---------------------------
    var1 = "zahl eingeben"
    var2 = "zahl eingeben"
    var3 = "zahl eingeben"
    var4 = "zahl eingeben"
    var5 = "zahl eingeben"
    var6 = "zahl eingeben"
    |OK|
    ---------------------------
    wenn man alle Zahlen eingegeben hat drückt man auf den OK knopf und die Zahlen werden den Variablen zugeordnet...
  • Create Event:

    GML-Quellcode

    1. keyboard_string = '' //Eingabefeld
    2. blink=0 //Cursorblinken
    3. var1=0
    4. var2=0
    5. etc.
    6. status=0 //Für Durchschalten zu nächster Variable


    ENTER drücken:

    GML-Quellcode

    1. {var1=var1 var2=var2 var3=var3 etc.} //Zur Sicherheit Variablen abspeichern, ist aber - glaub ich - unnötig
    2. status+=1 //Nächste Variable deklarieren


    Draw Event:

    GML-Quellcode

    1. if blink<30 blink+=1 else blink=0 //Cursorblinkgeschwindigkeit
    2. if status=0 //Erste Variable deklarieren
    3. {
    4. if blink<15 draw_text(x,y,'Geben Sie den Wert von Variable 1 an:#'+keyboard_string +'|') else draw_text(x,y,'Geben Sie den Wert von Variable 1 an:#'+keyboard_string)
    5. var1=keyboard_string
    6. }
    7. if status=1 //Zweite Variable
    8. {
    9. if blink<15 draw_text(x,y,'Geben Sie den Wert von Variable 2 an:#'+keyboard_string +'|') else draw_text(x,y,'Geben Sie den Wert von Variable 2 an:#'+keyboard_string)
    10. var2=keyboard_string
    11. }
    Alles anzeigen



    Und so weiter...
    Das müsste im Prinzip funktionieren.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Irrenhaus3 ()

  • Danke für deine Hilfe, das hat mich schon um einiges weitergebracht :D
    meine Lösung sieht jetzt so aus das man alle Variablen sehen kann und immer eine auswählen und mit Enter verändern kann:
    create event

    GML-Quellcode

    1. keyboard_string = ''; //Eingabefeld
    2. blink=0; //Cursorblinken
    3. var1=0;
    4. var2=0;
    5. status=1; //anzahl aller Variablen -1


    Enter

    GML-Quellcode

    1. switch(nummer)
    2. {
    3. case 1: var1=real(keyboard_string);
    4. break;
    5. case 2: var2=real(keyboard_string);
    6. break;
    7. }


    UP

    GML-Quellcode

    1. if (nummer >= 0)
    2. nummer-= 1;

    sleep 200 miliseconds //sonst wirds schwer kurz genug zu drücken...

    DOWN

    GML-Quellcode

    1. if (nummer <= status)
    2. nummer+=1;

    sleep 200 miliseconds

    Draw

    GML-Quellcode

    1. if (blink<30)
    2. blink+=1
    3. else blink=0; //Cursorblinkgeschwindigkeit
    4. {
    5. if (nummer == 1)
    6. {
    7. if (blink<15)
    8. draw_text(20,40,'Geben Sie den Wert von Variable 1 an:#'+keyboard_string +'|')
    9. else draw_text(20,40,'Geben Sie den Wert von Variable 1 an:#'+keyboard_string)
    10. }
    11. else
    12. draw_text(20,40,'Variable 1 =' + string(var1));
    13. }
    14. {
    15. if (nummer == 2)
    16. {
    17. if (blink<15)
    18. draw_text(20,80,'Geben Sie den Wert von Variable 2 an:#'+keyboard_string +'|')
    19. else draw_text(20,80,'Geben Sie den Wert von Variable 2 an:#'+keyboard_string)
    20. }
    21. else
    22. draw_text(20,80,'Variable 2 =' + string(var2));
    23. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von O-Zone ()

  • So, nach einiger Plackerei hab ich endlich die kleinen Eingabefelder fertig die ich oben gemeint hatte. Musste etwas mit den GM Datentypen herumkämpfen aber im Endeffekt klappt es:

    Für den Untergrund habe ich ein 100x24 Pixel großes weißes Sprite genommen.

    Create-Event

    GML-Quellcode

    1. eingabe = 0;
    2. aktiv = 0;


    Left Button-Event:

    GML-Quellcode

    1. with(objZahlEingabefeld) {
    2. aktiv = 0;
    3. }
    4. aktiv = 1;


    Draw-Event:

    GML-Quellcode

    1. draw_sprite(sprite_index,0,x,y);
    2. // Optional zur Anzeige des aktuell Aktiven Feldes
    3. draw_set_color(c_gray);
    4. if(aktiv == 1) {
    5. draw_rectangle(x+2,y+2,x+98,y+22,false);
    6. }
    7. draw_set_color(c_black);
    8. // Optional ende
    9. draw_text(x+1,y+2,eingabe);
    Alles anzeigen


    press <any key> -Event:

    GML-Quellcode

    1. if(aktiv==1 && (keyboard_lastchar == '1' || keyboard_lastchar=='2' || keyboard_lastchar=='3'
    2. || keyboard_lastchar=='4' || keyboard_lastchar=='5' || keyboard_lastchar=='6'
    3. || keyboard_lastchar=='7' || keyboard_lastchar=='8' || keyboard_lastchar=='9'
    4. || keyboard_lastchar=='0') && eingabe < 999999999999999) {
    5. eingabe = real(string(eingabe)+keyboard_lastchar);
    6. }


    Ich habe das ganze auch noch einmal angehängt.
    Wie du an die Variable kommst musst du selbst entscheiden, da es mehrere wege gibt. Per objektname.eingabe wäre das aber am idealsten.
    Die Eingabefelder kannst du ja noch zusätzlich beschriften was ganz sinnvoll wäre :)
    Dateien
    • eingabefeld.zip

      (2,03 kB, 231 mal heruntergeladen, zuletzt: )
  • ahh vielen dank, das sieht ja richtig spitze aus...
    vielleicht sollte ich meine jetzige Lösung doch nochmal umschreiben^^ das aber mitlerweile schon 16 Variablen gibt lass ichs erstmal so und arbeite mich mal anders in diese Ausführung ein...

    ...spätestens wenn ich wieder so ne Box brauch :thumbsup:
  • Ahja *Bekennender Blick* ich nehme an, du hast für deine jetztige Fassung das Textbasiertes-Menü-Tutorial verwendet?
    Falls ja: Richtig so.
    Falls nicht: Klickediklack, besser spät als nie. Dieses Tut ist gut gemacht und hilft echt weiter!
    (Hab's auch gleich selber für eins meiner Spiele benutzt :D )

    *Mit anschwellender Brust*: Freut mich, dass ich dir eine Hilfe sein kann. *Arschkriech*