L ' algorithme est déterministe, mais on peut soutenir que le résultat global du lancement d'un oiseau est effectivement non déterministe car il repose sur une entrée utilisateur (extrêmement sensible).
Pour tester l'algorithme et l'effet des entrées utilisateur, j'ai utilisé la procédure suivante:
- Charger la version Google Chrome de Angry Birds
- Niveau de charge 1-1
- Ramenez la souris sur une coordonnée XY spécifique. (Cela dépassait le point de "tirage complet" de l'oiseau.)
- Relâchez l'oiseau et attendez que le jeu atteigne un état stable.
Pour mesurer ma coordonnée XY, j'ai ouvert une fenêtre Chrome d'arrière-plan et l'ai parcourue jusqu'à cette page. J'ai aligné les deux fenêtres pour que je puisse voir les positions X et Y de la souris tout en étant toujours capable de provoquer quelque chose lorsque j'ai relâché l'oiseau. J'ai aligné le curseur de ma souris avec le coin inférieur gauche de la boîte autour de ces deux nombres, puis relâché. J'ai alors noté la position du curseur de ma souris (car l'affichage ne se met à jour que lorsque la souris n'est pas relâchée et que le curseur est au-dessus de cette fenêtre), puis j'ai noté le score résultant dans Angry Birds. Si vous rencontrez des problèmes avec le positionnement exact de la souris, vous pouvez essayer une option d'accessibilité proposée par votre système d'exploitation, par exemple, les touches de la souris sous Windows.
J'ai le même score, tant que mon curseur était au exactement au même endroit que lors des itérations précédentes.
Avant de proposer un banc d'essai amélioré qui me permettait de mesurer la position de mon curseur le pixel, j'ai exécuté cette expérience environ 10 fois, en utilisant un point de référence dans l'image d'arrière-plan du jeu. J'ai obtenu des scores en tirant le premier oiseau qui variait entre 8 000 et 11 000 points. En utilisant la stratégie de test améliorée, si j'étais distancé d'un seul pixel, je pourrais m'attendre à des différences de score comprises entre 150 et 500 points.
Je noterai que le curseur se trouvait au-delà du bord de la zone de jeu , à l'extérieur de la fenêtre du navigateur, bien au-delà de la distance maximale à laquelle l'oiseau peut être reculé, et j'ai toujours remarqué des différences lors du déplacement de mon curseur même un seul pixel.
De plus, j'ai pris des captures d'écran pour un cas extrême où mon curseur était sur un moniteur différent que la fenêtre du jeu, et a exécuté plusieurs itérations où j'ai gardé mon curseur au même endroit ou l'ai légèrement déplacé. D'après mes calculs (basés sur la mesure de la distance à partir des captures d'écran), le jeu a pu créer un résultat différent (score 32960 vs 31520) basé sur une différence de hauteur d'un pixel (544 vs 545 pixels) sur une distance d'environ 1284 pixels de largeur. Cela équivaut à une différence angulaire de 0,03 degrés.
Je dirais que pour toutes fins pratiques, vous pouvez vous attendre à utiliser la même stratégie générale au même niveau à plusieurs reprises et à espérer des résultats extrêmement variables. Le niveau de sensibilité des commandes est si extrême qu'il n'y a aucun moyen pratique de lui faire faire la même chose deux fois. Ceci est exacerbé par le fait que si vous jouez sur un écran tactile, il serait extrêmement difficile de reproduire les mêmes mouvements jusqu'au pixel individuel.