Petit programme Java d'automatisation simple

Introduction:

Cet article démontre l'utilisation des classes intégrées de Java pour créer un programme d'automatisation destiné à un jeu 4399 similaire à "Rhythm Master". Ce jeu, appelé "piano tactile", se joue en cliquant sur des touches correspondantes pour accumuler des points.

1. Approche de mise en œuvre

(1) Le programme détecte la couleur des pixels à l'écran pour positionner la souris et effectuer des clics : le bouton de démarrage est bleu, tandis que les autres touches sont noires ou présentent des teintes variées (2) Des points de référence fixes sont nécessaires pour surveiller l'apparition des touches (3) Mesurez les positions des points à scanner

Si la position la plus à gauche est (x,y) et que chaque touche a une largeur de "largeur", il suffit de vérifier (x+largeur*0,y), (x+largeur*1,y), (x+largeur*2,y), (x+largeur*3,y)Boucle infinie de scan:

while(true){
	for(int i=0;i<4;++i){
		scanner(x+largeur*i,y);
	}	
}


(4) Si la couleur correspondante est détectée, déplacez la souris et effectuez un clic

Attention : Si la souris est bloquée, appuyez sur (Ctrl+Alt+Delete) puis utilisez le gestionnaire des tâches pour arrêter les processus Java associés!!!

2. Mesure des coordonnées

(1)Assurez-vous que l'échelle d'affichage est à 100% (sinon les coordonnées mesurées doivent être ajustées selon le ratio), réinitialisez après utilisationSur Windows 11, ouvrez l'interface de paramètres via la touche Win + i

(2)Cliquez

Pour accéder

(2) Mesure : Utilisez l'outil de capture d'écran WeChat

Ou l'outil professionnel Snipaste (lien de téléchargement ofifciel), la valeur x se trouve dans le premier cadre, la valeur y peut être prise n'importe où dans le bouton de départ du jeu, la largeur correspond à cette valeur

3. Implémentation du code

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class AutomatePiano {
    public static void main(String[] args) throws AWTException {
    	// Les trois paramètres suivants doivent être adaptés à votre configuration matérielle
        int largeur = 110;
        int positionX = 600;
        int positionY = 660;
        // Création d'un objet de contrôle de souris
        Robot rb = new Robot();
        // Boucle infinie
        while (true) {
        	// Scanning de 4 points
            for (int i = 0; i < 4; i++) {
            	// Chaque pixel est composé de trois couleurs primaires (rouge, vert, bleu) avec des valeurs de 0 à 255, ici on vérifie seulement la composante rouge
            	// Principe de détection détaillé sur Internet
                int couleur = rb.getPixelColor(positionX + largeur * i, positionY).getRed();
                // Vérification de la couleur (bleue, noire, teinte variable)
                if (couleur < 60) {
                	// Déplacement de la souris vers la position cible
                    rb.mouseMove(positionX + largeur * i, positionY);
                    // Clic gauche de la souris
                    rb.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    // Relâchement du clic gauche
                    rb.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                }
            }
        }
    }
}



Étiquettes: Java AWT Robot automatisation jeux

Publié le 7 octobre à 17h10