Hangmanspiel(problem) Javascript don´t work :-(

Hallo und frohe Ostern,
die Schokoladeneier habe ich alle gegessen. hmmmm.
Jetzt sitze ich wieder am PC und an einem Problem:
Ich habe ein kleines Progrämmchen geschrieben (unten), das, was Wunder, nicht arbeitet.

Programmfunktion:

  • Anzeige eines Bildes (z. B. Hund.jpg)
  • daneben Anzeige des Wortes ohne den ersten Buchstaben (hier: _und)
  • darunter eine Tastatur mit Großbuchstaben
    Der User soll nun auf den ersten Buchstaben (hier: H für H_und) klicken.
    klickt er verkehrt, erscheint anstelle der Buchstaentaste ein trauriger Smiley.
    klickt er richtig, erscheint ein lustiger Smiley, der Buchstabe wird angezeigt, das Programm wartet 5 Sekunden und die nächste Aufgabe kommt.
    … leider arbeitet das Programm nicht. Genau gesagt, es funzt überhaupt nichts. Nicht einmal die Funktion wird aufgerufen.
    Wer kann mit helfen?
    Hans-Jürgen

Hier der Quellcode:

first\_letter
var dummy; //Platzhalter
var zuege=0; //Statistik der Klicks
var aktuelleAufgabe=1; //Nummer der momentanen Aufgabe

//zunächst werden alle Dateinamen ohne Extention aufgeführt 
//(hier bitte ändern, Großbuchstaben werden in Kleinbuchstaben umgewandelt):
Datei = new Array("0", "Esel", "Hahn", "Hund", "Katze");
var SummeDatei = Datei.length; //Anzahl der Arrayfelder 

DateinameBild = new Array("0"); //Dateinamen der Grafiken erstellen
Wort = new Array("0");
Buchstabe = new Array("0");
 for (f=1;f=(SummeDatei-1)) {
 dummy="grafik1/" + Datei[f] + ".jpg";
 dummy.value.toLowerCase(); //Umwandeln in Kleinbuchstaben (Unixserver)
 DateinameBild.push(dummy); //Dateinamen dem Arry DateinameBild anfügen

 dummy= Datei[f];
 dummy=dummy.substring(2,); //erster Buchstabe wird weggeschnitten
 Wort.push(dummy); //Dateinamen dem Arry Wort anfügen

 dummy= Datei[f];
 dummy=dummy.substring(1,1); //erster Buchstabe wird übernommen
 Buchstabe.push(dummy); //Dateinamen dem Arry Buchstabe anfügen
 }

// \*\*\* jetzt wird alles gemischt
for (f=1;f=SummeDatei) {
 var x = Math.ceil(Math.random()\*SummeDatei+1);
 var y = Math.ceil(Math.random()\*SummeDatei+1);
 dummy=DateinameBild[x];
 DateinameBild[x]=DateinameBild[y];
 DateinameBild[y]=dummi;
 dummy=Wort[x];
 Wort[x]=Wort[y];
 Wort[y]=dummi;
 dummy=Buchstabe[x];
 Buchstabe[x]=Buchstabe[y];
 Buchstabe[y]=dummi;
}

function testen(letter){
 zuege=zuege+1; //zählt die Züge des Spielers
 if (Buchstabe[aktuelleAufgabe]==letter) {
 document.images[letter].src="grafik1/richtig.jpg";
 dummy='\<font size="7" face="Comic Sans MS"\>\<strong\>'
 dummy+=Buchstabe[aktuelleAufgabe]+ Wort[aktuelleAufgabe];
 dummy+='\</strong\>\</font\>';
 document.all.Loesung.innerHTML=dummy;
 aktuelleAufgabe +=1;
 window.setTimeout(BildschirmAktualisieren(), 5000); //wartet etwas und zeigt nächste Aufgabe
 } else {
 document.images[letter].src="grafik1/falsch.jpg";
 }
}

function BildschirmAktualisieren(){
 if (aktuelleAufgabe \> SummeDatei) {
 document.images["Buchstabenanzeige"].src=Buchstabe[SummeDatei];
 alert("S p i t z e \nDu hast es in " + zuege + " Zügen geschafft!!!\nIch gratuliere dir!!!")
 } else {
 document.images["Dateibild"].src=DateinameBild[aktuelleAufgabe];
 dummy='\<font size="7" face="Comic Sans MS"\>\<strong\>'
 dummy+='-' + Wort[aktuelleAufgabe];
 dummy+='\</strong\>\</font\>';
 document.all.Loesung.innerHTML=dummy;
 }
 }
 &nbsp; 

 

 

WAT NU?

so geht ja nicht:

for (f=1;f=SummeDatei) 

muss wohl so sein:

 for (f=1;f==SummeDatei;f++)

dann hast du die var dummy und dummi … schreibfehler oder soll das so?

viel erfolg

Hallo KKO,
vielen Dank, dass du dir die Zeit genommen hast mein „Programm“ durchzusehen.

  • Ich habe in den beiden for-Schleifen den Schleifenzähler ergänzt.
  • Die 3 dummi-Variablen habe ich durch dummy ersetzt.

Die Ausführung ist die gleiche. Er springt immer noch nicht zur Funktion „BildschirmAktualisieren“, obwohl ich sie schon in body onload
aufrufe.
Wenn ich einen alert-Tag als erstes in die Funktion schreibe, wird er nicht ausgeführt.
Kann das sein, dass erst die Seite mit HTM aufgebaut werden muss, bevor ich sie mit JS verändere - den Befehl also nicht in onload geben darf?

Viele Grüße
Hans-Jürgen

hallo hans-jürgen,

bin nochmal drübergeflogen:

geht nicht: dummy.value.toLowerCase()
geht: dummy=dummy.toLowerCase()

dieses images.element gibt es nicht:

document.images["Buchstabenanzeige"]

wenn es immer noch nicht funkt, müsstes du nochmal den quelltext senden, wegen den änderungen.

gruß
klaus

Hallo Klaus,
vielen Dank für die super-gute Mitarbeit. Dein Programm läuft super :smile:))
Damit die anderen Wer-Weiß-Was-User sich anschauen können, wie du das Problem gelöst hast, habe ich nachfolgend den Quelltext eingefügt:

