• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Memmory in Java-Skript

xFoLLoW

New member
Benötige Hilfe!

Muss ein Memory in Java-Skript für die Schule machen, doch mein Code funktioniert nicht und ich finde den Fehler nicht.
Ich kann die Karten nicht umdrehen und deshalb auch nicht vergleichen.

Bitte um hilfreiche Antworten.

mfg Alex

Code:

HTML:
<HTML>
<HEAD>

<script language=JavaScript>


         var Karten = new Array(18);
         var anz = Karten.length / 2;
         var versuche;
         var gefPaare;
         var iFirstField;
         var iSecondField;
         var clickable = false;

         var i0 = new Image(40, 40); h.src = "hintergrund.jpg";
         var i1 = new Image(40, 40); i1.src = "pok1.jpg";
         var i2 = new Image(40, 40); i2.src = "pok2.jpg";
         var i3 = new Image(40, 40); i3.src = "pok3.jpg";
         var i4 = new Image(40, 40); i4.src = "pok4.jpg";
         var i5 = new Image(40, 40); i5.src = "pok5.jpg";
         var i6 = new Image(40, 40); i6.src = "pok6.jpg";
         var i7 = new Image(40, 40); i7.src = "pok7.jpg";
         var i8 = new Image(40, 40); i8.src = "pok8.jpg";
         var i9 = new Image(40, 40); i9.src = "pok9.jpg";

         var verBild = "hintergrund";

         function isHiddenCardOnField (i) {
                 var name = document.images["p" + i].src;
                 var len = name.length;
                 return name.substring (len-verBild.length, len) == verBild;
         }

         function zeigeKarte (i) {
                 eval("window.document.board.p" + i+ ".src='" + Karten[i] + ".jpg'");
         }

         function versteckeKarte (i) {
                 eval("window.document.board.p" + i+ ".src='" + verBild + "");
         }

         function hide() {
                 versteckeKarte(iFirstField);
                 versteckeKarte(iSecondField);
                 iFirstField = -1;
                 iSecondField = -1;
                 clickable = true;
         }

         function clickon(i) {
                 if (!clickable)
                         return;

                 if (!isHiddenCardOnField (i))
                         return;

                 zeigeKarte(i);
                 if (iFirstField == -1 || i == iFirstField) {
                         iFirstField = i;
                         return;
                 }

                 clickable = false;
                 iSecondField = i;
                 versuche++;

                 if (Karten[iFirstField] != Karten[iSecondField]) {
                         setTimeout("hide()", 2850);
                         return;
                 }

                 gefPaare++;
                 if (gefPDu hast es geschafft!");

                 iFirstField = -1;
                 iSecondField = -1;
                 clickable = true;
         }

         function randomise() {
                 for (var n = 0; n < Karten.length; n++) {
                         i = Math.floor(Math.random()*Karten.length);

                         card = Karten[i];
                         Karten[i] = Karten[n];
                         Karten[n] = card;
                 }
         }

         function initGame() {
                 versuche = 0;
                 gefPaare = 0;
                 iFirstField = -1;
                 iSecondField = -1;

                 for (var n = 0; n < Karten.length; n++) {
                         Karten[n] = Math.floor (n/2) + 1;
                         versteckeKarte(n);
                 }
                 randomise();
                 clickable = true;
         }


</script>

</HEAD>
<BODY bgColor="black" onload=initGame()>
<H1 style="color=#F9240C;">Java-Skript Memory/Pokemon-Edition</H1>


<div align="center">

<TABLE border=3 bgcolor=#AA2A1C>
<TR>
         <TD width=130><A href="javascript:clickon(0)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k0></A></TD>
         <TD width=130><A href="javascript:clickon(1)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k1></A></TD>
         <TD width=130><A href="javascript:clickon(2)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k2></A></TD>
         <TD width=130><A href="javascript:clickon(3)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k3></A></TD>
         <TD width=130><A href="javascript:clickon(4)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k4></A></TD>
         <TD width=130><A href="javascript:clickon(5)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k5></A></TD>
</TR>
<TR>
         <TD width=130><A href="javascript:clickon(6)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k6></A></TD>
         <TD width=130><A href="javascript:clickon(7)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k7></A></TD>
         <TD width=130><A href="javascript:clickon(8)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k8></A></TD>
         <TD width=130><A href="javascript:clickon(9)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k9></A></TD>
         <TD width=130><A href="javascript:clickon(10)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k10></A></TD>
         <TD width=130><A href="javascript:clickon(11)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k11></A></TD>
</TR>
<TR>
         <TD width=130><A href="javascript:clickon(12)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k12></A></TD>
         <TD width=130><A href="javascript:clickon(13)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k13></A></TD>
         <TD width=130><A href="javascript:clickon(14)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k14></A></TD>
         <TD width=130><A href="javascript:clickon(15)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k15></A></TD>
         <TD width=130><A href="javascript:clickon(16)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k16></A></TD>
         <TD width=130><A href="javascript:clickon(17)"><IMG height=125 src="hintergrund.jpg" width=130 border=0 name=k17></A></TD>
</TR>

</div>

</BODY>
</HTML>
 
Zuletzt bearbeitet von einem Moderator:
Richte deinem Lehrer aus, dass er euch wirklich kein gutes JS beibringt:
  • Invalides HTML
  • veraltetes HTML (z.B. das language-Attribut ist deprecated -> weg damit)
  • Verwendung des Array-Konstruktors
  • globale Variablen
  • noch schlimmer: unbeabsichtigte globale Variablen
  • Verwendung von eval
  • <a href="javascript:...">

Zu deinem Problem: Du has da einen Syntaxfehler.

PS: zur Sicherheit: Fehlerkonsole
PPS: deine randomise()-Funktion ist nicht gleichverteilt.
PPPS: du solltest dich auch entscheiden, wie du deine Variablen- und Funktionsnamen vergibst. Englisch vs. Deutsch, Groß- vs. Kleinschreibung, ...
PPPPS: Schema 4 würde dir helfen, deine eval()s loszuwerden, wenn deine Elementansprache so funktionieren würdest, wie du sie dir vorstellst (die Namen in HTML und JS stimmen nicht überein und ein "board" gibt es gar nicht). Wenn du da unbedingt über einen String gehen willst, gib' den <img> eine ID und arbeite mit document.getElementById(). Aber ich würde da ja empfehlen, dass du direkt die <img>-Nodes an die clickon()-Funktion übergibst:
HTML:
<td><img height="125" src="hintergrund.jpg" width="130" onclick="clickon(this)"></td>

@mikdoe: du hast vergessen, das Ganze hier freizuschalten...
 
Unser Lehrer hat uns nur eine Stunde irgendwas von seinem Skriptum vorgelesen und hat danach verlangt dass wir inerhalb einer Woche(ohne jegliche JavaScript Vorkenntnisse) ein Spiel programiern.
 
Hat jemand von euch mein programm zum laufen gebracht?? Wenn ja, könntet der jenige dann den Code einfügen? Bin echt radlos.
mfg Alex
 
Das ist aber nicht wirklich die beste Pädagogik... naja - egal. Du kannst ja hier fragen.

Ja, ich hab's zum Laufen gebracht, indem ich einfach alle Fehler, die in der Fehlerkonsole angezeigt werden, nacheinander entfernt habe. Probiere es doch einfach mal. Wenn du bei einem konkreten Fehler nicht weißt, wie du ihn entfernen kannst, kannst du ja nochmal nachfragen.
 
Zurück
Oben