Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-08-2005, 16:19   #1 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Codes generieren / doppelte abfragen

Hi ho FF'ler!

Ich hab ein kleines Script geschrieben, dass mir 6 Stellige Codes aus Zahlen und Buchstaben auswirft. funzt wie folgt:

ActionScript:
  1. alphabet  = new Array ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "t", "s", "t", "u", "v", "w", "x", "y", "z");
  2. zahlen_string = new Array ("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
  3.  
  4. for (x=1; x<10; x++) {
  5.     for (i=1; i<7; i++) {
  6.         zahl_buchstabe = random(2)+1;
  7.         if (zahl_buchstabe == 1) {
  8.             this["stelle_"+[i]] = zahlen_string[random(10)];
  9.         } else {
  10.             this["stelle_"+[i]] = alphabet[random(25)+1];
  11.         }
  12.     }
  13.     this["code_"+x] = stelle_1+stelle_2+stelle_3+stelle_4+stelle_5+stelle_6;
  14. }
  15. for (y=1; y<10; y++) {
  16.     trace(this["code_"+y]);
  17. }
Wirft jetzt erstmal 10 Codes aus.

Ich hätte aber noch gerne, das jedesmal, wenn ein Code generiert wird, der frische Code mit allen bissherigen verglichen wird. Falls dieser Code bereits einmal erstellt wurde, soll stattdessen ein neuer generiert werden. Also kurz: kein Code darf doppelt erscheinen.

Leider gehts mir an dieser Stelle grade über meinen Kopf hinaus ... und ich bitte um Hilfe *demütigaufbodenkrich*

Nachtrag: öhm ... falls jemand irgendwie ansatzweise Lust hätte sich über das Thema gedanken zu machen, der könnte mir vielleicht n Tip geben, wie man die generierten Codes am einfachsten in eine Excel-Tabelle bekommt, in der jeder Code eine Zelle aufweist, zwecks leichterer Weiterverarbeitung. Meine Kentnisse in Excel sind mager und bzgl. Flash -> Excel quasi nicht vorhanden Also nur, wenn jemand die Zeit dafür über hätte, wär nett

Gruss,
Dwarf

Geändert von djdwarf (11-08-2005 um 16:38 Uhr)
djdwarf ist offline   Mit Zitat antworten
Alt 11-08-2005, 16:36   #2 (permalink)
AAI
 
Benutzerbild von AAI
 
Registriert seit: May 2004
Beiträge: 327
speichere den generierten Code nicht
in einer Variable, sondern in einem Array.

code nr.i ---> code[i-1]

Nachdem ein Code generiert wurde
lässt du ihn durch eine 'Überprüfungs-
schleife laufen in der i-schleife:

j=0
while (j<code.length-1) {if code[j]==code[i] {"doppelt"}}
j++
AAI ist offline   Mit Zitat antworten
Alt 11-08-2005, 17:16   #3 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
...die Wahrscheinlichkeit, dass da ein Code 2mal vorkommt, ist aber verschwindet gering!
ActionScript:
  1. var arr = [];
  2. for (x=1; x<10; x++) {
  3.     this["code_"+x] = "";
  4.     for (i=1; i<7; i++) {
  5.         var zahl_buchstabe = random(2)+1;
  6.         if (zahl_buchstabe == 1) {
  7.             this["code_"+x] += random(10);
  8.         } else {
  9.             this["code_"+x] += chr(97+random(25));
  10.         }
  11.     }
  12.     arr.push(this["code_"+x]);
  13.     for (var y = 0; y<arr.length-1; y++) {
  14.         if (arr[y] == this["code_"+x]) {
  15.             arr.splice(y);
  16.             x -= 2;
  17.             break;
  18.         }
  19.     }
  20. }
  21. trace(arr);
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 11-08-2005, 17:20   #4 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Danke, hat mich schon mal weitergebracht!

Leider klappts noch nicht, dass er, wenn ein doppelter Code gefunden wurde, er nochmal einen neuen an gleicher Stelle generiert. Habs die Variablen runter gesetzt um einfacher auf doppelte zu testen:

ActionScript:
  1. anzahl= 20;
  2.  
  3. code = new Array;
  4. alphabet  = new Array ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "t", "s", "t", "u", "v", "w", "x", "y", "z");
  5. zahlen_string = new Array ("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")
  6.  
  7. function code_generieren() {
  8.         for (i=1; i<3; i++) {
  9.         zahl_buchstabe = random(2)+1;
  10.         if (zahl_buchstabe == 1) {
  11.             this["stelle_"+[i]] = zahlen_string[random(10)];
  12.         } else {
  13.             this["stelle_"+[i]] = alphabet[random(2)+1];
  14.         }
  15.     }
  16.     code[x] = stelle_1+stelle_2+stelle_3+stelle_4+stelle_5+stelle_6;
  17.    
  18.    
  19.    
  20.     for(j=1;j<x;j++){
  21.         if(code[j] == code[x]) {trace("doppelter Code: "+code[x]);break;code_generieren()}
  22.     }
  23.     trace("Code "+x+": "+code[x])
  24. }
  25.  
  26.  
  27. for (x=1; x<anzahl; x++) {
  28.     code_generieren()
  29. }

Aber irgendwie ersetzt er einen doppelten Code nicht durch einen neuen ...


Edit: Danke Frager! Wenn ich mein Script nicht mehr hinbekomme (will natürlich erstmal versuchen mein eigenes so hinzubekommen, weil ich das 100% versteh), werde ich stattdessen deines benutzen, thx
@ Chanse auf doppelte: das stimmt, aber wir werden 4500 Codes brauchen und daher dann doch lieber kein Risiko eingehen

Geändert von djdwarf (11-08-2005 um 17:23 Uhr)
djdwarf ist offline   Mit Zitat antworten
Alt 11-08-2005, 17:25   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Das ist ja im Prinzip dein Script. Hab's nur ein wenig aufgeräumt...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 12-08-2005, 09:46   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo nochmal!
Da stand noch mist drin...
ActionScript:
  1. var arr = [];
  2. for (x=1; x<3; x++) {
  3.     this["code_"+x] = "";
  4.     for (i=1; i<7; i++) {
  5.         var zahl_buchstabe = random(2)+1;
  6.         if (zahl_buchstabe == 1) {
  7.             this["code_"+x] = "hallo";
  8.         } else {
  9.             this["code_"+x] = "du";
  10.         }
  11.     }
  12.     arr.push(this["code_"+x]);
  13.     for (var y = 0; y<arr.length-1; y++) {
  14.         if (arr[y] == this["code_"+x]) {
  15.             arr.splice(y, 1); [B]//Hier[/B]
  16.             x--; [B]// und hier...[/B]
  17.             break;
  18.         }
  19.     }
  20. }
  21. trace(arr);
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele