Rechenfehler im MSIE 6?
twb
- javascript
Liebe alle - ich programmiere nun schon eine ganze Weile lang Javascript, aber sowas ist mir in sechs Jahren noch nie untergekommen: Firefox 2 und MSIE 6 berechnen ein und dasselbe Script mit unterschiedlichen Ergebnissen. Ist das menschenmöglich?!
Darum geht's: Ich hab' ein neues Spiel geschrieben - SET!, das Puzzlespiel einer amerikanischen Forscherin (für Denkspielfreaks wie mich: Hier sind die Regeln in Englisch; hier ist der deutsche Wikipedia-Eintrag). Ich hab' nun in mein Skript als letztes eine "Hints"-Funktion eingefügt, welche die vier möglichen Sets der Reihe nach anzeigen soll. Und hier passiert's: Firefox zeigt die Sets, die über "Hints" aufgerufen werden, IMMER richtig an; der MSIE jedoch bei ca. jedem fünften Spiel falsch.
Kann das wirklich sein, dass die js-Engine im MSIE 6 Rechenfehler macht?!
Verdutzt, aber herzlich, twb
@@twb:
Kann das wirklich sein, dass die js-Engine im MSIE 6 Rechenfehler macht?!
Was hast du zum Debugging bereits unternommen?
Die Forum-FAQ hat du gelesen?
Live long and prosper,
Gunnar
Was hast du zum Debugging bereits unternommen?
Das ganz Normale: getweakt, bis die FF-Fehlerkonsole zufrieden war (mit Ausnahme der Microsoft-Filter, von denen ich die Finger nicht lassen konnte).
Die Forum-FAQ hat du gelesen?
Yep. Nur dachte ich, mit einem Fliesskommaproblem könne das nichts zu tun haben. Bei näherem Hinsehen aber fällt mir auf, dass ich zweimal Math.random() verwende. Kann das tatsächlich zu derart massiven Fehlern führen?
Es handelt sich also um diese Funktion?
function hints() {
move=0;
for (i=0;i<12;i++)
mark[i]="unmarked";
for (i=0;i<3;i++){
mark[counts[i]]="marked";
counts.push(counts[i]);
}
counts.splice(0,3);
show();
}
Ich habe sie kopiert.
Meiner Ansicht nach fehlt eine Klammer, und zwei Schleifeniteratoren mit dem gleichen variablennamen zu initialisieren, halte ich für ungesund.
Du willst deinen Code maschinenfreundlicher schreiben.
mfg Beat
Es handelt sich also um diese Funktion?
Yep.
Meiner Ansicht nach fehlt eine Klammer, und zwei Schleifeniteratoren mit dem gleichen variablennamen zu initialisieren, halte ich für ungesund.
Richtig. Nur dürfte das hier keine Rolle spielen: Die erste Schleife
for (i=0;i<12;i++) mark[i]="unmarked";
ist nämlich schon zu Ende, bevor der zweite Iterator auftaucht. Ich rätsle weiter.
Darum geht's: Ich hab' ein neues Spiel geschrieben - SET!, das Puzzlespiel einer amerikanischen Forscherin ...
Ich bin da kein Experte, aber bist du sicher, dass du das copyright auf das Spiel hast? Mit Ravensburger ist nicht zu spaßen, die haben eine Zeit lang zumindest viele Seiten verklagt die Memory in JS umgesetzt haben. Und unter einer fremden Spielidee ein (c)twb drunter zu schreiben halte ich für gewagt.
Kann das wirklich sein, dass die js-Engine im MSIE 6 Rechenfehler macht?!
Nein.
Struppi.
Ich bin da kein Experte, aber bist du sicher, dass du das copyright auf das Spiel hast?
Guter Hinweis. Ich seh's mir genauer an. Zumindest habe ich nicht wie andere beim Set-Spielkartenverlag auch gleich sämtliche Grafiken geklaut. Wie weit die Spielidee _as is_ geschützt ist? Ich mach' mich schlau. Danke!