Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-08-2005, 14:24   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 173
Überprüfen ob eingegebener Text in einem Array vorhanden ist

Hi,

ich habe folgendes Problem. Ich habe eine Array mit mehreren Lösungen.

ActionScript:
  1. [loesung1, loesung2 ...]

Jetzt soll der User eine der Lösungen in ein Eingabefeld schreiben, danach soll geprüft werden, ob dieses Lösungswort in meinem Array vorhanden ist. Wenn ja soll das Wort aus dem Array gelöscht werden, damit bei der nächsten Eingabe das Wort nicht mehr ein Teil der Lösungen ist.

Hat jmd. ne Idde wie ich das mach?

Danke und Grüße
Manni
mannimedia ist offline   Mit Zitat antworten
Alt 17-08-2005, 14:33   #2 (permalink)
Neuer User
 
Benutzerbild von Loré
 
Registriert seit: Jun 2005
Ort: Köln
Beiträge: 377
Einfache Arrayüberprüfung:
ActionScript:
  1. var array = [lösung1, lösung2, ...]
  2. var anwtort = lösung3;
  3. var i;
  4. for(i = 0; i < array.length; i++){
  5.  if(antwort == array[i]){
  6.   array[i] = "";
  7.   tuWat();
  8.  }
  9. }

Lore
Loré ist offline   Mit Zitat antworten
Alt 17-08-2005, 15:34   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 173
super, vielen dank. hab das jetzt mal einzeln getestet, klappt einwandfrei.

mein problem ist, dass ich nicht genau weiss, wo ich die eingabe überprüfen muss. ich habe ein XML-File das folgendermaßen aussieht:

HTML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<anagramme>
	<anagramm text="wort1">
		<loesungen loesung="wort1_Loesung1" />
		<loesungen loesung="wort1_Loesung2" />
		<loesungen loesung="wort1_Loesung3" />
		<loesungen loesung="wort1_Loesung4" />
		<loesungen loesung="wort1_Loesung5" />
	</anagramm>
	<anagramm text="wort2">
		<loesungen loesung="wort2_Loesung1" />
		<loesungen loesung="wort2_Loesung2" />
		<loesungen loesung="wort2_Loesung3" />
	</anagramm>
	<anagramm text="wort3">
		<loesungen loesung="wort3_Loesung1" />
		<loesungen loesung="wort3_Loesung2" />
	</anagramm>
</anagramme>
das wird erstmal ausgelesen und zufällig sortiert, und dann an die Funktion SpieleWort() übergeben. dort wird das letzte element aus dem array rausgenommen und zerlegt, damit ich jeweils das wort mit den lösungen habe. sind nun alle lösungen errraten soll er das ganze mit dem nächsten wort mache, d.h. er soll wieder in die funktion SpieleWort() springen und das letzte element mit array.pop() entfernen und mit den daraus resultierenden daten weiterarbeiten. ich weiß leider nicht wie ich das zustande bekomm.

ActionScript:
  1. _root.punkte = 0;
  2. movie_controll = _root.anagramm_mc;
  3.  
  4. var XMLdaten = new XML();
  5. XMLdaten.ignoreWhite = true;
  6. XMLdaten.load("config.xml");
  7. XMLdaten.onLoad = function(success) {
  8.   _global.XMLdaten_anagramme = [];
  9.   if (success) {
  10.     for (var i=0; i<XMLdaten.firstChild.childNodes.length; i++) {   
  11.       var anagramm = new String("");
  12.       anagramm = XMLdaten.firstChild.childNodes[i].attributes.text;
  13.       anagramm = anagramm.concat(":");
  14.       for (var j=0; j<XMLdaten.firstChild.childNodes[i].childNodes.length; j++) {
  15.         anagramm = anagramm.concat(XMLdaten.firstChild.childNodes[i].childNodes[j].attributes.loesung);
  16.         anagramm = anagramm.concat(",");
  17.       }
  18.       anagramm = anagramm.substr(0,anagramm.length-1);
  19.       XMLdaten_anagramme[i] = anagramm.toLowerCase();
  20.     }
  21.     XMLdaten_anagramme = RandomSort(XMLdaten_anagramme);
  22.     //trace(XMLdaten_anagramme);
  23.     SpieleWort(XMLdaten_anagramme);
  24.   } else {
  25.     // fehler beim laden der XMLDatei
  26.   }
  27. };
  28.  
  29. // zufaelliges sortieren der woerter
  30. function RandomSort(anagramme){
  31.   var randpos = 0;
  32.   var tmpString = new String("");
  33.   for (var i=0; i<anagramme.length; i++){
  34.     tmpString = anagramme[0];
  35.     randpos = Math.floor(Math.random()*anagramme.length);
  36.     anagramme[0] = anagramme[randpos];
  37.     anagramme[randpos] = tmpString;
  38.   }
  39.   return anagramme;
  40. };
  41.  
  42. // anagramme eines einzelnen wortes durchspielen
  43. function SpieleWort(XMLdaten_anagramme){
  44.     Selection.setFocus("movie_controll.eingabe_int");
  45.     anagramme = XMLdaten_anagramme.pop();
  46.     tmpArray = anagramme.split(":");
  47.     wort = tmpArray[0];
  48.     movie_controll.wort_int.text = wort;
  49.     eingabe = movie_controll.eingabe_int.text;
  50.     loesungen = tmpArray[1];
  51.     movie_controll.ok_int.onRelease=function(){
  52.             var i;
  53.             for(i = 0; i < loesungen.length; i++){
  54.                 if(eingabe == loesungen[i]){
  55.                     loesungen[i] = "";
  56.                     trace("richtig");
  57.                 }else {
  58.                     trace("falsch");
  59.                     }
  60.             }
  61. }
  62. }

danke und gruß
manni
mannimedia ist offline   Mit Zitat antworten
Alt 17-08-2005, 16:58   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 173
ich habs soweit hinbekommen.

meine frage ist jetzt noch woher weiß ich wann alle Lösungen eingegeben wurden. meine array.length bleibt ja immer gleich, da ich ja einfach nur nen leeren string reinschreibe. könnte man da was mit array.splice() machen?
mannimedia ist offline   Mit Zitat antworten
Alt 17-08-2005, 17:26   #5 (permalink)
Neuer User
 
Benutzerbild von Loré
 
Registriert seit: Jun 2005
Ort: Köln
Beiträge: 377
hmm.. ich denke schon. Guck mal in der Hilfe bei der Klasse Array nach, da gibt es x verschiedene methoden, mit denen du eine Array massakrieren kanst.
Du muss eigendlich nur noch eine abfrage bei jedem antwortüberprüfen einbauen, die falls das Array leer ist weiß was ich nicht was macht.
Lore
Loré ist offline   Mit Zitat antworten
Alt 17-08-2005, 17:28   #6 (permalink)
Neuer User
 
Benutzerbild von Loré
 
Registriert seit: Jun 2005
Ort: Köln
Beiträge: 377
ActionScript:
  1. function SpieleWort(XMLdaten_anagramme){
  2.         Selection.setFocus("movie_controll.eingabe_int");
  3.         anagramme = XMLdaten_anagramme.pop();
  4.         tmpArray = anagramme.split(":");
  5.         wort = tmpArray[0];
  6.         movie_controll.wort_int.text = wort;
  7.         eingabe = movie_controll.eingabe_int.text;
  8.         loesungen = tmpArray[1];
  9.         movie_controll.ok_int.onRelease=function(){
  10.                 var i;
  11.   [COLOR=Red]if(loesunen.length == 0){
  12.    machWat();
  13.   }[/COLOR]
  14.                 for(i = 0; i < loesungen.length; i++){
  15.                         if(eingabe == loesungen[i]){
  16.                                 loesungen[i] = "";
  17.                                 trace("richtig");
  18.                         }else {
  19.                                 trace("falsch");
  20.                         }
  21.                 }
  22.         }
  23. }
Loré ist offline   Mit Zitat antworten
Alt 17-08-2005, 17:33   #7 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Eigentlich sollte das mit splice schon richtig sein:
ActionScript:
  1. for (i=0; i<loesungen.length; i++) {
  2.     if (eingabe == loesungen[i]) {
  3.         loesungen.splice(i,1)
  4.         trace("richtig");
  5.         break;
  6.     } else {
  7.         trace("falsch");
  8.     }
  9. }
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 17-08-2005, 18:26   #8 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 173
yeah, super. mit der splice-funktion klappt es einwandfrei. vielen dank.

jetzt hängt es nur noch an einer kleinen sache. und zwar soll bei jeder richtigen antwort eine variable punkte um eins erhöht, bei jeder falschen um eins verringert werden.

ActionScript:
  1. for (i=0; i<loesungen.length; i++) {
  2.         if (eingabe == loesungen[i]) {
  3.                 loesungen.splice(i,1)
  4.                 trace("richtig");
  5.         punkte ++;
  6.                 break;
  7.         } else {
  8.                 trace("falsch");
  9.         punkte--;
  10.         }
  11. }

jetzt wird ja bei jedem durchlauf je nachdem an welcher stelle die richtige antwort steht punkte-- öfters aufgerufen. wie kann ich das denn abfangen?

gruß
manni
mannimedia ist offline   Mit Zitat antworten
Alt 17-08-2005, 18:34   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 173
war ne blöde frage. habs schon hinbekommen.

ActionScript:
  1. for(i = 0; i < loesungen.length; i++){
  2.                         if(eingabeKlein == loesungen[i]){
  3.                             loesungen.splice(i,1);
  4.                             movie_controll.status_int.text += eingabe+"\n";
  5.                             ok = true;
  6.                             break;
  7.                         }   
  8.                         else{
  9.                         ok = false;
  10.                         }            
  11.                     }
  12.                     if(ok){
  13.                             _root.punkte++;
  14.                         } else {
  15.                             _root.punkte--;
  16.                         }
  17.                 }
mannimedia 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 07:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele