Automatiser le clic sur les fortunes de Cookie Clicker

Aujourd’hui, après avoir effectué une ascension sur Cookie Clicker, je me suis dit : “Si je veux débloquer les fortunes (qui apparaissent dans le fil d’actualités), il va falloir encore que je reste attentif devant mon écran…”.

C’est alors que je me suis demandé s’il n’y avait pas moyen d’automatiser cela.

La première étape fut d’analyser le code principal du jeu.

Contrairement à d’autres aspects du jeu (les mini-jeux ou encore les cookies dorés…) le fil d’actualités n’est pas géré par l’intermédiaire de l’objet principal du jeu (Game dans le code du jeu).

Pour arriver à mon but, il faut donc passer par le code HTML du jeu. Un rapide coup d’oeil à ce code me donne l’ID (commentsText1) de la div qui contient la nouvelle affichée.

Avec cet ID je peux maintenant le sélectionner avec document.getElementById().

Mais maintenant, comment je fais pour détecter la présence d’une fortune ? Avec un peu de patience, j’ai trouvé la réponse : une fortune, contrairement à une nouvelle “normale” est inclue dans un <span>.

La logique à adopter est donc de regarder régulièrement le contenu de notre <div> sélectionnée, et que si c’est un <span>, on clique dessus.

Pour trouver par type de tag les enfants d’un élément sélectionné avec getElementById(), il existe la méthode getElementsByTagName().

Cette méthode retourne une HTMLCollection (en quelque sorte un array), dont le nombre d’éléments à l’intérieur est disponible via sa propriété length.

Et si cette collection contient des éléments (length supérieur à zéro), on clique sur le premier élément de cette collection (index zéro) à l’aide de la méthode click().

Cela donne le code suivant :

const newsTicker = document.getElementById('commentsText1');

let fortunes = newsTicker.getElementsByTagName('span');

if(fortunes.length) {
	fortunes[0].click();
}

Pour automatiser son exécution, il suffit d’englober le tout dans la fonction d’un setInterval(), et voilà.

Laisser un commentaire