Codes erstellen

  • GM 7

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

  • Codes erstellen

    Hallo,
    ich würd gern wissen wie ichs mache, das ich einen Code Erstelle, der
    16 Ziffern lang ist.
    8 Großbuchstaben erhält und
    8 Zahlen.

    Ich hab kein Plan wie ich es Machen soll.
    Ehr soll aber keine Codes ausgeben wie:
    12345678abcdefgh
    sondern eher
    1a2c346fdfg...etc.
  • Du würfelst Zahlen mit random(), rundest sie mit floor() oder round()
    Dann brauchst Du str() um die Zufallswerte in sogenannte "Zeichen" umzuwandeln.
    Welche Zeichen, bzw. was genau für Zahlen Du brauchst, kannst Du googeln (Stichwort ASCII-Tabelle).
    Man kann auch ganz einfach zwei Zeichenketten zu einer zusammenfügen. Wenn man nur mal die Hilfe liest...
  • Quas wie die Serial-Number bei PC Spielen (Key-Generator)
    Ich denke mal das das alles mit einem Algorytmus funktioniert. Da die Codes ja nach einem Schema errechnet werden müssen. Aber wie genau wüste ich jetzt auch nicht. Man kan zwar versuchen zb
    4 Rechenarten zu erstellen.
    zb +,-,/,* und dann alle mit ein ander durch zufall combinieren. das müsten dann schon mal 256 varianten ergeben. jetzt noch mögliche zahen von 1-9 mach noch mal 9 mehr. Aller dings nur mit zahlen.
    mit Buchstaben wird das schon schwerer.

    Also eine code errechnung hab ich schon mal hin bekommen. erstaml nur für Acht Stellen. muss man ja nur kopieren wenn man mehr haben will
    CREAT-EVENT

    GML-Quellcode

    1. r1=choose(1,2)//Variante 1 = Zahl Variante 2 = Buchstabe
    2. r2=choose(1,2)
    3. r3=choose(1,2)
    4. r4=choose(1,2)
    5. r5=choose(1,2)
    6. r6=choose(1,2)
    7. r7=choose(1,2)
    8. r8=choose(1,2)
    9. c1=0
    10. c2=0
    11. c3=0
    12. c4=0
    13. c5=0
    14. c7=0
    15. c8=0
    16. c4=0
    17. //hier wird geprüft welche Variante errechnet werden soll 2 = Buchstabe Ascii-Zeichen 65-90 | oder 1= zahl 1-9
    18. if r1=2 then c1=chr(64+ceil(random(25))) else c1=ceil(random(8))
    19. if r2=2 then c2=chr(64+ceil(random(25))) else c2=ceil(random(8))
    20. if r3=2 then c3=chr(64+ceil(random(25))) else c3=ceil(random(8))
    21. if r4=2 then c4=chr(64+ceil(random(25))) else c4=ceil(random(8))
    22. if r5=2 then c5=chr(64+ceil(random(25))) else c5=ceil(random(8))
    23. if r6=2 then c6=chr(64+ceil(random(25))) else c6=ceil(random(8))
    24. if r7=2 then c7=chr(64+ceil(random(25))) else c7=ceil(random(8))
    25. if r8=2 then c8=chr(64+ceil(random(25))) else c8=ceil(random(8))
    26. // Ergebniss im Draw-Event ausgeben
    27. code=string(c1)+string(c2)+string(c3)+string(c4)+string(c5)+string(c6)+string(c7)+string(c8)
    Alles anzeigen



    Jetzt muss man das nur noch rückgängig machen. Klar könnt man jetzt fragen

    GML-Quellcode

    1. if c1=1...
    2. if c1='A'...

    Aber ich wüste nicht wie man das in einem Eingabefeld hinein bekommt.
    Da man ja Pro Eingabefeld nur eine Variable aus füllen kann.
    Das würde dann dementsprechend nur über Mehrere EIngabefelder hintereinadner gehen oder üder Menü in dem man wie bei einem Zahlenschloss alle varianten anwählen kann.
    Sprich...
    < =pfeiltaste Links
    > =pfeiltaste Rechts

    < code1 >< code1 >< code1 >< code1 > usw......

    So hab ich das mal gemacht. Man ,uste einen 3 stelliegen code wählen. jenach dem, ob er stimmte ging es weiter.
    So würde das auf jeden fall gehen.

    NACHBEARBEITUNG.
    Also hab es ein wenig versucht.
    Wenn du den code eingeben willst über ein eingabe feld

    GML-Quellcode

    1. code=get_string('',0)

    dann brauchts du da nach die funktion

    GML-Quellcode

    1. c1=string_char_at(code,1)

    Damit kannst du jede Stelle im Code "Variable:code" auslesen und eine andern Variable zu ordnen.
    Im faller meines Beispieles würde das heisen.

    "c1"= ist aus der variable "code" die erste stelle"

    das must du nur kopieren und c1,c2,c3 oder wie auch immer für jede code stelle copieren.
    jetzt must du nur noch abfagen welche stelle eine zahl ist nnd welche ein Buchstabe.
    Und alles zusammen ziehen. wenn dann wie bei deiner fragen statt 8 zahlen und 8 Buchstaben nur 4 und 12 im code sind. past er nicht.

    Hoffe das du mir folgen konntest. leider kann ich dir nich die ganze arbeit abnehmen. aber hab es zu über 50% schon hinbekommen.
    Meine Signatur hat kein Visum für das GM Forum erhalten.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von x-sascha ()

  • Gibt es keine string_add funktionen?
    Einfach auswürfeln, anhängen, anzeigen und in die Zwischenablage...
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Es wäre schlauer Arrays und eine for-Schleife zu nutzen.

    GML-Quellcode

    1. for (i=0; i<16; i+=1) //Die 16 Kann durch die Anzahl der auszugebenden Zeichen ausgetauscht werden
    2. {
    3. if (choose(1,2)=2) //Variante 1 = Zahl Variante 2 = Buchstabe
    4. {
    5. code+=chr(64+floor(random(26))); //Buchstaben Wenn du nur Buchstaben Bis H ausgeben willst, musst du die 26 mit einer 8 austauschne
    6. }
    7. else
    8. {
    9. code+=string(floor(random(10))); //Zahlen
    10. }
    11. }
    Alles anzeigen

    Das ist der optimierte Code von x-sascha ich hoffe das ist das was du meinst, es kann aber sein, dass er auch 10 Buchstaben und 6 Zahlen ausgibt wenn du willst das es 8 Buchstaben und 8 Zahlen ausgegeben werden, dann musst du das so machen:


    GML-Quellcode

    1. var zahlen, buchstaben,, max_zahlen max_buchstaben;
    2. max_buchstaben=8; //Anzahl der Buchstaben
    3. max_zahlen=8; //Anzahl der Zahlen
    4. for (i=0; i<(max_buchstaben+max_zahlen);; i+=1)
    5. {
    6. if (((zahlen==8) || (choose(1,2)=2)) && (buchstaben<max_buchstaben)) //Variante 1 = Zahl Variante 2 = Buchstabe
    7. {
    8. code+=chr(64+floor(random(26))); //Buchstaben Wenn du nur Buchstaben Bis H ausgeben willst, musst du die 26 mit einer 8 austauschne
    9. buchstaben+=1
    10. }
    11. else
    12. {
    13. code+=string(floor(random(10))); //Zahlen
    14. zahlen+=1
    15. }
    16. }
    Alles anzeigen



    Ich hoffe der Code ist richtig!
    Viele Grüße, maxda
  • Benutzer online 2

    2 Besucher