div.out { font-size:50px; font-weight:900; Font-Family:"Comic Sans MS"; }
first\_letter
var dummy; //Platzhalter
var zuege=0; //Statistik der Klicks
var aktuelleAufgabe=0; //Nummer der momentanen Aufgabe
var SummeDatei =0;
var Buchstaben = new Array();

function start (){
var Datei = new Array("ziege", "esel", "hahn", "hund", "katze");
SummeDatei = Datei.length; //Anzahl der Arrayfelder

Aufgaben=new Array(SummeDatei);
Test=new Array(SummeDatei); var ok="no";

for (var i = 0; i \<=SummeDatei-1; i++){
 while ( ok == "no"){
 nr=Math.round(Math.random() \* (SummeDatei-1));
 if (Test[nr] == undefined ){Test[nr]="ja";Aufgaben[i]=Datei[nr];ok="yes"}
}
ok="no";
}

document.images["Dateibild"].src="grafik1/"+ Aufgaben[aktuelleAufgabe] +".jpg";
dummy='\_' + Aufgaben[aktuelleAufgabe].substring(1,20);
document.getElementById('Loesung').firstChild.nodeValue=dummy;
} // ende function start

function testen(letter){
 zuege=zuege+1; //zählt die Züge des Spielers
 if (Aufgaben[aktuelleAufgabe].substring(0,1)==letter) { // Taste "K" bei Aufgabe "-atze" wurde gedrückt
 document.images[letter].src="grafik1/richtig.jpg"; // lustiger Smiley erscheint im Tastenfeld
 dummy=letter.toUpperCase() + Aufgaben[aktuelleAufgabe].substring(1,20);
 document.getElementById('Loesung').firstChild.nodeValue=dummy;
 aktuelleAufgabe +=1;
 Buchstaben.push(letter);
 window.setTimeout("BildschirmAktualisieren()", 1000); //wartet etwas und zeigt nächste Aufgabe
 }
 else{
 document.images[letter].src="grafik1/falsch.jpg"; // trauriger Smiley erscheint im Tastenfeld
 Buchstaben.push(letter);
 }
}// end sub testen

function BildschirmAktualisieren(){

 for (var i = 0; i \<=Buchstaben.length-1; i++){
 document.images[Buchstaben[i]].src="grafik1/taste\_"+Buchstaben[i]+".jpg";
 }
 Buchstaben=new Array();
 if (aktuelleAufgabe \>= SummeDatei) {
 alert("S p i t z e \nDu hast es in " + zuege + " Zügen geschafft!!!\nIch gratuliere dir!!!")
 }
 else {
 document.images["Dateibild"].src="grafik1/"+ Aufgaben[aktuelleAufgabe] +".jpg";
 dummy='\_' + Aufgaben[aktuelleAufgabe].substring(1,20);
 document.getElementById('Loesung').firstChild.nodeValue=dummy;
 }
 }