Der -Algorithmus ist deterministisch, aber es ist fraglich, ob das Gesamtergebnis beim Starten eines Vogels effektiv nicht deterministisch ist, da er auf (außerordentlich sensiblen) Benutzereingaben beruht.
Um den Algorithmus und die Auswirkungen von Benutzereingaben zu testen, habe ich das folgende Verfahren angewendet:
- Laden Sie die Google Chrome-Version von Angry Birds
- Laststufe 1-1
- Ziehen Sie die Maus zurück zu einer bestimmten XY-Koordinate. (Dies war nach dem Punkt "Vollziehen" für den Vogel.)
- Lassen Sie den Vogel los und warten Sie, bis das Spiel einen stabilen Zustand erreicht hat.
To Messen Sie meine XY-Koordinate. Ich öffnete ein Chrome-Hintergrundfenster und navigierte zu dieser Seite. Ich habe die beiden Fenster so ausgerichtet, dass ich die X- und Y-Positionen der Maus sehen konnte, während ich beim Loslassen des Vogels noch etwas bewirken konnte. Ich richtete meinen Mauszeiger auf die untere linke Ecke des Feldes um diese beiden Zahlen aus und ließ sie dann los. Ich habe dann die Position meines Mauszeigers notiert (da die Anzeige nur aktualisiert wird, wenn die Maus nicht losgelassen wird und sich der Cursor über diesem Fenster befindet) und dann die resultierende Punktzahl in Angry Birds notiert. Wenn Sie Probleme mit der genauen Mauspositionierung haben, können Sie eine von Ihrem Betriebssystem angebotene Eingabehilfenoption ausprobieren, z. B. Maustasten unter Windows.
Ich habe die gleiche Punktzahl erhalten. Solange sich mein Cursor genau an der Stelle befand wie bei früheren Iterationen.
Bevor ich einen erweiterten Prüfstand entwickelte, mit dem ich die Position meines Cursors messen konnte Als Pixel habe ich dieses Experiment ungefähr 10 Mal ausgeführt, wobei ich einen Referenzpunkt im Hintergrundbild des Spiels verwendet habe. Ich bekam Punkte, indem ich den ersten Vogel abfeuerte, der zwischen 8.000 und 11.000 Punkten variierte. Wenn ich bei Verwendung der erweiterten Teststrategie um ein einzelnes Pixel versetzt war, konnte ich Punktedifferenzen zwischen 150 und 500 Punkten erwarten.
Ich werde feststellen, dass sich der Cursor jenseits des Randes des Spielbereichs außerhalb des Browserfensters befand, weit jenseits der maximalen Entfernung, über die der Vogel zurückgezogen werden kann, und ich bemerkte immer noch Unterschiede beim Bewegen meines Vogels Cursor sogar ein einzelnes Pixel.
Außerdem habe ich Screencaps für einen Extremfall erstellt, in dem sich mein Cursor auf einem anderen Monitor als im Spielfenster befand, und Es wurden mehrere Iterationen ausgeführt, bei denen ich den Cursor an derselben Stelle hielt oder ihn leicht bewegte. Nach meinen Berechnungen (basierend auf der Messung der Entfernung von Screencaps) konnte das Spiel ein anderes Ergebnis (Punktzahl 32960 gegenüber 31520) erzielen, basierend auf einem Höhenunterschied von einem Pixel (544 gegenüber 545 Pixel) über eine Entfernung von ungefähr 1.284 Pixel Breite. Dies ergibt eine Winkeldifferenz von 0,03 Grad.
Ich würde sagen, dass Sie für alle praktischen Zwecke erwarten können, dass Sie dieselbe allgemeine Strategie wiederholt auf derselben Ebene anwenden und stark unterschiedliche Ergebnisse erwarten. Die Empfindlichkeit der Bedienelemente ist so extrem, dass es keinen praktischen Weg gibt, sie zweimal dazu zu bringen, dasselbe zu tun. Dies wird durch die Tatsache verschärft, dass es außerordentlich schwierig ist, dieselben Bewegungen bis auf das einzelne Pixel zu reproduzieren, wenn Sie auf einem Touchscreen spielen.