Hallo liebe Forummer,
einige von Euch, vor allem aber die Highscore-Streber, haben bestimmt schon gemerkt, daß das Spiel immer langsamer wird, je länger der Wurm ist. Zusätzlich mußte man noch immer zeitiger die Richtungstasten drücken - bis zu einem Takt vorher - damit der Wurm am gewünschten Punkt seine Richtung änderte.
Ursache: Die Browser können die vielen Bildchen nicht so schnell neu malen. Die Änderungen werden ja immer erst dann vom Browser visualisiert, wenn ein Javascript beendet ist. Dauert das bei 10 Elementen vielleicht nur 2/100 Sekunden, so dauert es bei 100 Elementen eben 2/10 Sekunden. Da aber die Intervallzeit bei 2/10 Sekunden lag, erfuhr man eben erst dann von der Änderung, wenn es zu spät zu Reagieren war. Daher mußte man einen Takt vorher die Taste drücken.
Lösung: Bis auf das erste und das letzte Stück sind ja alle Stücken immer gleich. Daher brauchen eigentlich nicht immer alle Stücken weitergerückt werden. Es reicht auch, das vorletzte Stück dahin zu setzen, wo normalerweise das zweite Stück hin müßte. Alle anderen läßt man stehen. Das gab zwar datentechnisch ein Problem, welches aber über ein "Referenzen-Array"* gelöst wurde.
Ergebnis 1: Der Wurm läuft jetzt unabhängig seiner Länge mit nahezu gleicher Geschwindigkeit und die Tastaturbetätigungen können auch bei einer (theoretischen) Länge von über 200 immernoch problemlos dann stattfinden, wenn sie benötigt werden und nicht früher.
Ergebnis 2: Aufgrund dieses nun konstanten Verhaltens war es möglich, verschiedene Geschwindigkeitsstufen einzuführen:
lahm 800 ms Taktzeit
langsam 400 ms Taktzeit
normal 200 ms Taktzeit (entspricht der bisherigen Geschwindigkeit)
Schade nur, daß dadurch die bisherigen highscores unerreichbar werden....
schnell 100 ms Taktzeit
rasant 50 ms Taktzeit
die Highscoretabelle wurde parallel dazu nun auf 5*2 Tabellen ausgedehnt, wobei die bisherigen Einträge in der Tabelle "normal" zu finden sind.
Als dann wünsche ich allen neue Rekorde. ;-)
Andreas Schigold
PS: Wegen dem "Zurück"-Button. Ich weiß auch nicht, warum der mal aus der Highscores zurück zum Spiel nicht ging. Jedenfalls funzt er bei mir momentan wieder.